最近在学习tensorflow,尝试运行学习了github上基于yolov3的一个目标检测项目,此算法可对视频、图片、摄像头实时进行检测,本文主要讲述了,在windows电脑上,复现这一目标检测项目的详细步骤
模型检测效果如下:
1.视频检测输出结果截图
2.图片检测输出结果
本文主要分为以下几个部分:
复现具体步骤如下:
一、文件下载与准备
1.电脑上已安装anaconda,pycharm
此项目基于tensorflow2.0以上版本,以及opencv-python等库
搭建环境可参考此篇文章
tensorflow安装步骤(GPU版本,Anaconda环境下,Windows10)
2.环境搭建完成后,首先将项目从github下载zip,然后解压到电脑上,如下图所示:
源代码地址:https://github.com/zzh8829/yolov3-tf2
Git加速地址:https://gitcode.net/mirrors/zzh8829/yolov3-tf2?utm_source=csdn_github_accelerator
3.右键点击解压后的文件夹,并点击Open Folder as PyCharm Project
打开后界面如下图所示:
我们可以在readme中看到运行程序需要yolov的权重文件(红框所示)
4.yolo官网上给我们提供了已经训练好的weight权重文件,我们可以直接下载到本地(点击右侧橙色的weights即可下载),在这里本文选择下载YOLOv3-608和YOLOv3-tiny,并将其放在yolov3-tf2-master文件夹下的data文件夹中
yolov官网地址
二、将tensorflow导入pycharm
在前面我们已经通过这篇文章tensorflow安装步骤(GPU版本,Anaconda环境下,Windows10)安装了tensorflow
1.在pycharm中选择文件→设置
2.选择Project Interpreter,并选择Add
3.依次选择Conda Environment,Existing environment和右边的目录
4.找到创建好的tensorflow-gpu环境中的python.exe并选中,点击确定
(在anaconda安装目录下的envs文件夹中是创建的环境文件夹,注意不要选择ananconda目录下的python.exe)
5.点击确定
6.选择我们刚刚导入的tensorflow-gpu环境下的编译器,并点击应用,确定
这样我们就成功向pycharm导入了tensorflow
三、应用权重文件
1.打开terminal
2.一般在我们选择好Project Interpreter再打开terminal,就已经进入到了当前环境中去,如果左边括号内不是我们新建的环境,输入下面的命令行进入到tensorflow-gpu环境中去
conda activate tensorflow-gpu
3.yolov3.weights和yolov3-tiny.weights都是yolov官方给出的预先训练好的权重文件。
yolov3.weights是默认的权重,支持识别目标的类别更多更精准。
yolov3-tiny.weights是轻量化的权重文件,精度及范围相对于yolov3.weights较低,但对设备要求较低,响应的速度更快
输入下面的命令,将yolov3.weights权重文件应用到工程
python convert.py --weights ./data/yolov3.weights --output ./checkpoints/yolov3.tf
或者将yolov3-tiny.weights应用到工程中
python convert.py --weights ./data/yolov3-tiny.weights --output ./checkpoints/yolov3-tiny.tf --tiny
如下图所示:
terminal中显示weights saved说明已经成功应用到工程中,同时在左边checkpoints目录下会新添加三个文件(红框所示)
四、目标识别
在terminal运行Detection的命令行即可运行
# yolov3 检测图片的对象
python detect.py --image ./data/street.jpg
# yolov3-tiny
python detect.py --weights ./checkpoints/yolov3-tiny.tf --tiny --image ./data/street.jpg
# webcam 摄像头实时检测对象
python detect_video.py --video 0
# video file 检测视频文件的对象
python detect_video.py --video path_to_file.mp4 --weights ./checkpoints/yolov3-tiny.tf --tiny
# video file with output
python detect_video.py --video path_to_file.mp4 --output ./output.avi
例如我们运行下面的命令行:
python detect.py --image ./data/street.jpg
原图片名称为street,运行后输出在左边目录下,想要识别其他图片,将新图片放在data文件夹下,命令行改名字即可