文章目录
- 轻量级网
- 1. [MobileNet_v1 2017](https://blog.youkuaiyun.com/qq_18315295/article/details/104214403)
- 2. [ShuffleNet_v1 2017](https://blog.youkuaiyun.com/qq_18315295/article/details/104222888)
- 3. [MobileNet_v2 2018CVPR](https://blog.youkuaiyun.com/qq_18315295/article/details/104229222)
- 4. [ShuffleNet_v2 2018ECCV](https://blog.youkuaiyun.com/qq_18315295/article/details/104241639)
- 5. [MoblieNet_v3 2019ICCV](https://blog.youkuaiyun.com/qq_18315295/article/details/104242873)
- 6. [SSD 2016ECCV](https://chenbo.blog.youkuaiyun.com/article/details/104095555)(目标检测不熟,好多东西待搞懂)
- 7. [YOLOv2 2017cvpr](https://chenbo.blog.youkuaiyun.com/article/details/104099435)
- 8. [FPN 2017cvpr](https://chenbo.blog.youkuaiyun.com/article/details/104111003)
- 9. [Mask RCNN 2017 ICCV](https://chenbo.blog.youkuaiyun.com/article/details/104114967)
- 10. [yolov3 2018cvpr](https://blog.youkuaiyun.com/qq_18315295/article/details/104137591)
- 11. [RefineDet 2018cvpr](https://blog.youkuaiyun.com/qq_18315295/article/details/104162699)
- 12. [Cascade R-CNN 2018cvpr](https://blog.youkuaiyun.com/qq_18315295/article/details/104176605)
- 13. [GA-RPN 2019cvpr](https://blog.youkuaiyun.com/qq_18315295/article/details/104190889)
- 14. [FSAF 2019CVPR](https://blog.youkuaiyun.com/qq_18315295/article/details/104195554)
轻量级网
1. MobileNet_v1 2017
深度可分离卷积
对
f
∗
f
∗
m
f*f*m
f∗f∗m特征图进行卷积,使用n个
k
∗
k
∗
m
k*k*m
k∗k∗m的卷积核进行普通卷积可转为深度可分离卷积,即先用m个
k
∗
k
∗
1
k*k*1
k∗k∗1的卷积核对特征图m个通道依次计算一次卷积形成
y
∗
y
∗
m
y*y*m
y∗y∗m的中间特征图,然后用
1
∗
1
1*1
1∗1的卷积来改变通道为n,以此将计算成本大减。

2. ShuffleNet_v1 2017
组卷积

可以看到,图中将输入数据分成了2组(组数为g),需要注意的是,这种分组只是在深度上进行划分,即某几个通道编为一组,这个具体的数量由(C1/g)决定。因为输出数据的改变,相应的,卷积核也需要做出同样的改变。即每组中卷积核的深度也就变成了(C1/g),而卷积核的大小是不需要改变的,此时每组的卷积核的个数就变成了(C2/g)个,而不是原来的C2了。然后用每组的卷积核同它们对应组内的输入数据卷积,得到了输出数据以后,再用concatenate的方式组合起来,最终的输出数据的通道仍旧是C2。也就是说,分组数g决定以后,那么我们将并行的运算g个相同的卷积过程,每个过程里(每组),输入数据为H1×W1×C1/g,卷积核大小为h1×w1×C1/g,一共有C2/g个,输出数据为H2×W2×C2/g。
进行分组卷积后能极大地减少参数。比如当输入通道为256,输出通道也为256,kernel size为3×3,不做Group conv参数为256×3×3×256。实施分组卷积时,若group为8,每个group的input channel和output channel均为32,参数为8×32×3×3×32,是原来的八分之一。Group conv最后每一组输出的feature maps应该是以concatenate的方式组合。
通道混洗

如上图c,为了防止组卷积通道之间的信息不流通,可以通过通道混洗操作有效而优雅地实现(图(c)):假设一个具有g个组的卷积层,其输出具有g×n个通道;我们首先将输出通道的尺寸调整为(g,n),进行转置,然后再变平,作为下一层的输入(比如3组,每组4个通道,即
3
∗
4
3*4
3∗4,转置后变成
4
∗
3
4*3
4∗3,再摊平)。
ShuffleNet单元
瓶颈结构

一个具有瓶颈结构的残差单元由 conv1x1、conv3x3 和 conv1x1 组成。第一个 conv1x1 减少输入通道的维度,这降低了后续 conv3x3 相对高昂的计算成本。最后的 con1x1 恢复输出通道的维度。

ShuffleNet单元是在resnet(Bottleneck 版本)的瓶颈结构的基础上改进的。a)具有深度卷积(DWConv)的瓶颈单元; b)具有按点分组卷积(GConv)和通道混洗的ShuffleNet单元; c)步幅= 2的ShuffleNet单元
3. MobileNet_v2 2018CVPR

Input是一张2维数据,其中兴趣流行是蓝色的螺纹线;本例使用矩阵T将数据嵌入到n维空间中,后接ReLU,再使用T的逆将其投影回2D平面。公式表示如下

从上图中可以看出,维度比较低时(dim=2,3),信息丢失严重,但维度比较高时(dim=15,30),信息保存的更多。
我们想要兴趣流行存在低维空间中,即想要提升效果,维度是要低一点。但是维度如果低的话,激活变换ReLU函数可能会滤除很多有用信息,而ReLU对于没有滤除的部分,即非零的部分的作用是一个线性分类器。
针对这个问题,本文提出了一个linear bottleneck结构,即将bottleneck结构中的最后一个relu激活函数改为线性变换。
Inverted residuals
深度卷积本身没有改变通道的能力,来的是多少通道输出就是多少通道。如果来的通道很少的话,DW深度卷积只能在低维度上工作,这样效果并不会很好,所以我们要“扩张”通道。

从上图可看出,这个结构就是一个反向的残差模块。

步长为1时,先进行1×1卷积升维,再进行深度卷积提取特征,再通过Linear的逐点卷积降维。将input与output相加,形成残差结构。步长为2时,因为input与output的尺寸不符,因此不添加shortcut结构,其余均一致。
4. ShuffleNet_v2 2018ECCV
Practical Guidelines for Efficient Network Design
本文建议网络体系结构设计应考虑诸如速度之类的直接量度,而不是像FLOPs这样的间接量度,据此根据实验证明了设计高效网络的四个指导意见:
G1. 相等的通道宽度可最大程度地减少内存访问成本(MAC),即输入通道等于输出通道
G2. 过多的组卷积会增加MAC
G3. 网络碎片会降低并行度
G4. 逐元素操作会占用大量时间
ShuffleNet V2: an Efficient Architecture
根据上述四条规则,设计如下单元结构

如上图c,在每个单元的开头,将c个特征通道的输入分为两个分支,分别具有c-c0和c0通道,保留一个分支作为标识。另一个分支由三个具有相同输入和输出通道的卷积组成,以满足G1。两个1×1卷积不再按组进行,这部分遵循G2。卷积之后,将两个分支连接起来,相对于单元输入通道数不变(G1)。然后使用shuffleNet v1中的“信道混洗”来启用两个分支之间的信息通信。同时取消了shortcut连接,像ReLU和深度卷积这样的元素操作仅存在于一个分支中,降低了逐元素操作(G4)。
对于空间下采样,单位略有修改,如图(d)所示。通道拆分运算符已删除。因此,输出通道的数量增加了一倍。
5. MoblieNet_v3 2019ICCV
网络搜索(不是很懂)
网络结构

网络的改进地方是在mobilenet v2的最后一个阶段上。将原先的反残差结构去掉,直接用1*1的卷积来扩展到高维的特征空间,这样将等待时间减少了7毫秒,这是运行时间的11%,并减少了3000万次MAdds的操作次数,而几乎没有准确性的损失。同时在mobilenet v2中的最初的过滤器由原先的32改成16,并改为硬swish激活。
h-swish激活函数
s
w
i
s
h
(
x
)
=
x
∗
s
i
g
m
o
i
d
(
x
)
swish(x)=x*sigmoid(x)
swish(x)=x∗sigmoid(x)
上述为swish激活函数,替代relu可以提高网络的准确度,但在嵌入式环境中却带来了非零成本,因为S型函数在移动设备上的计算成本更高。为解决该问题,本文提出了swish的硬版本
h
−
s
w
i
s
h
(
x
)
=
x
r
e
l
u
6
(
x
+
3
)
6
h-swish(x)=x\frac {relu6(x+3)}{6}
h−swish(x)=x6relu6(x+3)
这种非线性在保持精度的情况下带了了很多优势,首先ReLU6在众多软硬件框架中都可以实现,其次量化时避免了数值精度的损失,运行快。该激活函数仅在更深层次中使用就可以实现大部分收益。

6. SSD 2016ECCV(目标检测不熟,好多东西待搞懂)

流程大致分三步:
1、vgg16提取特征
2、多尺度特征图目标检测(定位分类)
3、筛选出最终结果
602



被折叠的 条评论
为什么被折叠?



