YOLO
在本文中,我们将研究一个这样的对象检测框架——YOLO。这是一个非常快速和精确的框架,YOLO框架(You Only Look Once)与R-CNN不同的是在单个实例中获取整个图像,并预测这些框的边界框坐标和类概率。使用YOLO最大的优点是它的速度非常快,可以处理45帧每秒。YOLO也理解广义对象表示。这是最好的目标检测算法之一,表现出了与R-CNN算法相对相似的性能。
作为刚接触图像的小白,最好的理解方法就是启动我们的Jupyter笔记本(或者您喜欢的IDE),并最终以代码的形式实现我们的学习了!这是我们到目前为止一直在做的,让我们开始吧。
我们将在本节中看到的实现YOLO的代码取自Andrew NG关于深度学习的GitHub。您需要下载这个zip文件,其中包含运行此代码所需的经过预先训练的权重。
在进行其他操作之前,我们首先导入所需的库:
现在,让我们创建一个根据概率和阈值的过滤框:
接下来,我们将定义一个函数来计算两个方框之间的IOU:
然后,让我们定义一个用于Non-Max Suppression的函数:
我们现在有了计算IOU和执行Non-Max Suppression。我们从形状CNN得到输出(19 19 5 85)。因此,我们将创建一个形状的随机体积(19、19、5、85),然后预测bounding boxes:
最后,我们将定义一个函数,该函数将CNN的输出作为输入,并返回suppressed boxes:
让我们看看如何使用yolo_eval函数进行预测:
效果如何?
“分数”表示该对象出现在grid cell中的可能性。“boxes”返回被检测对象的坐标(x1, y1, x2, y2)。“类”是已标识对象的类。
现在,让我们使用一个预先训练的YOLO算法对新图像,看看它是如何工作的:
在加载类和预训练模型之后,让我们使用上面定义的函数来获得yolo_output。
现在,我们将定义一个函数来预测边界框并保存包含这些边界框的图像:在加载类和预训练的模型之后,让我们使用上面定义的函数来获得yolo_output。
接下来,我们将读取图像并使用预测函数进行预测:
最后,让我们画出预测图:
预测结果:
领取专属 10元无门槛券
私享最新 技术干货