全文共3866字,预计学习时长20分钟或更长

本文将详细分析如何使用YOLO(You Only Look Once)进行对象检测。要想完全理解这一技术,首先应该知道对象分类、检测和分割之间的区别。

对象分类是什么?

图片来源: https://goo.gl/BPtB4f

它是系统试图预测图像内容属性的过程,就相当于一个预测图像标签的分类器。

简单来说,如果有一个预测猫和狗的分类系统,该系统(或者说是分类器)将预测输入其中的任何测试图像并进行分类。此时,图像分类的标签为狗和猫两种。

注意:任何分类器只能预测它所训练的类别标签。所以,在上述情况中,即使输入的图像是大象,分类器也只会输出狗或猫。要识别大象,整个系统必须从头开始对大象数据集进行训练(或从预训练的模型中加载)。

对象分类的方法

上图显示了一种使用像素表示抽象特征的通用方法。底层是原始像素,往上是像素组合在一起形成低级特征,低级特征又组合在一起形成高级特征。

我们可以应用任何现有的机器学习、深度学习技术来解决分类问题。包括:

· 图像特征的二分类

· 基于图像特征的支持向量机

· 基于图像特征的人工神经网络

· 基于图像特征的卷积神经网络

其中,CNN(卷积神经网络)是最佳的图像分类架构之一。所有最新模型都在某种程度上结合了CNN,这也证明了它的强大功能。

对象检测

对象检测是与计算机视觉和图像处理相关的计算机技术,它能检测数字图像和视频中的某一类语义对象(如人、建筑物或汽车)。研究较多的对象检测领域包括人脸检测和行人检测。对象检测可应用于计算机视觉的许多领域,包括图像检索和视频监控。

在更传统的意义上,它指检测场景中每个对象,同时对它们的标签进行分类,并找到该对象的边界框(或多边形)。

最后一部分包括以下最新技术:

· YOLO

· RetinaNet

· RCNN

· Fast-RCNN

· Faster-RCNN

· Mask RCNN

YOLO

You Only Look Once是最先进的实时对象检测系统。它最初开发于2015年左右,当时比其他技术都略胜一筹。

YOLO有基于CNN和锚框的简洁架构,并且是一种针对普遍使用问题的实时对象检测技术。随着时代进步,YOLO也不断迭代,变得更快更好,历来版本包括:

· YOLO V1

· YOLO V2

· YOLO V3

YOLO V2的精确性和速度都比V1更好。

YOLO V3的速度虽未升级,但比V2更精确。

参考文献

1. https://arxiv.org/abs/1506.02640

2. YOLO V3:https://pjreddie.com/media/files/papers/YOLOv3.pdf

YOLO是如何运作的?

YOLO将图像分成13×13个单元格:每个单元格负责预测5个边界框。边界框描述包围对象的矩形。YOLO还输出一个置信度,告诉我们预测的边界框实际包含某个对象的程度。

先前的检测系统使用分类器或定位器进行检测,将模型应用于图像的多个位置和尺度,图像的高得分区域作为检测目标。

YOLO则采取了完全不同的方法。它将单个神经网络应用于整个图像,该网络将图像分成区域,预测每个区域的边界框和概率,并依据概率大小对所有边框分配权重。

YOLO V3精确度更高。下图描绘了YOLO V3的整体架构:

如何获取YOLO

YOLO二进制文件(和来源)可从以下来源中下载:

· https://pjreddie.com/darknet/yolo/

· GitHub:https://github.com/pjreddie/darknet

YOLO基于darknet,内置于C中。Darknet 是用C语言和CUDA编写的开源神经网络框架。

如何使用YOLO

I. 获取存储库

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

II. 编译来源

可用make直接编译来源。只需转到所获取的darknet目录,并运行以下命令:

https://github.com/pjreddie/darknet

注意: Make使用Makefile,它由编译C源文件的指令组成。

完成make过程后,将得到一个名为darknet的文件,这是一个二进制的可执行文件,可用它来运行YOLO。

III. 获取darknet执行权限

执行命令 ./darknet时,如果你获取权限错误,这意味着用户没有运行二进制文件的可执行权限。只需输入以下命令:

chmod u+x darknet

然后,darknet便可执行。

YOLO结构

I. 配置文件

YOLO完全是即插即用,即可以配置YOLO检测任何类型的对象。事实上,也可以自行修改CNN架构并使用。YOLO通过使用cfg/下的配置文件来实现这一点。

