搭建基于Keras的yolo3
教程参考:
windows10+keras下的yolov3的快速使用及自己数据集的训练
本机情况:
系统:Win10 家庭中文版
CPU:i5-8300 8核 8G内存
GPU:GTX 1060 6G独显
注意事项
git拉取项目后,第一步看下项目的READ.md:
这个在上面教程中并没有说,一定要指定版本,我是使用conda构建python环境:
conda create -n yolo_cpu python=3.5.2
conda activate yolo_cpu
升级pip,改为国内镜像,然后使用pip而不是conda安装包(更全)
python -m pip install tensorflow==1.6.0
注意,这里“tensorflow”默认安装的是cpu版本的tensorflow,gpu版本的包名是tensorflow_gpu
python -m pip install Keras==2.1.5
这里需要释疑 —— tensorflow下有Keras包,而使用pip安装Keras时,又也可以看到需要下载tensorflow,好像造成了冗余,让人困惑。这里不必担心,因为二者本身就是A依赖B,B依赖A的关系。tensorflow里的keras和单独的Keras包不是一个东西,没有用到。Keras的tensorflow也没有使用到,真正调用的是用户目录下.Keras设置的backend指定的tensorflow,所以如上面操作即可。
接下来安装各个文件中提示没有找到的包 —— utils.py中的PIL,matplotlib。
python -m pip install matplotlib
注意,PIL不能直接python -m pip install PIL,应该改为:
python -m pip install pillow
单独安装PIL的wheel也不是不可以,但是太麻烦了。不推荐。
注意,以上两个不用指定版本
ImportError: Could not find ‘cudart64_90.dll’
直接运行train.py会报错:ImportError: Could not find 'cudart64_90.dll’
原因在于train.py支持gpu训练,不管你安装的是tensorflow还是tensorflow_gpu,代码都将检查系统的显卡驱动有没有成功安装,即cuda。
对于自己电脑的支持的cuda版本,可见:
控制面板 —— NVIDIA控制面板 —— 帮助 —— 系统信息 —— 组件:
报错信息明确要求cuda 9.0,但是这里显示驱动为CUDA 10.2.120,影响不?
经实测,不影响。
接下来安装cuda 9.0:
https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
一路next,命令行nvcc -V验证:
PS:
网络教程很多要设置环境变量,那是为了vs里面的,此处我们不用设置。
ImportError:Could not find ‘cudnn64_7.dll’
再次
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
报错:
- 找不到cudnn
- cuDNN和安装CUDA是两回事
- 请下载cuDNN 7
去cuDNN官方地址下载,不过这回要注册用户:
join now,注册用户
去这里下载:
下载,解压,三个文件分别放入cuda对应文件夹(其实就是手动给cuda安装cuDNN模块):
- 把cuda\bin\cudnn64_7.dll复制到 C:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v9.0\bin 目录下.
- 把\cuda\ include\cudnn.h复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include 目录下.
- 把\cuda\lib\x64\cudnn.lib复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64 目录下.
运行:
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
结果:
又报错:ImportError: save_model
requires h5py
那不就安装呗:
python -m pip install --upgrade h5py
运行:
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
成功!!!
看下目录,成功生成yolo.h5:
接下来:
这是错误的,没结果:
用这个:python yolo_video.py --image,然后提示:
输入文件路径即可得到结果: