一、目标检测
1.yolo的输出
yolo在不同的数据集上输出的形式不同,拿VOC数据集举例,输出是7*7*30的,7*7是网格,30包含两个bounding box的xyhw和置信度分数,以及voc数据集20中类别的概率。因此输出随着数据集分类和网络网格划分而变化。
2.数据归一化
yolo数据在标注GT时,是使用的相对坐标标注的,这十分方便,首先有助于模型的收敛,其次当你对数据集进行resize操作时,并不需要重新标注数据集,因为不会影响标注信息。
3.yolo的损失函数
关于为什么第二项开了平方,是因为如果目标本身的宽高就很大的时候,预测宽高与真实宽高有一定的差异也不会有很大的影响, 但是如果目标本身的宽高就很小的时候,预测宽高与真实宽高有一点点的差异就会很明显预测不准,因此开了平方,使得损失更加关照小宽高时的差异。
4.非极大值抑制
NMS算法要点:
1. 首先丢弃概率小于预定IOU阈值(例如0.5)的所有边界框;对于剩余的边界框:
2. 选择具有最高概率的边界框并将其作为输出预测;
3. 计算 “作为输出预测的边界框”,与其他边界框的相关联IoU值;舍去IoU大于阈值的边界框;其实就是舍弃与“作为输出预测的边界框” 很相近的框框。
4. 重复步骤2,直到所有边界框都被视为输出预测或被舍弃
二、语义分割
语义分割:找到同一画面中的不同类型目标区域,即对图片进行逐像素的分类。
1.FCN
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
2.语义分割标注工具
labelme、eiseg
三、循环神经网络与NLP
1.特征编码
特征编码有一项有意思的特点就是,类别不好使用数值编码,二是使用独热编码,这样是为了使得不同类别之间的“距离一致”,从而方便计算交叉熵损失。
2.文本处理
第一步:文本切分
给定文本片段,如:S = “… to be or not to be…”.将文本切分为单词序列:L = […, to, be, or, not, to, be, …]
第二步:统计词频
按照词频降序进行排序,如果词汇太多,则只保留排序在前的k个单词 (如取𝑘 = 10000),将每一个词映射到索引号上,需要时,将索引转换为独热编码。词典上没有的词(低频词或拼写错误,直接忽略,或编码为0)
3.文本预处理
一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列。 我们将解析文本的常见预处理步骤。 这些步骤通常包括:
1.将文本作为字符串加载到内存中。
2.将字符串切分为词元(如单词和字符)。
3.建立一个字典,将拆分的词元映射到数字索引。
4.将文本转换为数字索引序列,方便模型操作。
4.文本嵌入
将词使用独热编码进行映射成向量的话维数过高,通过词嵌入将独热编码转化为低维向量,
5.rnn模型
6.lstm模型