EfficientNetAD 算法是基于S学生-T教师网络结构STPM进行改进的,在原有S-T的结构上增加了autoencoder自编码器,用于检测逻辑异常。
一.简单总结
用一个在ImageNet上已经训练完成的wide_resnet_101模型对一个特别浅的卷积模型PDN进行蒸馏,得到教师模型teacher,这个PDN最后输出特征图的感受野33x33,这个PDN就是论文中所谓的33x33patch网络,同时student网络也是跟teacher网络一样的结构,只是权重是随机初始化的。除此之外还有一个autoencoder自编码器。在训练的时候一张图像会分别送入teacher,student,autoencoder,输出的结果会相互依次计算损失,这个3个损失之和就是总损失,用于反向传播。在推理时,(teacher-student)x0.5+(autoencoder-student)x0.5就是最后的结果mask。
二.具体说明
1.PND网络
PND是一个浅层的全卷积网络,最后一层的感受野大小33x33,为啥要用浅层的卷积网络呢?主要是对于工业异常检测的场景来说,很多结构性异常(比如沾污,划痕等)是可以通过局部特征进行识别定位的。而网络越深,其可视野越大,提取的特征越偏向于“全局”,所以浅层网络可以通过更容易将可视野约束在较小范围,且不同patch的异常不会影响到当前patch的特征,从而有利于异常的定位。还有一个优势是浅层网络的计算速度更快内存占用更小。
1.自编码器
工业场景下的异常可分为结构性异常和逻辑性异常,结构性异常在上文提到过(如沾污、划痕等局部异常),逻辑性异常一般指违背了逻辑约束的异常(如部件错位,丢失,多余,违背几何约束如长度等)。S-T结构主要用来检测结构性异常,本论文使用自编码器来检测逻辑性异常。自编码器的角色是去学习teacher的重建特征,然后将学到的重建特征再教给student。