配置文件以.cfg结尾。

配置文件主要包括:

· CNN架构(层次和激活)

· 锚框

· 类别数量

· 学习速率

· 优化技术

· 输入大小

· 概率分数阈值

· 批量大小

基于不同版本,可以有多种配置,例如V1至V3,或者完整的训练到微小的层次。可从下面两个网站中下载不同配置:

· YOLOV3 (full): https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg

· Tiny YOLO V3: https://github.com/pjreddie/darknet/blob/master/cfg/yolov3-tiny.cfg

II. 权重

每个配置都有相应的预训练权重。这里只引用了YOLO V3。

· 完整权重

YOLO V3完整权重下载:

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

共包含9000多个类别。

· 小权重

80个YOLO V3已训练类别的权重 :

https://pjreddie.com/media/files/yolov3-tiny.weights。

测试YOLO

如上所述,所有操作都用darknet的可执行文件运行。假设有一个名为test.jpeg的图像,可以尝试预测对象如下:

./darknet detect yolov3-tiny.cfg yolov3-tiny.weights test.jpeg

通常,.cfg 在 cfg/ 目录下。假设 weights/目录下有 yolov3-tiny,则命令为:

./darknet detect cfg/yolov3-tiny.cfg weights/yolov3-tiny.weights test.jpeg

一旦执行,darknet文件的同一个目录下将会有一个命名为predictions.jpeg的图像。可以查看预测类型以及相应的边界框。

训练

训练稍微复杂一些,因为必须保证事物和配置正确。下面的命令即可做到:

./darknet detector train custom/cfg/obj.data custom/cfg/tiny-yolo.cfg custom/tiny-yolo_100.weights

训练命令分解

这里.cfg和.weights指前面提到的配置和权重文件。首先要使用obj.data文件,内容如下:

classes= 1 train = custom/cfg/train.txtvalid = custom/cfg/test.txtnames = obj.names backup = backup/

obj.names

该文件包含一系列类别名。例如:

catdogbackgroundbike

train.txt

该文件包含一系列将输入网络中的训练图像。文件名很类似:

custom/train-images/11.jpgcustom/train-images/12.jpgcustom/train-images/13.jpg......

这里 train-images/包含所有训练图像。除了图像,该目录还包含与图像对应的边界框文本文件。

于是就得到了 custom/train-images/11.txt,内容为:

0 0.32502480158730157 0.3950066137566138 0.12896825396825398 0.09523809523809523

第一个数字代表obj.names中对应的id或类别,其余的数字代表边界框。如果有多个类别的多个框,那么应该是:

0 0.32502480158730157 0.3950066137566138 0.12896825396825398 0.095238095238095230 0.52502480158730157 0.3950066137566138 0.12896825396825398 0.095238095238095231 0.32502480158730157 0.3950066137566138 0.12896825396825398 0.09523809523809523

test.txt

该文件包含一些了测试图像。

注意:在.cfg中,必须将类别的数量更改为obj.names中找到的类别总数。

以上便是使用YOLO的方法。上述演示操作基于Linux系统,Windows系统的步骤也与之类似。

留言 点赞 关注

我们一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

