神经网络与深度学习总结(3)

1.概述

这周直接从卷积神经网络进入计算机视觉领域了,主要的问题也就是目标检测(object detection)和语义分割(semantic segmentation)了。

目标检测的目标是获得一张图像中物品的类别信息和位置信息(bounding box)。

语义分割则更近一步,要求识别并理解图像中每个像素的内容,简单来说也可以理解成把目标检测的bounding box换为精确到像素级别的边界框。

这里目标检测主要讲了YOLO,语义分割则是简单讲了FCN,我个人对Stable Diffusion比较感兴趣这里就再加上U-Net的个人学习记录咯。这里几乎没有罗列公式(损失函数)以及网络结构等,主要是原理上理解。

2.目标检测——YOLO

2.1 You Only Look Once

YOLO算法的名字最开始就是为了与R-CNN做区分产生的。R-CNN(region-based CNN)首先从输入图像中选取若干提议区域(锚框anchor box),并标注它们的类别和边界框(偏移量)。然后,用卷积神经网络对每个提议区域进行前向传播以提取其特征。接下来,用每个提议区域的特征来预测类别和边界框。

简单来讲就是You Have to Look Many Times。你需要先获得提议区域,然后在区域内对物品划定边界框。输入一张图片,通过不同大小的锚框逐个像素平移,输出结果为物品的类别。本质上就是在每次选定的锚框区域内用卷积神经网络进行分类。

YOLO的方法则不同,它直接输出物品的类别和位置信息。对于一个bounding box可以用中心位置(x,y)以及宽高(w,h)来确定。YOLO直接得到的是一个bounding box的(x,y,w,h,p),这里的p是指这个框的置信概率。

但是目前这样还不够,当图像里只有一个目标时可以得到结果。若有多个目标该怎么办呢?很显然最简单的方法就是用一个新的网络再检测一次。可是这样look就不是once了,有几类就需要看几次。所以YOLO采用的方法是将图像进行分割,原始论文里将图像分割成了7*7的方格,在每个方格执行刚才的操作就可以通过look once得到结果了。

不过输出结果通常会有几个不同置信概率的框,为了得到最终的结果通常使用NMS(非极大值抑制,non-maximum suppression),简单来说就是选取置信度最高的边界框作为基准,利用重合度(IoU)把和它有重合的框抑制掉,再反复重复这一过程,剩下的就都是检测结果了。

至此YOLO v1的雏形已经有了,除此之外YOLO v1为了应对小目标检测结果不佳的问题,在每个区域设计了两个神经元,分别检测大目标和小目标。

可是目前这样在分割区域内也最多只能检测两个相同的目标。

2.2 YOLO v2

YOLO v1的预测框不准确,于是YOLO v2参考了当时的R-CNN,不再直接预测(x,y,w,h,p),而是同样预测偏移量。

给定框A和B,中心坐标,宽度高度分别为(xa,ya,wa,ha)和(xb,yb,wb,hb)

则偏移量为

\frac{\frac{x_{b}-x_{a}}{w_{a}}-\mu _{x}}{\sigma _{x}},\frac{\frac{y_{b}-y_{a}}{h_{a}}-\mu _{y}}{\sigma _{y}},\frac{log\frac{w_{b}}{w_{a}}-\mu _{w}}{\sigma _{w}},\frac{log\frac{h_{b}}{h_{a}}-\mu _{h}}{\sigma _{h}}

而且同样在每个区域使用了anchor,也就是一个位置宽高都已知的框。

这个偏移量通常比较小,比起直接学习其他信息对于神经网络来说更有利。YOLO v2通过聚类和实验的方式最终选取了5个anchor。

2.3 YOLO v3

进一步强化了检测头

这样可以得到的bounding box数量得到了大幅提升。

(13*13+26*26+52*52)*3=10467>>13*13*5=845

而且在v3的时候数据集也从PASCAL换到了COCO。

2.4 YOLOs

接下来的时代YOLO的原作者不再进行更新,不过“同人作品”层出不穷,目前更新到了v8,这里值得一提的就是YOLOX(2021),重新让YOLO回到了无锚时代。其他就不再赘述了,感兴趣可以看这篇综述论文《A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 TO YOLOV8 AND BEYOND 》。

3.语义分割——FCN

3.1转置卷积

FCN也就是全卷积网络(fully convolutional network)。在开始讲它之前,最好先讲一讲转置卷积,即transposed convolution。

