要训练ssd基本都是在框架下改,生成lmdb这一关照葫芦画瓢总遇坑,记录之:
1. labelmap_voc.prototxt要,比如人脸检测改成这样:
item { name: "none_of_the_above" label: 0 display_name: "background"}item { name: "face" label: 1 display_name: "face"}
这里只有两类:背景、脸,因此训练的时候也要记得num_classes改成2(20分类的voc是21)
2. 路径一定要写对,确认路径写对的情况下如果还是报找不到的错可能是字符问题。
解决方案是在两行sed中间加上一行:
sed -i "s/^/$name\/JPEGImages\//g" $img_file sed -i 's/^M//g' $img_file sed -i "s/$/.jpg/g" $img_file
其中不是键盘直接输入的,是ctrl+v ctrl+M连续输入
3. 默认是jpg格式文件,如果是png,需要改两个地方:
creat_list.sh里:
sed -i "s/$/.jpg/g" $img_file
creat_data.sh
extra_cmd="--encode-type=jpg --encoded"
剩下的可能就是xml格式不对,比如<name>face<name>等处在生成xml时候搞错了;
执行creat_data.sh时经常会报bounding box irregular,不知道对结果有什么影响,能用。
-------------------------------------------------------------------------
faster rcnn给了python脚本处理,在./lib/dataset目录下,所以不用提前生成lmdb,把pascal_voc格式的数据拷贝到./data/VOCdevkit2007目录下即可,参考修改基本上可以满足训练要求。