本文共 1567 字,大约阅读时间需要 5 分钟。
BBox-Label-Tool工具支持多类别标注,生成的label文件中增加了类别名称信息。以下是详细的标注和数据转换步骤:
数据的标注使用Python实现,支持多label标签标注。修改后的工具生成的标签格式为:
object_number className x1min y1min x1max y1max classname x2min y2min x2max y2max ...
BBox-Label-Tool工具实现较为简单,原始版本使用起来有一些小问题,经过修改后,工具更加稳定,支持多类别标注。具体修改内容包括:
Caffe训练使用LMDB格式的数据,SSD框架中提供了VOC数据格式转换成LMDB格式的脚本。实践中先将BBox-Label-Tool标注的数据转换成VOC数据格式,然后再转换成LMDB格式。
VOC数据格式的注释文件保存为XML格式,包含以下信息:
<annotation>标签下包含图片的基本信息<object>标签下包含物体的类别信息<bndbox>标签下包含物体的边界框坐标BBox-Label-Tool工具标注好的bounding box坐标文件转换成VOC数据格式的形式,具体转换步骤包括:
SSD提供了VOC数据到LMDB数据的转换脚本create_list.sh和create_data.sh,这些脚本是完全针对VOC0712目录下的数据进行的转换。为了适应我们自己的数据集,修改了上述脚本,将VOC0712替换成indoor。
训练时使用SSD Demo中提供的预训练好的VGG Net模型,将该模型保存到$CAFFE_ROOT/models/VGGNet下。将ssd_pascal.py复制一份ssd_pascal_indoor.py文件,根据自己的数据集修改ssd_pascal_indoor.py,主要修改点包括:
train_data和test_data修改成指向自己的数据集LMDBnum_test_image修改成自己数据集中测试数据的数量num_classes修改成自己数据集中标签类别数量运行训练命令:
python examples/ssd/ssd_pascal_indoor.py
测试SSD框架中提供了C++版本和Python版本的测试工具。C++版本的测试命令如下:
./build_release/examples/ssd/ssd_detect.bin
Python版本的测试过程参见examples/detection.ipynb教程文件。
为适应自己的数据集,修改了以下脚本:
create_list_indoor.sh和create_data_indoor.sh:将脚本中涉及到VOC0712的信息替换成indoor。labelmap_indoor.prototxt:将该文件中的类别修改成和自己的数据集相匹配,保留一个label 0(background类别)。训练完成后,可以在$CAFFE_ROOT/indoor目录下查看转换完成的LMDB数据。
以上就是完整的标注、数据转换和SSD训练测试流程。
转载地址:http://jnik.baihongyu.com/