由于毕业论文方向选定为视频目标检测与跟踪,经过在paper池中查找,从rbg大神的R-CNN系列一直找到这篇最新的顶级paper,发现这篇论文的思路太棒了,而且该项目还自己写了一个开源的框架,论文的实验也开源了,故而准备以该研究为起点。(该部分属于自己瞎扯淡,大神可以直接忽略)
以下正式进入翻译阶段:
我们提出一种叫YOLO新的目标检测方法。以前的目标检测的研究大多是改进分离器来进行检测。我们将目标检测的当做一种回归的问题来解决,通过空间的分割成边界框和相应类别的概率。我们采用单独的网络直接从整副图像来预测边界框和类别的概率。因为整个检测在一个网络内,所以它可以直接优化端到端的检测性能。(第一段大致这个意思,若有更准确的翻译,麻烦在下方回复,我会及时修改!)
感觉翻译论文有点麻烦
,直接翻译大神的博客吧!哈哈!版权归属pj大神
YOLO是基于Pascal VOC2012数据集的目标检测系统。它能够检测到20种Pascal的目标类别,包括:
YOLO是大神们开发的!哈哈!paper
以前的检测系统大多是改进分类器或者改进定位器来进行检测。它们都将模型应用多个定位点和尺度。图片中得分高的区域就认为是检测到物体。
大神们使用不同的方法。他们单独使用神经网络来检测整张图片。网络能够将图片划分为不同的区域,然后预测边界框和每个区域的概率。这些区域框是通过预测的概率值来权重的(这段翻译的有点拗口,欢迎大家拍砖!!!)。
这地方感觉有点难理解
,我们来看看大神的论文吧!
论文中第二部分(Unified Dectection)中说到:我们的系统将输入的图片分成一个 S×S 网格。如果目标的中心在网格的单元内,所对应的网格单元负责检测对应的目标。每一个网格单元预测 B 边界框和这些边界的置信的分数。它们的置信的分数表征了该边界包含该目标的模型得分,同事也可以给出模型对该边界的预测值。其中置信分数是通过如下计算公式得到的:
Pr(Object)∗IOUtruthpred
如果某网格单元中没有目标,则它的置信分数为 0 ,我们想要置信得分等于联合的交集(Intersection Over Union,IOU),该值是介于预测的框与真实的边框。
每一个边界框包括5各预测值: x,y,w,h,confidence .其中 (x,y) 坐标表示框的中心,w是边界框的宽,h是边界框的高,置信得分的预测表示IOU介于预测的边界与真实边界(有点不好理解,等我研究代码了,再回来修改该部分翻译吧!)
每个网格单元也预测C,类别的条件概率,即 Pr(Classi|Object) 。该概率值表示该网格单元包含某目标的可能性。同时这只预测每个网格单元某个类别集的概率,不考虑边界的数目.
在测试阶段,我们将类别的条件概率乘以某个边界置信的预测,Pr(classi|Obejct)⋅Pr(Object)⋅IOUtruthpred=Pr(Classi)⋅IOUtruthpred
该公式告诉我们每个边界属于某个类别置信得分。
![]()
如上图所示,我们的系统将检测作为一个回归问题。它将图片划分为 S×S 的网格,对于每个网格单元预测边界框(B)、边界框的置信度以及类别概率(C),因此这些预测值可以表示为 S×S×(B∗5+C) 的张量。
最后,我们可以设置一个检查的阈值,从而得到高得分的检查目标。
YOLO与以分类器为基础的系统有很多优势:
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
./darknet yolo test cfg/yolo.cfg /yolo.weights
注意:
您也可以使用源码下的data目录中eagle.jpg、dog.jpg、person.jpg、horse.jpg。
如下所示,您也可以不加指定的图片,从而可以检测多张图片。
./darknet yolo test cfg/yolo.cfg yolo.weights
原始的YOLO模型使用许多的GPU,如果你的图形显示卡比较小,您可以使用更小版本的YOLO模型,权重下载在此(359MB),运行命令如下:
./darknet yolo test cfg/yolo-small.cfg yolo-small.weights
同时有更小的模型,模型权重下载在此(172MB),运行命令如下:
./darknet yolo test cfg/yolo-tiny.cfg yolo-tiny.weights
YOLO默认只显示置信得分不小于0.2
的检测目标。您可以使用-thresh
来改变。例如,您想显示所有的检测目标,可以使用如下命令:
./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0