当前仓库属于关闭状态,部分功能使用受限,详情请查阅 仓库状态说明
3 Star 4 Fork 4

风酒 / YOLO_v1_tensorflow
关闭

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.82 KB
一键复制 编辑 原始数据 按行查看 历史
风酒 提交于 2019-09-18 06:32 . change link

项目地址:https://gitee.com/windandwine/YOLO_v1_tensorflow 转载请注明出处

一、项目介绍

1. 介绍

采用tensorflow(python)实现 YOLO v1目标检测算法,可对图片,包含图片的文件夹、摄像头和视频进行对如下20个类物体的检测。

{"aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"}
     

输入图片说明

输入图片说明

2.使用说明

在项目下yolo.py文件中,main方法含有四种检测方式,注释掉其他三种即可。

if __name__ == '__main__':
    yolo = Yolo()
    # 图片检测
    yolo.image_detector('test/sample/person.jpg', 'test/result/person.jpg', 'test/result/person.txt')
    # 多图检测
    # yolo.multi_img_detector('test/sample', 'test/result')
    # # 摄像头检测
    # yolo.camera_detector('test/result/camera.mp4')
    # # 视频检测
    # yolo.vedio_detector('test/sample/india_street.mp4', 'test/result/india_street.mp4')

其中除camera_detector只有保存文件一个参数,其他三个方法都需要加载文件保存文件两个参数。

3.权重文件

如果你要下载百度网盘的权重,请点击这里这里,密码1y19

如果你要下载谷歌云的权重,请点击这里这里

4.文献地址

如果你要查看论文,请点击这里

二、YOLO v1

1.候选区域

1.1置信度

输入图片说明

YOLO将图片分成S×S的网格,每个单元格检测中心点在该网格的目标,每个单元格会生成B个以其为中心的锚点框(anchor box),anchor box有四个参数(x,y,w,h),分别是中心坐标和宽高,每个anchor box有一个置信度(confidence score),某个anchor box的置信度如下 $$ \color{red}{C=P(Object)\times IoU} $$ 第1项为框内含有目标的概率,记为P(object),包含目标时P(object)=1,没有目标(背景)时P(object)=0。

第2项为候选框的准确度,用anchor box和ground truth(实际框)的**交并比(IoU)**来表示。

1.2交并比

$$ \color{red}{IoU(R,R')=\frac{R\cap R'}{R\cup R'}} $$

IoU

1.3坐标系

左上角为原点(0, 0),坐标数值如下图。anchor box参数x,y的单位是一个网格的长度宽度而不是像素,w,h为相对原图的大小,取值[0,1]。

最终输出包含5个元素[x,y,w,h,C]。

输入图片说明

2.分类

2.1概率

任务需要预测n种的物体。每个单元的anchor box内存在目标时,是某个类别($class_i$)的条件概率为$P(class_i|Object)$。不管一个单元格预测了多少个anchor boxes,只输出一组类别概率。 $$ \left[\begin{array}{c} P(class_1|Object)\\ P(class_2|Object)\\ \vdots\\ P(class_n|Object)\\ \end{array}\right] $$

2.2参数个数

每个单元格需要输出 B×5+n个参数,总体需要输出S²×(B×5+C)大小的张量。

对于PASAL VOC数据,共有20个类别(n=20),将图片分割成7×7(S=7),如果每个单元格预测2个anchor box(B=2),最终的张量大小为 $$ 7\times 7 \times30 (2\times5+20)=7\times 7 \times30 $$ 输入图片说明

3.损失函数

输入图片说明

4.网络

4.1特征提取网络

特征提取网络参考GoogleNet模型,包含24个卷积层和2个全连接层,采用Leaky ReLU作为激活函数,最后一层为线性激活。(也可以替换为VGG-16,代码里就是VGG16)。

输入图片说明

4.2训练网络

输入图片说明

最后输出7×7×30的张量,一个点的深度为30,如下

输入图片说明

4.3筛选候选框

使用非极大值抑制。

Python
1
https://gitee.com/windandwine/YOLO_v1_tensorflow.git
git@gitee.com:windandwine/YOLO_v1_tensorflow.git
windandwine
YOLO_v1_tensorflow
YOLO_v1_tensorflow
master

搜索帮助