fast-reid现有的训练策略
目录
1. 数据预处理
2.Backbone
3.Aggregation
4.Head
5.loss
6.训练策略
7.自己的试验
flip(镜像),Random erasing,Random patch,Cutout,Auto-augment
Random erasing:在不同的epoch中在原始图像中去除一个预先定义大小范围的矩形块,这个大小范围为原图的高宽的1/6~1/2之间;
Random patch:随机补丁(Random patch)和随机擦除操作类似,不同的是是通过从其他的图像来对矩形块(补丁)进行填充;
Cutout:该操作则是把原始图像中去掉的矩形块的位置用0来进行填充;三者对比参考下图;
Auto-augment:源自《AutoAugment: Learning Augmentation Strategies from Data》
ResNet,ResNeXt,ResNeSt,增加attention-like non-local module,instance batch normalization(IBN)module在主干中;
什么是IBN?
IBN是由Instance Normalization(IN)和Batch Normalization构成,有增强学习和泛化能力的作用;IN常用于风格迁移任务中,BN和IN的区别在于BN用的mean和variance是从一个batch中所有的图片统计的,而IN的mean和variance是从单张图片中统计的;
其中γ和β对于每个channel都是不同的;直白而言,IN是每张图片在每个channel都进行normalization;而BN是当前的channel,该batch中所有图片一起进行normalization;
IBN原论文链接:https://arxiv.org/pdf/1807.09441.pdf
IN和BN的区别:Batch normalization和Instance normalization的对比_吃了亏还皮的博客-CSDN博客_instance normalization
什么是attention-like non-local module?
convolution和recurrent都是对局部区域进行的操作,所以它们是典型的local operations;non-local operations用于捕获长距离依赖(long-range dependencies),即如何建立图像上两个有一定距离的像素之间的联系,如何建立视频里两帧的联系,如何建立一段话中不同词的联系等。
——《Non-local Neural Networks》
论文链接:https://arxiv.org/pdf/1711.07971v1.pdf
max pooling,average pooling, GeM pooling和attention pooling.
batch normalization(BN)head(bn层+一个决策层), Linear head(只有一个决策层(decision layer))和Reduction head(conv+bn+relu+dropout).
交叉熵loss(cross-entropy loss),Arcface loss,Circle loss,Triplet loss
Learning rate warm-up,Backbone freeze
fast-reid源码中交叉熵损失默认使用的label smoothing,调整参数可以使用自适应的标签平滑;
自己也针对其中的一些策略做了对比试验,发现是有明显的涨点效果(在行李箱reid数据上)做的实验对比:
第一次的测试结果:
第二次测试结果:
第四次测试结果: