笔记参考
1.知乎回答:语义分割如何走下去
截至2020-5
找思路方法
链接:https://www.zhihu.com/question/390783647/answer/1221984335
(1)手动设计网络结构 -> NAS搜索; (2)固定感受野 -> 引入空间注意力做感受野自动调节; (3)效果提升不上去 -> 换个思路做实时分割来对比结果; (4)有监督太热门 -> 引入弱监督 (GAN, 知识蒸馏, …) + trick = 差不多的score; (5)DNN太枯燥,融入点传统视觉的方法搞成end-to-end训练; (6)CNN太单调,配合GCN搞点悬念; (7)嫌2D太low逼,转3D点云分割; (8)将CNN的套路在Transformer做多一遍;
觉得太懒?积木堆起:A+B,A+B+C,A+B+C+D,…
积木总结: A-注意力机制:SE ~ Non-local ~ CcNet ~ GC-Net ~ Gate ~ CBAM ~ Dual Attention ~ Spatial Attention ~ Channel Attention【只要你能熟练的掌握加法、乘法、并行、串行四大法则,外加知道一点基本矩阵运算规则(如:HW * WH = HH)和sigmoid/softmax操作,那么你就能随意的生成很多种注意力机制】
B-卷积结构:Residual block ~ Bottle-neck block ~ Split-Attention block ~ Depthwise separable convolution ~ Recurrent convolution ~ Group convolution ~ Dilated convolution ~ Octave convolution ~ Ghost convolution ~ … 【直接替换掉原始卷积块就完事了】
C-多尺度模块:ASPP ~ PPM ~ DCM ~ DenseASPP ~ FPA ~ OCNet ~ MPM… 【好好把ASPP和PPM这两个模块理解一下,搞多/减少几条分支,并联改成串联或者串并联结合,每个分支搞点加权,再结合点注意力或者替换卷积又可以组装上百种新结构出来了】
D-损失函数:Focal loss ~ Dice loss ~ BCE loss ~ Wetight loss ~ Boundary loss ~ Lovász-Softmax loss ~ TopK loss ~ Hausdorff distance(HD) loss ~ Sensitivity-Specificity (SS) loss ~ Distance penalized CE loss ~ contour-aware Loss…
E-池化结构:Max pooling ~ Average pooling ~ Random pooling ~ Strip Pooling ~ Mixed Pooling ~…
F-归一化模块:Batch Normalization ~Layer Normalization ~ Instance Normalization ~ Group Normalization ~ Switchable Normalization ~ Filter Response Normalization…
G-学习衰减策略:StepLR ~ MultiStepLR ~ ExponentialLR ~ CosineAnnealingLR ~ ReduceLROnPlateau ~…
H-优化算法:BGD ~ SGD ~ Adam ~ RMSProp ~ Lookahead ~…
I-数据增强:水平翻转、垂直翻转、旋转、平移、缩放、裁剪、擦除、反射变换 ~ 亮度、对比度、饱和度、色彩抖动、对比度变换 ~ 锐化、直方图均衡、Gamma增强、PCA白化、高斯噪声、GAN ~ Mixup
J-骨干网络:LeNet ~ ResNet ~ DenseNet ~ VGGNet ~ GoogLeNet ~ Res2Net ~ ResNeXt ~ InceptionNet ~ SqueezeNet ~ ShuffleNet ~ SENet ~ DPNet ~ MobileNet ~NasNet ~ DetNet ~ EfficientNet ~ …
ps未来的方案走势,最好的参考还是参照人脑的语义分割过程,感觉人脑是先模式判决然后分割的,这样在分割的时候就引入了判决结果带来的先验了。
把语义分割几个主要子方向的论文猛看,比如弱监督语义分割、域自适应语义分割、小样本语义分割,甚至可以尝试一下基于神经架构搜索的语义分割。你看论文时,挑一些最新的、优质的论文,把每个细节360度无死角的全部吃透,然后把**论文复现一遍(最好是复现开源代码了的),**我觉得你只要足够熟练,肯定会有idea,这些论文都是人为创造出来的,都是遵循一定套路的!要在对这个领域非常熟悉的情况下再去改架构,不要略懂一点就盲目地去改,盲目地改肯定不行的,你要一眼就能看出别人魔改结构的套路才行!
语义分割的好处,首先,可以将分割问题看做其他问题的backbone的优化,所以分割所做的各种module,可以直接加到其他方案中(形成所谓A+B的套路方法),反之亦然。其次,同语义分割类似的像素级应用,把最后一层softmax换成回归,你将收获一大批其他同类型问题(同理可以套用A+B到C等的相关套路)。
文章核心
一篇文章的核心我总结了下大概是: 你做这个工作有什么意义?-> 这个工作目前还存在什么挑战->以前,现有的方法是如何解决的?它们还存在什么缺陷?->你的方法同别人的方法有何不同?你为什么能解决的比别人更好?创新性在哪?「这里故事要讲的好」->实验图表吹吹吹…
实现
链接:https://www.zhihu.com/question/390783647/answer/2359428992
语义分割实现: 第一种方法是滑动窗口,我们将输入图像分解成许多小的局部图像,但是这种方法在计算上会很昂贵。所以,我们在实践中并没有真正使用这个方法。 另一种方法是完全卷积网络,其中网络有一整堆卷积层,没有完全连接的层,从而保留了输入的空间大小,这在计算上也是极其昂贵的。 第三个也是最好的一个方法,那就是对图像进行上采样和下采样。因此,我们不需要对图像的完整空间分辨率进行所有卷积,我们可能会在原始分辨率下遍历少量卷积层,然后对该特征图进行下采样,然后对其进行上采样。
|