一、Deeplearning-assignment
在本周的作业中,将通过使用大的YOLO模型来了解对象检测。
您将学习:
- 在一个汽车检测数据集上使用对象检测
- 处理边界框
问题陈述:你正在开一辆自驾车。作为这个项目的重要组成部分,您首先要建立一个汽车检测系统。为了收集数据,你已经把摄像头安装在汽车的引擎盖上(意思是前面),在驾驶时每隔几秒就会拍摄前方的道路。
您已经将所有这些图像收集到一个文件夹中,并在您能找到的每辆车周围绘制了边界框来标记它们。这是一个你的边界框的例子。
如果你需要YOLO识别的类别有80个, 您可以用一个1到80的整数来表示类别标签c, 或者用一个80维的向量 (有80个数字),其中一个是1,其余的是0。在视频讲座中使用的是后者。
YOLO算法
YOLO ("you only look once") 是一个非常流行的算法,因为它的精确率非常高,同时也能实时运行。这个算法对图像只需处理一次,它只需要一个前向传播就能进行预测。经过非极大值抑制后,它将边界框与识别的对象一起输出。
非极大值抑制指只需要输出概率最大的分类结果,抑制那些很接近但不是最大的其他预测结果。
有关模型的一些细节:
- The input is a batch of images of shape (m, 608, 608, 3)
- The output is a list of bounding boxes along with the recognized classes. 每个边界框用6个数字表示 (pc,bx,by,bh,bw,c)(pc,bx,by,bh,bw,c). If you expand cc into an 80-dimensional vector, each bounding box is then represented by 85 numbers.
我们会使用 5 个 anchor boxes. So you can think of the YOLO architecture as the following: IMAGE (m, 608, 608, 3) -> DEEP CNN -> ENCODING (m, 19, 19, 5, 85).
现在让我们仔细看看这个 ENCODING 代表什么。
如果一个对象的中心/中点落入一个网格单元中,那么该网格单元负责检测该对象。
由于我们使用了5个 anchor boxes,所以19x19单元中的每一个都编码了5个框的信息。为了简单起见,我们将shape(19, 19, 5, 85)的最后两个维度展平,所以 Deep CNN 的输出是 (19, 19, 425)。
现在,对于每个单元格中的每个box,我们进行下面的计算,提取每个box包含某个类别的概率。
下面是一种可视化YOLO图像预测内容的方法:
- For each of the 19x19 grid cells, find the maximum of the probability scores (taking a max across both the 5 anchor boxes and across different classes).
- Color that grid cell according to what object that grid cell considers the most likely.
按以上方法做了后可以产生下面的结果:
另一种可视化YOLO输出的方法是绘制它