Py-faster-rcnn配置模型开发环境
1. 将视频截取为图像
由于深度学习物体识别项目中的一个主要资料来源是拍摄视频,而深度学习框架一般只能对图片数据进行学习,因此有必要使用一些工具将视频资料按照一定帧率提取为图像。
将视频转换成图像的工具很多,这里仅介绍可以在Linux环境下使用的工具。
1.1 视频转换工具
由于mp4格式文件无法被opencv读取,因此要使用软件将mp4转换成avi文件。
可以使用ffmpeg这一工具转换:
首先是安装
$ sudo apt-get install ffmpeg
然后是路径引导至要转换的视频,例如测试视频文件为test.mp4
$ ffmpeg -i test.mp4 -vcodec copy test.avi
就可以将mp4文件转换为avi,放在同一路径下。
1.2 视频按帧提取为图片
可以使用opecv的python接口实现帧提取,可以参考这个教程。
这里需要安装python-opencv,如果已经配置过秸秆焚烧工程开发环境则可以直接使用,具体方法可以参考《深度学习工作环境搭建教程》。
这里推荐一个文本编辑器:Sublime Text
安装方法是 开始->Software Manager->搜索Sublime
然后建一个video2image.py文件:
import cv2
vc = cv2.VideoCapture('Test.avi') # 这里决定了读取文件的路径
c = 1
if vc.isOpened():
rval, frame = vc.read()
else:
rval = False
timeF = 10 # 这里决定了提取的帧率
while rval:
rval, frame = vc.read()
if(c%timeF == 0):
cv2.imwrite('image/' + str(c) + 'jpg', frame)
c = c + 1
cv2.waitKey(1)
vc.release()
然后在脚本文件下:
$ mkdir image
执行脚本:
$ python video2image.py
就产生了很多jpg图片(PASCAL VOC 必须使用jpg文件)
2. 图像标注-制作PASCAL VOC数据集
这里介绍了工具labelImg。
具体操作方法里面已经说明地很详细了,最后是要产生与图片对应的xml文件,然后制作数据集。
在标注数据集之前,务必先批量修改文件名为VOC2007的格式
4. 制作PASCAL VOC数据集
将图片标注完以后,要建立两个文件夹:1.放置图片的文件夹;2.放置xml文件的文件夹。两个文件夹里的文件名称必须完全一致,并且里面的标签内容也要完全一致(否则监督标签就出错了,训练出来的模型也就没有意义)
[具体的教程请参考这篇文章:VOC2007数据集制作 - Eddy的博客 - 博客频道 - CSDN](./data/VOC2007数据集制作 - Eddy的博客 - 博客频道 - CSDN.pdf)
最后你会制作三个文件:JPEGImages, Annatations, ImageSets
5. py-faster-rcnn训练一个模型并测试
如果遇到报错:
Loaded network /home/ubuntu/py-faster-rcnn/data/faster_rcnn_models/VGG16_faster_rcnn_final.caffemodel
F0317 21:26:39.516222 13403 syncedmem.cpp:56] Check failed: error == cudaSuccess (2 vs. 0) out of memory
原理就是降低BATCH_SIZE对显存的消耗。
6. 将模型与工程合并
将输出的ZF_faster_rcnn_Final.caffemodel和faster_rcnn_test.pt拷贝出来,然后使用工程读取,再修改mainwindow.cpp中关于caffeNet的调用函数参数,就可以了。