Tensorflow+OpenCV实战行人检测
实战知识点
- SSD对象检测网络
- VOC2012数据格式
- 模型迁移学习
- 导出PB文件和在OpenCV使用需要的描述文件
- OpenCV DNN模块
各章节重点
- 概述-环境搭建与效果演示:需要安装opencv+python+Tensorflow-gpu+VS+pycharm
- Tensorflow对象检测API安装与测试:通过git工具克隆models到本地,models安装–>Github安装指导,首先安装需要的包,protobuf安装参照教程上linux版。测试时报错
No module named 'object_detection'
,可以直接在环境变量中新增PythonPath变量,包含research和research/slim两个文件夹路径(教程中是用的.pth添加路径)。直到能执行测试程序python .../models/research/object_detection/builders/model_builder_test.py
- 行人检测视频数据生成标注图像数据:使用公开数据制作训练数据。通过cv2.VideoCapture读取视频,cv2.CAP_PROP_FRAME_COUNT表示视频的总帧数,按帧resize缩小后保存为训练图片和测试图片。
- Pasacal VOC2012格式数据集生成:根据标记数据生成xmls,移动到VOC2012/Annotations文件夹下。训练图片移动到VOC2012/JPEGImages文件夹下。生成pedestrian_train.txt文件并移动到VOC2012/ImageSets/Main文件夹下。数据准备完成。新建label_map.pbtxt文件移动到train/data文件夹下。生成tfrecord格式用于训练,
python object_detection/dataset_tools/create_pascal_tf_record.py --label_map_path=D:\Project\Pycharm\pedestrian_demo/train/data/label_map.pbtxt --data_dir=D:\Project\Pycharm\pedestrian_demo\dataset --year=VOC2012 --set=train --output_path=D:\Project\Pycharm\pedestrian_demo/train/data/pascal_train.record
。注意修改create_pascal_tf_record.py中第165行为前面生成的pedestrian_train.txt。训练数据准备完成。 - SSD模型的迁移学习配置与训练:下载模型,…/models/research/object_detection/samples/configs/文件夹下拷贝对应.config到train/models文件夹下并修改PATH_TO_BE_CONFIGURED。执行命令
可是未成功,未知原因。第六节说是1.11前的版本就没事,是模块本身的Bug - 模型导出与测试使用:使用如下命令开始训练
python object_detection/legacy/train.py --train=D:\Project\Pycharm\pedestrian_demo/train/models/train --pipeline_config_path=D:\Project\Pycharm\pedestrian_demo/train/models/ssd_mobilenet_v2_coco.config --logtostderr
,到合适轮数后Ctrl+C手动停止。
模型导出命令python object_detection/export_inference_graph.py --input_type=image_tensor --pipeline_config_path=D:\Project\Pycharm\pedestrian_demo/train/models/ssd_mobilenet_v2_coco.config --trained_checkpoint_prefix=D:\Project\Pycharm\pedestrian_demo/train/models/train/model.ckpt-2673 --output_directory=D:\Project\Pycharm\pedestrian_demo/train/models/model
- 生成OpenCV DNN导入必须的描述文件:
- 在OpenCV Python中使用SSD行人检测模型
- 在OpenCV C++中使用SSD行人检测模型