基于Tensorflow的视频目标检测API实现

最近在看如何实现视频中道路目标的检测的相关博文,过程遇坑,简单总结。原文在此

测试环境:Win10、TF-CPU、Opencv、Anaconda

一、Anaconda下Tensorflow安装

由于仅做测试,不用训练,简装CPU版本,Anaconda官网下载即可,打开cmd:

pip install --opgrade tensorflow

等待片刻后,打开spyder编辑器,新建文件下复制以下内容

import tensorflow as tf
hello = tf.constant("Hello, Tensorflow")
sess = tf.Session()
print(sess.run(hello))

弹出 “Hello, Tensorflow”则安装成功。

二、Protoc安装

什么是Protoc?Protoc是用来编译.Proto文件,Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python等三种编程语言
原作者推荐的网址中包含了最新版的压缩包和老版本的压缩包,我使用了最新的压缩包报错,返回老版本就可以了


三、Git安装

git +网址是目前主流的在线下载指令,在官网找到Windows下载安装

四、安装其他

pip install pillow

pip install lxml
原博主还增加了别的安装,我觉得没必要,好像结果也没有影响

五、下载模型并编译

开cmd输入

git clone http://github/tensorflow/models.git

下载好后会放在用户下的models文件夹内,然后再是编译

protoc object_detection/protos/*.proto --python_out=. #*.proto表示一次编译该文件夹下所有的.porto文件 

打开ipynb文件,可以看到浏览器下的python代码。先转到绝对路径到object_detection文件夹,再cmd运行:

jupyter-notebook

打开object_detection_tutorial.ipynb,可以直接Run all cell运行测试。

结果略,原博主写的很详细,这里主要讲

1.若是要测试自己的图片记得在文件夹路径指明

2.测试图片数量也可以做相应修改,在路径下一行

3.有多种模型可以供选择,可以自己选择一种,供修改名称如下

MODEL_NAME = 'ssd_inception_v2_coco_11_06_2017'

MODEL_NAME = 'rfcn_resnet101_coco_11_06_2017'

MODEL_NAME = 'faster_rcnn_resnet101_coco_11_06_2017'

MODEL_NAME = 'faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017'

六、运行视频目标检测

终于讲到了最关键的一步了

1.现在准备视频检测下的环境配置,安装opencv,我的上篇博客里提到过,这里略。

2.添加视频识别代码,此处由于原博主写的很详细,我不在赘述,这是网址

注意:代码有些地方值得优化,例如

imageio.plugins.ffmpeg.download()

          此处表示下载ffmpeg.exe视频处理软件,下载一次就够,所以运行成功一次后可屏蔽此处

from moviepy.editor import *
clip1 = VideoFileClip("video1_out.mp4")
clip1.write_gif("final.gif")

           最后一段代码是指将输出检测结果的mp4文件转化为gif,没有必要,可以删除

clip1 = VideoFileClip("video1.mp4").subclip(25,30)

           代表指定的文件,以及裁剪该文件中第xx秒到xx秒的视频图像来处理

演示就讲到这,接下来讨论下实现原博主博客中遇到的bug

七、BUG分析

运行

protoc object_detection/protos/*.proto --python_out=. #*.proto表示一次编译该文件夹下所有的.porto文件 

出现No such file or directory的报错,但文件夹下有该目录,查阅资料后发现protoc3.5不稳定,改换3.4即可

运行视频检测时出现

ImportError: No module named 'moviepy'

好像moviepy库并没有在Anaconda中,但是作者并没有提到这一点,感觉比较奇怪,还是默默掏出了

pip install moviepy

结果竟然报错,且好像还跟Anaconda有关,我顿时无语凝噎,后来我找到了这个博客的解决方案,主要就是我的Anaconda下有很多包需要更新,pip也要更新到新版本,我按照提示将能更的都更新了一遍,然后在安装的时候就没有报错了。

3  最后一个问题出现在重复运行代码时会有这个

OSError: [WinError 6] 句柄无效。

由于对python的问题还不够了解,我的解决方法是关闭jupyter-notebook后重新在cmd中打开,就可以再次运行了,问了下师兄好像是因为这个代码没有设置返回值,以后慢慢摸索吧,然后小问题就没有po上来了,暂时就这样,图片的检测结果如下

视频的检测结果可供下载参考  https://download.csdn.net/download/along1617188/10325180

谢谢指点!

八、相关参考

1、https://blog.csdn.net/xiaoxiao123jun/article/details/76605928(转自此文)













  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值