图像分割的实用技巧
本文转自 | 视觉算法 
一个经历了 39 场 Kaggle 比赛的团队在 reddit 上发帖表示,他们整理了一份结构化的图像分割技巧列表,涵盖数据增强、建模、损失函数、训练技巧等多个方面,不失为一份可以参考的图像分割技巧资料。 



- 使用高斯差分方法进行斑点检测; 
- 使用基于图像块的输入进行训练,以减少训练时间; 
- 加载数据时,用 cudf 替换 Pandas; 
- 确保所有图像保持相同的方向; 
- 使用 OpenCV 对所有常规图像进行预处理; 
- 采用自主学习并手动添加注释; 
- 将所有图像调整成相同的分辨率,以便将相同的模型用于不同厚度的扫描等。 

- 用 albumentations 包进行数据增强; 
- 使用 90 度随机旋转; 
- 使用水平、垂直翻转或这两个方向都做翻转; 
- 尝试进行复杂的几何变换,包括弹性变换、透视变换、分段仿射变换、枕形失真; 
- 应用随机 HSV; 
- 使用损失较小的增强数据进行泛化,以防止有用图像信息丢失; 
- 应用通道 shuffle; 
- 根据类别频率进行数据扩充; 
- 应用高斯噪声等。 
- 使用基于 U-net 的架构; 
- 用 inception-ResNet v2 架构得到具备不同感受野的训练特征; 
- 经过对抗训练的 Siamese 网络; 
- 以密集(FC)层作为最后一层的 ResNet50、Xception、Inception ResNet v2 x 5; 
- 使用全局最大池化层,无论输入尺寸如何,该层都将返回固定长度的输出; 
- 使用堆叠的膨胀卷积; 
- VoxelNet; 
- 用 concat 和 conv1x1 替换 LinkNet 跳跃连接中的加号; 
- 广义平均池化; 
- 用 3D 卷积网络在图像上滑动; 
- 使用在 Imagenet 数据集上预训练的 ResNet152 作为特征提取器等。 

- dice 系数:能够很好地处理不平衡数据; 
- 加权边界损失:减少预测分割与真值之间的距离; 
- MultiLabelSoftMarginLoss:基于最大熵优化多标签一对多损失的标准; 
- 具备 logit 损失的平衡交叉熵(Balanced cross entropy,BCE):以特定系数权衡正例和负例; 
- …… 

- 尝试不同的学习率; 
- 尝试不同批大小; 
- 使用带有动量项的 SDG,并且手动设置学习率衰减; 
- 数据增强过多会降低准确率; 
- 使用裁剪后的图像训练,并在完整的图像上做预测; 
- 在学习速率调整上使用 Keras 中的 ReduceLROnPlateau() 方法; 
- 冻结除了最后一层以外所有的网络层,并使用 Stage1 中的 1000 张图片进行模型微调; 
- 开发一个能使标签更加均匀的采样器; 
- 使用类别感知采样(class aware sampling)等。 



- 测试时增强(Test Time Augmentation,TTA):向模型多次展示经过不同随机变换的图像,取预测平均值; 
- 均衡使用测试预测概率,而不是仅使用预测类; 
- 将几何平均数应用于预测; 
- 在推理过程中将图块重叠,使每个边缘像素至少覆盖 3 次,因为 UNET 在边缘区域范围的预测往往较差; 
- 非极大抑制和边界框收缩; 
- 分水岭后处理:在实例分割问题中分离对象。 

 End
 End 
声明:部分内容来源于网络,仅供读者学术交流之目的,文章版权归原作者所有。如有不妥,请联系删除。

