使用SSD-MobileNet训练模型
因为Android Demo里的模型是已经训练好的,模型保存的label都是固定的,所以我们在使用的时候会发现还有很多东西它识别不出来。那么我们就需要用它来训练我们自己的数据。下面就是使用SSD-MobileNet训练模型的方法。
下载到Github上下载/克隆TensorModels,后面的操作都要在这个目录下执行
下载数据集(数据集应该是自己制作的,制作数据集需要用到一些工具,另外介绍),我们使用VOC2012数据集
下载SSD-MobileNet,我们做得,相当于在这个基础上进行再次训练(retrain)
环境设置
进入下载的Model目录:
cd models/research/
# 执行
protoc object_detection/protos/*.proto --python_out=.
export PYTHONPATH="${PYTHONPATH}:/home/Github/models:/home/Github/models/research/slim/"
这里的PYTHONPATH路径一定要填对,不然会影响到后面运行代码。
然后还要注意代码版本不同文件路径有差别,所以要对照自己目录看好。
继续在research/目录下执行:
# 如果找不到setup.py, 用find命令找对应的路径
python setup.py build
python setup.py install
配置及训练
在object_detection/目录下创建目录ssd_model
mkdir object_detection/ssd_model
把下载好的数据集解压进去,数据集路径为
./object_detection/ssd_model/VOCdevkit/
执行配置文件
python ./object_detection/dataset_tools/create_pascal_tf_record.py --label_map_path=object_detection/data/pascal_label_map.pbtxt --data_dir=object_detection/ssd_model/VOCdevkit/ --year=VOC2012 --set=train --output_path=object_detection/ssd_model/pascal_train.record
python ./object_detection/dataset_tools/create_pascal_tf_record.py --label_map_path=object_detection/data/pascal_label_map.pbtxt --data_dir=object_detection/ssd_model/VOCdevkit/ --year=VOC2012 --set=val --output_path=object_detection/ssd_model/pascal_val.record
然后会在ssd_model/目录下生成pascal_train.record和pascal_val.record两个文件,分别有600M左右。
下一步复制训练pet数据用到的文件,我们在这个基础上修改配置,训练我们的数据
cp object_detection/data/pascal_label_map.pbtxt object_detection/ssd_model/
cp object_detection/samples/configs/ssd_mobilenet_v1_pets.config object_detection/ssd_model/
我们打开pascal_label_map.pbtxt看一下,这个文件里面是类似Json格式的