神经网络与深度学习
评价指标
TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数
FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数
FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数
TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
准确率:
A
c
c
u
r
a
c
y
=
T
P
+
T
N
T
P
+
T
N
+
F
P
+
F
N
↔
\mathrm{Accuracy}=\frac{\mathrm{TP}+\mathrm{TN}}{\mathrm{TP}+\mathrm{TN}+\mathrm{FP}+\mathrm{FN}}\leftrightarrow
Accuracy=TP+TN+FP+FNTP+TN↔
精确率:(标识“挑剔”的程度)
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
←
Precision=\frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FP}}\leftarrow
Precision=TP+FPTP←
召回率:(标识“通过”的程度)
R
e
c
a
l
l
=
T
P
T
P
+
F
N
↔
\mathrm{Recall}=\frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}\leftrightarrow
Recall=TP+FNTP↔
P-R曲线:表示召回率与精确率的关系
精确越高,召回越低!
mAP:均值平均准确率
A
P
=
∑
k
=
1
N
P
(
k
)
Δ
r
(
k
)
AP=\sum_{k=1}^NP(k)\Delta r(k)
AP=k=1∑NP(k)Δr(k)
其中
N
N
N代表测试集中所有图片的个数,
P
(
k
)
P(k)
P(k)表示能识别出
k
k
k个图片的时候Precision的值,而
D
e
l
t
a
r
(
k
)
Delta r(k)
Deltar(k)则表示识别图片个数从k-1变化到k时Recall值的变化。
目标检测与Yolo网络
目标检测发展史
YOLO发展史
YOLO网络结构概略图
YOLO模型处理过程:
- 将图片分割为7*7个grid,每个grid cell大小相等
- 每个格子都可以检测是否包含目标
- 输出是7730的张量,对应7*7个cell
- 每个cell对应2个包围框(bounding box,bb),预测不同大小和宽高比,对应检测不同目标。每个bb有5个分量,分别是物体的中心位置(x,y)和它的高(h)和宽(w),以及这次预测的置信度。
包围框与置信度
归一化
置信度
训练值
训练数据与网络输出
损失函数
- λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 ] \lambda_{\mathbf{coord}}\sum_{i=0}^{S^2}\sum_{j=0}^B\mathbb{1}_{ij}^{\mathrm{obj}}\left[\left(x_i-\hat{x}_i\right)^2+\left(y_i-\hat{y}_i\right)^2\right] λcoordi=0∑S2j=0∑B1ijobj[(xi−x^i)2+(yi−y^i)2]
- + λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] +\lambda_{\mathbf{coord}}\sum_{i=0}^{S^{2}}\sum_{j=0}^{B}\mathbb{1}_{ij}^{\mathrm{obj}}\left[\left(\sqrt{w_{i}}-\sqrt{\hat{w}_{i}}\right)^{2}+\left(\sqrt{h_{i}}-\sqrt{\hat{h}_{i}}\right)^{2}\right] +λcoordi=0∑S2j=0∑B1ijobj[(wi−w^i)2+(hi−h^i)2]
- + ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j ( C i − C ^ i ) 2 +\sum_{i=0}^{S^2}\sum_{j=0}^B\mathbb{1}_{ij}^{\mathrm{obj}}\left(C_i-\hat{C}_i\right)^2 +i=0∑S2j=0∑B1ijobj(Ci−C^i)2
- + λ noobj ∑ i = 0 S 2 ∑ j = 0 B 1 i j noobj ( C i − C ^ i ) 2 +\lambda_\text{noobj}\sum_{i=0}^{S^2}\sum_{j=0}^B\mathbb{1}_{ij}^\text{noobj}\left(C_i-\hat{C}_i\right)^2 +λnoobji=0∑S2j=0∑B1ijnoobj(Ci−C^i)2
- + ∑ i = 0 S 2 1 i obj ∑ c ∈ classes ( p i ( c ) − p ^ i ( c ) ) 2 +\sum_{i=0}^{S^2}\mathbb{1}_i^\text{obj}\sum_{c\in\text{classes}}\left(p_i(c)-\hat{p}_i(c)\right)^2 +i=0∑S21iobjc∈classes∑(pi(c)−p^i(c))2
- 第一个公式代表边界框中心点的损失
- 第二个公式代表边界框的宽度、高度代表的损失
- 第三个公式代表置信度损失(包含物体)
- 第四个公式代表置信度损失(不包含物体)
- 第四个公式代表类别损失
训练与NMS
NMS(非极大值抑制)核心思想是:选择得分最高的作为输出,与该输出重叠的去掉,不断重复这一过程直到所有备选处理完。
NMS算法要点:
- 首先丢弃概率小于预定IOU阈值(例如0.5)的所有边界框;对于剩余的边界框;
- 选择具有最高概率的边界框并将其作为输出预测;
- 计算 “作为输出预测的边界框”,与其他边界框的相关联IoU值;舍去IoU大于阈值的边界框;其实就是舍弃与“作为输出预测的边界框” 很相近的框。
- 重复步骤2,直到所有边界框都被视为输出预测或被舍弃。
预训练与训练
YOLO先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定位的训练和预测。
训练中采用了drop out和数据增强来防止过拟合。
YOLO v3网络结构
YOLO v5网络结构
CIOU
C
I
O
U
=
I
O
U
−
d
2
c
2
−
α
v
CIOU=IOU-\frac{d^2}{c^2}-\alpha v
CIOU=IOU−c2d2−αv
其中d 为预测框和真实框中心点的距离,c 为最小外接矩形的对角线距离;
α
=
v
(
1
−
I
o
U
)
v
\alpha=\frac v{(1-IoU)v}
α=(1−IoU)vv,v=
4
⋅
(
a
r
c
t
a
n
w
G
h
G
−
a
r
c
t
a
n
w
P
h
P
)
2
π
2
\frac{4\cdot(arctan\frac{w_\mathrm{G}}{h_\mathrm{G}}-arctan\frac{w_\mathrm{P}}{h_\mathrm{P}})^2}{\pi^2}
π24⋅(arctanhGwG−arctanhPwP)2
最终损失为:
L
C
I
o
U
=
1
−
I
O
U
+
d
2
c
2
+
α
v
L_{CIoU}=1-IOU+\frac{d^2}{c^2}+\alpha v
LCIoU=1−IOU+c2d2+αv
CIOU损失函数综合考虑了位置,形状和方向等因素,同时精度更高
数据增强
𝑌𝑜𝑙𝑜𝑣5的输入端采用了和𝑌𝑜𝑙𝑜𝑣4一样的𝑀𝑜𝑠𝑎𝑖𝑐数据增强的方式,采用了4张图
片,随机缩放、随机裁剪、随机排布的方式进行拼接,使模型在更小的范围内
识别目标。
Focus结构
进入Backbone前,对图片进行切片操作,具体操作是在一张图片中每隔一个像素拿一个值,类似于邻近下采样,这样就拿到了四张图片(4个通道),一共12个通道(RGB)
语义分割
语义分割发展历史:
语义分割的目的:
对图中每个像素进行分类,得到对应标签。
FCN 网络结构
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些
经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点
图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
反卷积与反池化
1*1卷积
转置卷积
上池化(uppooling)
评价指标
Pixel Accuracy:
∑
i
n
i
i
∑
i
t
i
\frac{\sum_in_{ii}}{\sum_it_i}
∑iti∑inii
mean accuracy:
1
n
c
l
s
⋅
∑
i
n
i
i
t
i
\frac1{n_{cls}}\cdot\sum_i\frac{n_{ii}}{t_i}
ncls1⋅∑itinii
mean IOU:
1
n
c
l
s
⋅
∑
i
n
i
i
t
i
+
∑
j
n
j
i
−
n
i
i
\frac1{n_{cls}}\cdot\sum_i\frac{n_{ii}}{t_i+\sum_jn_{ji}-n_{ii}}
ncls1⋅∑iti+∑jnji−niinii
标注工具
Labelme
ELSeg
风格迁移
如果你是一位摄影爱好者,也许接触过滤镜。它能改变照片的颜色样式,从
而使风景照更加锐利或者令人像更加美白。但一个滤镜通常只能改变照片的
某个方面。如果要照片达到理想中的样式,经常需要尝试大量不同的组合,
其复杂程度不亚于模型调参。
什么是风格迁移:
- 首先,我们初始化合成图像,例如将其初始化成内容图像。该合成图
像是样式迁移过程中唯一需要更新的变量,即样式迁移所需迭代的模
型参数。 - 然后,我们选择一个预训练的卷积神经网络来抽取图像的特征,其中
的模型参数在训练中无须更新。深度卷积神经网络凭借多个层逐级抽
取图像的特征。我们可以选择其中某些层的输出作为内容特征或样式
特征。
样式迁移常用的损失函数由3部分组成: - 内容损失(content loss)使合成图像与内容图像在内容特征上接近
- 样式损失(style loss)令合成图像与样式图像在样式特征上接近
- 总变差损失(total variation loss)则有助于减少合成图像中的噪点。
视觉应用展望
生成对抗网络(GANs, generative adversarial networks)是由Ian Goodfellow等人在2014年的Generative Adversarial Networks一文中提出。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D。一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型
的自由性而导致输出不理想。
生成对抗网络其整体结构如下: