Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】

本次记录在Ubuntu系统上尝试完成Keras版本YOLO V3复现及踩坑超详细过程,期间参考了很多博主的文章,在这一如既往地对他们表示我由衷的感谢。另外,本人小小白一个,文中若有错误还望各位不吝赐教!

【写在前面】
拖了很久,原因是TeamViewer突然连不上服务器了,今天提醒我被商业化了,如果你和我一样不幸,参考帖子:
TeamViewer检测为商用小tips,亲测有效

ok ,开始这次的任务~~~

1 配置环境

1.1 创建环境安装必备软件

Keras版本的Yolo v3的环境是python 3.5.3+Keras 2.1.5+tensorflow 1.6.0

conda create -n py352 python=3.5.2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Keras==2.1.5
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==1.6.0

(小tips:加版本号时,“==”前不要有空格)

1.2 检查电脑配置

主要看符不符合要求~~(这一步熟悉自己电脑的可以略过)~~

一、查看 CUDA 版本:

cat /usr/local/cuda/version.txt

我的是CUDA Version 10.1.168

二、查看GPU型号

lspci | grep -i nvidia

Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第1张图片
看不懂截个图备用吧先啊哈哈哈哈

三、查看NVIDIA驱动版本

sudo dpkg --list | grep nvidia-*

Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第2张图片
同上~

OK,查询工作结束,正式开始下载安装darknet并配置环境

2 yolo v3复现

2.1 原生版:依赖darknet

根据这个提示下载配置Darknet:

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

编译后有一堆信息显示,然后尝试运行它!

./darknet

若得到以下输出表示成功。


usage: ./darknet 

更改Makefile文件:(可选,根据情况来)

GPU=1
OpenCV=1

如果安装了CUDNN:

CUDNN=1
NVCC=/usr/local/cuda/bin/nvcc

…………………………分割线……………………………………
那么问题来了~~~
服务器可用GPU,也安装了CUDNN,但如何修改Makefile文件里的参数呢?!
小白如我,简直把csdn和网络翻了个遍!1h+过去了,修改了n多次就是保存不了……绝望.jpg

不能放弃,办法总是有的,解决方法见这里【如何在Makefile文件里修改参数并保存】

为方便直接简写在此:

首先cd进到文件所属的文件夹下,然后:

vim Makefile

打开会有这么个界面后输入e
进到文件里
然后按i,进入到编辑模式
编辑完毕后,按Esc退出编辑模式
再输入:wq!强制保存退出

然后你就会发现,改掉并保存成功!

……………………………分割线……………………………………

下载权重文件

wget https://pjreddie.com/media/files/yolov3.weights

but!248m,下载得太太太慢了惹不说,失败无数次了惹了吧!

然后一搜索看到了这位好心大大的分享惹:
关于yolov3.weights文件下载地址的分享

下载好权重文件后,根据使用GPU与否修改Makefile文件后简单测试:(cd到darknet文件夹下)

make
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第3张图片
结果我的是这样的:

Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第4张图片

失败原因?我还在找啊哈哈哈哈……
也许是OpenCV安装失败?用anaconda包管理安装的不行之类的?路径没添加上?……

没事,只是darknet测试失败而已,YOLO V3还没开始呢

2.2 keras版:下载yolo v3文件

在这里下载文件【我直接网页download了】

将上面下载好的权重文件yolo3weights文件放到keras-yolo3-master文件夹里:

 cd keras-yolo3-master

生成现在权重下h5文件:

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

进行快速测试:

python3 yolo_video.py --image

之后让你输入图片路径:

(注意!!!:若将图片放在keras-yolo3-master文件夹下,直接输入图片名字,但注意后缀的jpg也要带上)
Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第5张图片

2.2.3 keras版所遇问题汇总

这部分遇到一系列问题较多,因此单独拿出来做记录

错误1:在生成现在权重下h5文件时报错

ImportError: numpy.core.multiarray failed to import

查询后得知可能原因是:numpy版本出问题了,与tensorflow不兼容就将numpy卸载了,然后再用pip show numpy 查询,查到就将其删掉Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第6张图片
最后安装了1.16.4版本的numpy:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy==1.16.4

错误2:重新安装1.16.4版本的numpy再次尝试生成现在权重下h5文件时报错

TypeError: ‘NoneType’ object is not callable

查询后有个博主说

在网络程序or主程序前最开始加上这句话:

backend.clear_session()

其中,backend需要导入, from keras import backend

然后我分不清楚哪个是主程序,先在convert.py文件里加了backend.clear_session()这个报错表示没有backend,继而又删掉且把from keras import backend加在了前面。

错误3:继上述修改后又报错

ImportError: save_model requires h5py

查到了解决方法:

pip install --upgrade h5py

然后再重新生成h5文件成功:
Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第7张图片

错误4:继续下一步,输入python3 yolo_video.py --image进行快速测试时报错

ImportError: No module named ‘PIL’

然后又同样出现了类似的问题,就是matplotlib问题,安装即可:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow matplotlib

测试输入

python3 yolo_video.py --image

会提醒你输入图片名字(要将图片放置在keras-yolo3-master)
Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第8张图片
然后是我别的地方找的一组对比图:
Keras版本YOLO V3复现及踩坑超详细过程【Ubuntu】_第9张图片
【这里有问题记录在此:为什么小孩和床前后无变化但检测到的结果却有变化呢?】

总算是成功了,下一步,尝试训练自己的数据集!
(要赶快做人脸测试了啊啊啊,人工智能作业嗷嗷待哺ing!)

你可能感兴趣的:(图像处理,Linux)