要训练ssd基本都是在liu wei框架下改,生成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  

其中^M不是键盘直接输入的,是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目录下即可,参考这里修改基本上可以满足训练要求。