安装ObjectDetection,CPU和GPU都需要
解压module.rar放到C:\TFWS\models目录
地址:https://github.com/tensorflow/models
解压protoc-3.6.1-win32.zip,将\bin\protoc.exe复制到C:\Windows\System32下。
地址:https://github.com/protocolbuffers/protobuf/releases
编译proto文件,需要在power shell下执行。C:\TFWS\models\research目录下(最前面时PS命令的都在power shell下执行)
cd C:\TFWS\models\research
Get-ChildItem object_detection/protos/*.proto | Resolve-Path -Relative | %{ protoc $_ --python_out=. }
准备slim库,删除BUILD文件如果有的话,否则以下会报错。
cd C:\TFWS\models\research\slim
del BUILD
进入虚拟机环境venv。分别执行以下命令。
cd C:\TFWS\models\research\slim
python setup.py build
python setup.py install
安装,执行以下命令。(会下载一些依赖,时间可能很长,连接超时可以重新执行)
cd C:\TFWS\models\research
python setup.py build
python setup.py install
安装开发所需组件。(venv中)
pip install numpy
pip install opencv-python
pip install matplotlib
pip install jupyter
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
pip install Pillow
pip install Cython
制作图片训练集
安装windows版本的labelImg_v1.8.1.rar
https://github.com/tzutalin/labelImg
1.准备数据(一旦使用lableimg生成xml后,请勿更改图片路径)
分析代码结构:(可跳过)
C:\TFWS\models\research\object_detection\object_detection_tutorial.ipynb
GitHub官网给出的各种模型:
人工lableimg标注图片(越多越好)
Lableimg下载:https://github.com/tzutalin/labelImg
使用方法:
Open dir 打开图片目录;
Change save dir更改xml存储路径;
Create react box 标注矩形框;快捷键 W
Ctrl+S 保存
可以设置默认lable:user the default lable
下一张图片:D
上一张图片:A
2.生成TFRecord,xml to csv ,csv to tfrecord。
c:\TFWS\VENVCPU\Scripts\activate
cd C:\TFWS\models\research\object_detection
注意:更改xml_to_csv和csv_to_tfrecord里面的相关路径(指的是:Lableimg圈出来的图片以及生成的xml)以及tfrecord中的lable。
python do_xml_to_csv_train.py
python do_xml_to_csv_test.py
生成tfrecord:(注意路径)
python do_generate_tfrecord.py --csv_input=do_data/pictrain/do_train_labels.csv --output_path=do_data/pictrain/do_train.record --image_path=do_data/pictrain
python do_generate_tfrecord.py --csv_input=do_data/pictest/do_test_labels.csv --output_path=do_data/pictest/do_test.record --image_path=do_data/pictest
3.修改配置文件
下载地址:ssd_mobilenet_v1_coco.config
修改:
PATH_TO_BE_CONFIGURED改为自己的路径;
更改num_classes;
更改batch_size:1;或者更大(会影响训练效果,越大效果越稳定,但时间更久)
建议注释一下两行:
#fine_tune_checkpoint: "C:\\TFWS\\models\\research\\object_detection\\do_data\\training\\model.ckpt"
#from_detection_checkpoint: true
更改完成后在training目录下创建:do_label_map_pbtxt文件,写标签配置,例如:两个标签对应num classes应该为2
item {
id: 1
name: 'keyboard'
}
item {
id: 2
name: 'mouse'
}
4.开始训练。(venv中,重复测试请删除其他文件 除了do_label_map_pbtxt和ssd_mobilenet_v1_coco.config文件)
cd C:\TFWS\models\research\object_detection\legacy
python train.py --logtostderr --train_dir=C:\TFWS\models\research\object_detection\do_data\training --pipeline_config_path=C:\TFWS\models\research\object_detection\do_data\training\ssd_mobilenet_v1_coco.config
中途打断可以继续输入上述命令,会从上次的checkpoint继续执行。
5.导出模型(重复导出请删除result内全部内容)。
cd C:\TFWS\models\research\object_detection
python export_inference_graph.py \ --input_type image_tensor \ --pipeline_config_path do_data\training\ssd_mobilenet_v1_coco.config \ --trained_checkpoint_prefix do_data\training\model.ckpt-500 \ --output_directory do_data\result
6.测试模型。
更改testpb.py里面的路径相关参数。
cd C:\TFWS\models\research\object_detection
python testpb.py # 该文件测试模型并且输出到img标注。需要注意目录结构。在do_data文件夹下新建img文件夹,测试图片放入。可能需要更改Num_classes.