win10+yolov3+tensorflow2.0下的目标检测

一、安装pycharm

二、安装anaconda

三、anaconda下安装tensorflow-cpu

1.添加一个虚拟环境tensorflow

打开anaconda navigator,点击environments,然后点击creat新建一个虚拟环境,新环境命名为tensorflow,python版本选择python3.6(python版本太高会找不到匹配的tensorflow版本)。
win10+yolov3+tensorflow2.0下的目标检测_第1张图片

2.安装tensorflow2.0版本

打开anaconda prompt,输入指令进入tensorflow虚拟环境。

conda activate tensorflow

输入指令安装tensorflow2.0的cpu版本。

pip install tensorflow==2.0.0

会出现错误,表示找不到匹配的版本,可以安装的tensorflow中没有2.0.0版本,在错误提示列出的版本中选一个进行安装。

pip install tensorflow==2.2.0

安装成功!

四、下载github上目标检测的源代码

下载地址:tf2-keras-yolo3
具体参考文章:https://blog.csdn.net/aaronjny/article/details/103658254

五、调试代码

在根据readme文件运行代码时遇到一些错误,下面给出具体调试步骤。

1.下载预训练好的权重文件

点击下载链接:yolov3.weights
下载的文件保存到tf2-keras-yolo3-master文件夹内,与yolo3文件夹并列的位置。

2.运行convert.py

通过convert.py脚本构建模型,并将权重转成Keras版本的。
进入D:\tf2-keras-yolo3-master\tf2-keras-yolo3-master目录下,打开终端,输入指令。

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

这里会出现错误,多次运行上述指令提示缺少几种模块,需要安装pillow、matplotlib,输入指令进行安装。

pip install pillow
pip install matplotlib

也会出现以下错误:

ImportError: numpy.core.multiarray failed to import

原因:numpy版本出问题了,与tensorflow不兼容。
解决办法:
(1)输入指令卸载所有安装的版本

pip uninstall numpy

(2)输入指令查看已经安装的numpy版本

pip show numpy

(3)发现还有1.16.4的版本,卸载该版本

pip uninstall numpy==1.16.4

(4) 再次输入指令查看是否还有numpy模块,发现找不到numpy模块表示已经卸载完成。安装与tensorflow匹配的numpy版本。

conda install numpy

安装完成后再次运行上述指令运行文件,等待转换成功。

3.进行检测

(1)运行yolo_video.py文件遇到的问题

AttributeError: ‘str’ object has no attribute ‘decode’

需要对D:\Anaconda3\envs\tensorflow\Lib\site-packages\tensorflow_core\python\keras\saving目录下的hdf5_format.py文件进行修改。
解决方法:运行该文件,对出错的位置,在所有的decode(‘utf8’)前面加上encode(‘utf8’).变成xx.encode(‘utf8’).decode(‘utf8’),问题解决。

(2)检测图片中的物体

下载一个图片命名为demo.jpg,放入D:\tf2-keras-yolo3-master\tf2-keras-yolo3-master目录下,输入指令运行yolo_video.py文件,检测图片。

python yolo_video.py --image

终端会提示你输入图片名称,输入

demo.jpg

会形成一个加上了标记框的新图片。

(3)检测视频中的物体

下载一个视频命名为video.mp4,放入D:\tf2-keras-yolo3-master\tf2-keras-yolo3-master目录下,输入指令运行yolo_video.py文件,检测视频。

python yolo_video.py --input video.mp4

会对视频逐帧进行识别和输出,形成一个加上了标记框的新视频。

你可能感兴趣的:(目标检测,tensorflow,keras)