yolo v3制作自己的数据_必看!一文掌握最先进的实时对象检测系统YOLO相关推荐

  1. yolo v3制作自己的数据_小白也能弄懂的目标检测之YOLO系列 第一期

    大家好,上期分享了电脑端几个免费无广告且实用的录屏软件,这期想给大家来讲解YOLO这个算法,从零基础学起,并最终学会YOLOV3的Pytorch实现,并学会自己制作数据集进行模型训练,然后用自己训练好 ...

  2. yolo v3制作自己的数据_【手把手AI项目】五、自己制作图像VOC数据集--Objection Detection(目标检测)...

    文章首发于我的个人博客 [手把手AI项目]五.自己制作图像VOC数据集--用于Objection Detection(目标检测)​blog.csdn.net 喜欢手机观看的朋友也可以在我的个人公号: ...

  3. mysql表误删回复_mysql 找回误删表的数据方法(必看)

    有备份的话很简单,只需要生成一个最近备份的数据 然后用mysqlbinlog找回备份时间点之后的数据 再恢复到现网即可. 要是没有备份 可能就会比较麻烦,找回数据的成本也是非常之高的. 下面介绍下 m ...

  4. mysql 找回误删表的数据办法_mysql找回误删表的数据方法(必看)

    有备份的话很简单,只需要生成一个最近备份的数据 然后用mysqlbinlog找回备份时间点之后的数据 再恢复到现网即可. 要是没有备份 可能就会比较麻烦,找回数据的成本也是非常之高的. 下面介绍下 m ...

  5. 春招/秋招面试前必看一文。如何找到 BAT 的实习机会。找实习中的一些困惑,如何解决?。浅谈秋招。

    春招/秋招面试前必看一文 春节过完,不管是大三/研二.还是大四/研三,就要投入到最激烈的春招当中去了,各大公司将会正式招聘,由元旦期间拉开序幕(1 - 2 月),到彻底的进入白热化阶段(3 - 4 月 ...

  6. 皮带撕裂检测系统 yolo深度学习模型

    皮带撕裂检测系统通过Python基于YOLOv7网络机器学习架构模型,对现场皮带撕裂实时分析检测.我们使用YOLO(你只看一次)算法进行对象检测.YOLO是一个聪明的卷积神经网络(CNN),用于实时进 ...

  7. 裸露土堆智能识别检测系统 yolo

    裸露土堆智能识别检测系统基于python+yolo计算机视觉深度学习技术,对现场画面中土堆裸露情况进行实时分析检测,若发现画面中的土堆有超过40%部分裸露,则判定为裸露进行抓拍预警.我们选择当下YOL ...

  8. ibm db2获取目标时间与当前时间的差值_高帧频视觉实时目标检测系统

    基于机器视觉的智能目标检测系统应用非常广泛,尤其在航天军工等领域中,经常涉及高速目标的实时检测和控制,对目标检测的智能性和实时性提出了更严格的要求.在这种应用中,视觉系统相对雷达.声纳具有信息量大.抗 ...

  9. ibm db2获取目标时间与当前时间的差值_【学术论文】高帧频视觉实时目标检测系统...

    摘要 为了实现高速场景下的智能实时目标检测,设计了一种基于ZYNQ7000系列FPGA的高速相机平台,并利用该平台进行目标检测算法实现,形成了一套高帧频实时目标检测系统样机. 该系统将高速CMOS图像 ...

最新文章

  1. 谷歌深度学习公开课任务 5: Word2VecCBOW
  2. 纯CSS实现下拉菜单及下拉容器等(纯CSS实现导航条及导航下拉容器)
  3. 合工大计算机研究生毕业工资,合肥工业大学2019届薪酬统计
  4. 反距离加权插值法例题_GMS插值中的反距离权重法(Inverse distance weighted)
  5. java面试题十九 判断题
  6. python 日志不会按照日期分割_python 按照日期切分大日志文件(重点)和按照指定大小切分日志文件...
  7. Linux之父:开源不为金钱名利只为娱乐
  8. 【技术角度看问题之一】ARM到底是个啥?
  9. python计算长方体体积编程_计算体积 编程创建一个Box类(长方体) 联合开发网 - pudn.com...
  10. 内卷严重?给程序员的几条建议
  11. 10.企业安全建设指南(金融行业安全架构与技术实践) --- 安全预算、总结与汇报
  12. Nginx+Tomcat关于Session的管理
  13. oracle ebs 接收数量,[zz]Oracle EBS API: 库存数量查询API示例
  14. 数字抽奖小程序_两款火爆的抽奖小程序,最高抽2000元现金红包 亲测提现8.59元秒到...
  15. Python笔记:集合的概念和使用
  16. 高并发下restTemplate的错误分析
  17. 树的基本概念及表示方法
  18. 新的分享之路开启,感谢您的陪伴
  19. 三星s5pv210核心板全球最低价199元,尽在保定芯灵思
  20. python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频

热门文章

  1. html 如何创建div,html – 如何使用带尖头的CSS创建div
  2. 最新微信小程序反编译工具,完美解决分包问题
  3. 【精选】JAVA算法题(二十五)
  4. latex编辑器的基本使用
  5. 【译】大O的友好指南
  6. Vue - 下载打印功能,将页面下载打印为 pdf 格式文件(vue-print-nb)
  7. 学习Linux命令(8)
  8. leetcode系列-70. 爬楼梯
  9. 数据结构————带头结点单链表讲解
  10. 几则EXCEL区间函数