9.YOLO网络
(1)YOLO网络结构
结构概略图:
官方的模型结构图:
网络结构包含24个卷积层和2个全连接层;其中前20个卷积层用来做预训练,后面4个是随机初始化的卷积层,和2个全连接层。
(2)YOLO模型处理
①网络输入:
YOLO v1在PASCAL VOC数据集上进行的训练,因此输入图片为448 × 448 × 3。实际中如为其它尺寸,需要resize或切割成要求尺寸。
②模型处理:7X7网格划分
将图片分割为 𝑆 2个grid(𝑆 = 7),每个grid cell的大小都是相等的;每个格子都可以检测是否包含目标;YOLO v1中,每个格子只能检测一种物体(但可以不同大小)
③网络输出:
输出是一个7 × 7 × 30的张量。对应7 × 7个cell ;每个cell对应2个包围框(bounding box, bb),预测不同大小和宽高比,对应检测不同目标。每个bb有5个分量, 分别是物体的中心位置(𝑥, 𝑦)和它的高(ℎ) 和宽 (𝑤) ,以及这次预测的置信度。在下图中,每个框代表1个预测的bb,粗细代表不同的置信度,越粗得越高。
④模型输出:
(3)YOLO包围框与置信度
①包围框:
②归一化:
③置信度:
(4)YOLO损失函数
YOLO损失函数包含五项:
符号标注:
λ取值问题:
(5)训练与NMS(非最大值抑制)
NMS算法要点:
1. 首先丢弃概率小于预定IOU阈值(例如0.5)的所有边界框;对于剩余的边界框:
2. 选择具有最高概率的边界框并将其作为输出预测;
3. 计算 “作为输出预测的边界框”,与其他边界框的相关联IoU值;舍去IoU大于阈值的边界框;其实就是舍弃与“作为输出预测的边界框”很相近的框框。
4. 重复步骤2,直到所有边界框都被视为输出预测或被舍弃
预训练与训练:
①YOLO先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定位的训练和预测;
②训练中采用了drop out和数据增强来防止过拟合;
③YOLO的最后一层采用线性激活函数(因为要回归bb位置),其它层都是采用Leaky ReLU激活函数:
YOLO V3模型效果:
10.语义分割与FCN
(1)语义分割问题
(2)图像分割算法发展历史:
(3) 语义分割基本思想:
(4) FCN网络结构:
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
(5)FCN具体实现
①卷积部分:FCN中第6、7、8层都是通过1 × 1卷积得到的,第6层的输出是4096 × 7 × 7,第7层的输出是4096 × 7 × 7 ,第8层的输出是1000 × 7 × 7,即1000个大小是7 × 7的特征图,输出的特征图(称为heatmap),颜色越贴近红色表示对应数值越大。
②反卷积部分:
蓝色:卷积层;绿色:Max Pooling层;黄色: 求和运算;灰色: 裁剪
(6)FCN训练结果
(7)FCN评价指标与标注工具
1)评价指标:
2)常见标注工具:
①Labelme
②EISeg