keras-yolov3目标检测详解——适合新手

展开
现在网上能找到的博客我现在看起来很明白,虽然讲的很详细,但是对于几天前的我真的看不明白,因为新手会遇到各种各样毫无征兆的问题,所以我决定写一篇面向新手的如何去使用 yolo 和如何去做自己的数据集来训练属于自己的模型。因为我也是新手,所以不说原理,只谈操作方法。
因为东西很杂,我会把小东西分出去写,并且在本文中附上链接。
一、准备工作

1、事件前言:

简单介绍下情况,本人本科二年级,机器学习小白,操作系统:windows10

前阵子用 matlab 做图像识别项目时发现了 yolov3 算法,觉得很有意思,但是无奈当时还没有基于matlab 的版本(听说现在有了),所以就用 python 运行,我的电脑里有 python_3.7、anaconda_3.6、pycharm。

有心人应该可以发现我大概几天前的博客都是在凌晨一点发的,当时几乎每天都弄到凌晨三点多去配置环境(新手运行报错的原因几乎都是版本的兼容性问题)。

不过经过三天左右的时间,我解决了无穷多的报错之后,终于把 yolo 在 anaconda 和 pycharm 中成功运行,而且在昨晚 10:30分 成功训练出了自己标注的数据集的模型。

所以在接下来的几天,我会站在新手的层面上解释我使用 yolo 的过程。

2、需要的文件:

1、yolov3源代码:github_keras-yolo3

2、权重文件:官网_yolov3.weights (点击直接下载)或者 我的百度网盘文件 链接:

https://pan.baidu.com/s/1YD5dtSrEkcBO0PRHO7eLlw 
提取码:1uub 


3、python 或 anaconda 或 pycharm
注意:版本需要在3.7以下,3.7版本不支持 tensflow 的库

3、python的环境配置:

很多的库之间都会存在兼容性问题,如果你运行中出现的报错不常见,或者一个错误接着一个错误,那么八成是配置的库存在兼容性问题,把库的版本换了就行
下面介绍一下重要的需要配置的库的版本:

库名称  版本
tensorflow-gpu  2.1.0
keras  2.2.4
tensorflow (可有可无) 1.12.0
Pillow 5.1.0
matplotlib   2.2.2
ffmpeg   1.4
opencv  opencv-contrib-python

  
建议使用镜像源下载,下载的方法可以参照我的这篇博文:

anaconda 配置 yolov3 环境(该文章中的版本也可以,但是最好换成我上面表格中写的)

大家也可以看下我的 python 的各个库的配置:python绝对兼容的库配置——机器学习
(建议大家保留一份,万一哪天不小心改了一个库的版本,很可能就会导致一系列的问题,这里的版本不存在兼容性问题)
.
.

二、正式开始yolo之旅

1、用官方权重识别图像

接下来先教大家去用官方的权重文件 yolov3.weights 去识别图像

先用 pycharm 或 spyder 打开 keras-yolo3 文件夹,用 pycharm 或 spyder 是为了看文件夹更方便,直接在 anaconda 里运行也是可以的

这里用 pycharm 先演示一下:

在这里插入图片描述

打开文件后是这样的。

1、我们将下载的 yolov3.weights 文件放在 keras-yolo3-master 文件夹下:

在这里插入图片描述

2、把 yolov3.weights 文件转换成 keras 适用的 h5 文件

首先点击左下方的 Terminal (和IDLE一个功能,就是命令行)

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

在这里插入图片描述

在这里插入图片描述

等待一会。。。直到命令行显示 Saved Keras model to model_data/yolo.h5

就可以看到文件夹的 model_data 中多了个 yolo.h5 文件

在这里插入图片描述

3、在文件夹下添加一个启动 yolo 函数的代码

在文件夹下新建一个py文件,我取名为 yolostart.py ,代码如下:

from yolo3.model import yolo_body
from keras.layers import Input
from yolo import YOLO
from PIL import Image

yolo = YOLO()

while True:
    img = input('Input imagename:')
    try:
        image = Image.open(img)
    except:
        print('Open Error!')
        continue
    else:
        rel_image = yolo.detect_image(image)
        rel_image.show()
yolo.close_session()


 

在这里插入图片描述

4、在文件夹下新建名为 img 的文件夹,里面放想要进行识别的图片

在这里插入图片描述

5、运行 yolostart.py

运行 yolostart.py 文件

提示:Input imagename:

在这里插入图片描述

现在输入想要识别的图片的文件路径,这里我输入 img/q.jpg(识别 img 文件夹下名为 q 的 jpg 格式的图片)

在这里插入图片描述

在这里插入图片描述

成功识别出图上人物

现在运行人数较多的图片试一下:

在这里插入图片描述
2、训练自己的数据集模型

time:3/22
这篇先发,我学校的作业还没写,
我先把作业写了,再回来补下面的东西
。。。
见谅
Time:2020/3/23/22:19
我回来啦:

介于训练自己的数据集模型比这篇文章的两倍还要长,我就将它化为一篇文章来写了,很详细,均是我刚刚亲自一步步操作的,有任何问题均可以提出

你可能感兴趣的:(tensorflow,深度学习,opencv2)