因为卷积通常来说都会降低特征图的空间维度降低,而转置卷积则可以增加上采样中间层特征图的空间维度,逆转下采样导致的空间维度减小。

转置卷积的具体计算方法其实要比卷积简单直观得多。之前我们把卷积理解为一种函数操作,那么转置卷积同理,区别在于转置卷积的输出数量要大于输入数量。

具体计算过程如下图所示。

转置卷积

3.2全卷积网络

网络结构

全卷积网络先试用卷积神经网络提取图像特征,然后通过1*1卷积层将通道数转换为类别数,最后通过转置卷积层将特征图的高和宽转换为类别数。

跳级(skip)结构

对CNN的结果做处理,得到了dense prediction,而作者在试验中发现,得到的分割结果比较粗糙,所以考虑加入更多前层的细节信息,也就是把倒数第几层的输出和最后的输出做一个fusion,实际上也就是加和:

实验表明,这样的分割结果更细致更准确。在逐层fusion的过程中,做到第三行再往下,结果又会变差,所以作者做到这里就停了。

具体例子

输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21,模型基于AlexNet

  • 蓝色:卷积层
  • 绿色:Max Pooling层
  • 黄色: 求和运算, 使用逐数据相加,把三个不同深度的预测结果进行融合:较浅的结果更为精细,较深的结果更为鲁棒
  • 灰色: 裁剪, 在融合之前,使用裁剪层统一两者大小, 最后裁剪成和输入相同尺寸输出
  • 对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变
  • 全卷积层部分进行特征提取, 提取卷积层(3个蓝色层)的输出来作为预测21个类别的特征
  • 图中虚线内是反卷积层的运算, 反卷积层(3个橙色层)可以把输入数据尺寸放大。和卷积层一样,升采样的具体参数经过训练确定

升采样分为三次完成(橙色×3), 在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)融合进来,在第三次升采样之前,融合了第3个pooling层的预测结果,使用跳级结构提升精确性。第三次反卷积步长为8,记为FCN-8s

3.3总结

特点:

想要精确预测每个像素的分割结果必须经历从大到小,再从小到大的两个过程;在升采样过程中,分阶段增大比一步到位效果更好;在升采样的每个阶段,使用降采样对应层的特征进行辅助

缺点:

得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感

对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性

4.语义分割——U-Net

4.1 U-Net简介

U-Net 是弗莱堡大学计算机科学系为生物医学图像分割而开发的卷积神经网络。该网络基于全卷积神经网络,其架构经过修改和扩展,可使用更少的训练图像并产生更精确的分割。
U-Net 架构还被用于迭代图像去噪的扩散模型。这项技术是许多现代图像生成模型的基础,如 DALL-E、Midjourney 和 Stable Diffusion。

4.2 U-Net结构及原理简述

其实如果完全理解了FCN的原理,尤其是实验得出的跳级结构,U-Net是很好理解的。U-Net如下图所示,正因为结构形似字母“U”,故起名为U-Net。

一般将U-Net的结构分为Encoder和Decoder两部分。

Encoder:左半部分,由两个3x3的卷积层(RELU)再加上一个2x2的maxpooling层组成一个下采样的模块;

Decoder:右半部分,由一个上采样的卷积层,特征拼接concat和两个3x3的卷积层(ReLU)反复构成;

如果拿掉中间的灰色箭头(即copy and crop)可以发现整体结构与FCN非常相似,同样地都是从大到小(下采样,池化,编码)再从小到大(上采样,转置卷积,解码)。

而中间的灰色箭头就是FCN中的跳级结构,并且同样是逐层对应,不过结构更完整且简洁。

U-Net既兼顾了多层卷积网络深度提取特征的能力,又通过特征拼接(concat)模块保留了每层网络提取到的特征,最后获得的语义分割比起FCN就更平滑且细腻。

4.3 U-Net与Stable Diffusion

​​​​​​​

在上图中可以看到,U-Net是Stable Diffusion中的核心模块。U-Net主要在“扩散”循环中对高斯噪声矩阵进行迭代降噪,并且每次预测的噪声都由文本和timesteps进行引导,将预测的噪声在随机高斯噪声矩阵上去除,最终将随机高斯噪声矩阵转换成图片的隐特征。

在U-Net执行“扩散”循环的过程中,Content Embedding始终保持不变,而Time Embedding每次都会发生变化。每次U-Net预测的噪声都在Latent特征中减去,并且将迭代后的Latent作为U-Net的新输入。

  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值