1、损失函数
(1)YOLO损失函数
代表这个grid里有无物体,有则
= 1, 否则为0。第二项开根号让误差更显著,保证回归精度。
2、训练与NMS
(1)非极大值抑制(NMS)
核心思想:选择得分高的作为输出,与该输出重叠的去掉,不断重复这一过程直到 所有备选处理完。
要点:
1. 首先丢弃概率小于预定IOU阈值(例如0.5)的所有边界框;
对于剩余的边界框:
2. 选择具有最高概率的边界框并将其作为输出预测;
3. 计算 “作为输出预测的边界框”,与其他边界框的相关联IoU 值;舍去IoU大于阈值的边界框;其实就是舍弃与“作为输出预 测的边界框” 很相近的框框。
4. 重复步骤2,直到所有边界框都被视为输出预测或被舍弃。
(2)数据集训练
YOLO先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定 位的训练和预测。
训练中采用了drop out和数据增强来防止过拟合。
YOLO的最后一层采用线性激活函数(因为要回归bb位置),其它 层都是采用Leaky ReLU激活函数:
3、语义分割
(1)语义分割问题
语义分割:找到同一画面中的不同类型目标区域。
实例分割:同一类型目标要分出来具体实例(谁是谁)。
目标检测:标出来外包围矩形。
(2)语义分割目标
对图中每一个像素进行分类,得到对应标签。
(3)基本思想
基本思想:滑动窗口
滑动次数太多,计算太慢,重复计算太多。
FCN网络结构:
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些 经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点 图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
4、反卷积与反池化
(1)基本概念
1x1卷积
上池化(unpooling),或称为反池化
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层;黄色: 求和运算;灰色: 裁剪
FCN-32s
FCN-16s
FCN-8s
跳级结构
6、FCN评价指标
7、数据处理基础
(1)特征编码
第三列表示国籍,目前有197个国家,可以用一个独热向量表示,如US: [1,0, ….,0]。
(2)文本处理
一、文本切分(tokenization)
给定文本片段,如: S = “… to be or not to be…”。
将文本切分为单词序列: L = […, to, be, or, not, to, be, …]。
二、统计词频
创建一个字典 (实际中经常使用Hash 表) 进行词频统计 , 初始字典为空
遍历文本,并按如下更新字典:
• 如果单词不再字典中, 加入该单词 (𝑤, 1)
• 否则将其词频加1
然后 按照词频降序进行排序。将词频索引化 , 如果词汇太多,则只保留排序在前 的k个单词 (如取𝑘 = 10000)
将每一个词映射到索引号上。需要时,将索引转换为独热编码。词典上没有的词(低频词或 拼写错误,直接忽略,或编码为0)。
8、文本预处理与词嵌入
(1)文本预处理一般步骤
1.将文本作为字符串加载到内存中。
2.将字符串切分为词元(如单词和字符)。
3.建立一个字典,将拆分的词元映射到数字索引。
4.将文本转换为数字索引序列,方便模型操作。
(2)词嵌入(word embedding)
将独热向量映射为低维向量
原始向量:𝑣维;映射后:𝑑维,𝑑 ≪ 𝑣;
映射矩阵:𝑑 × 𝑣,根据训练数据学习得到。
9、RNN模型
随着输入的增加,会产生“遗忘”问题。
10、LSTM模型