patchCore理解:Towards Total Recall in Industrial Anomaly Detection
一、pathCore算法流程
pathCore中没有训练,它使用的backbone都是公开数据集中预训练的,例如ImageNet数据集上,pathCore所有的前提都是,当前的feature可以用来表征我的使用场景的特征,例如ImageNet与训练应用到工业领域,这个是应用是非常合理的,在这前提之上,通过大量正常样本建立一个“正常feature的地图",测试时看新的feature是否落到这个地图附近。
PatchCore和之前学习的Deep SVDD最大的特点是,Deep SVDD:学习一个正常空间,PatchCore:记住一个正常空间。

1、patch feature提取算法

2、GreedyCoresetSampler算法

2.1 降维操作
在GreedyCoresetSampler采样算法中,有一个降维的操作,代码如下:
def _reduce_features(self, features):
if features.shape[1] == self.dimension_to_project_features_to:
return features
mapper = torch.nn.Linear(features.shape[1], self.dimension_to_project_features_to, bias=False
)
_ = mapper.to(self.device)
features = features.to(self.device)
return mapper(features)
经过上面的操作,例如将[pic_name784, 4680] 的特征向量,降低维度到[pic_name784, 128],没有训练,直接使用torch.nn.Linear的随机权重初始化,进行线性变化,这个操作真的是厉害。
为什么随机Linear也有效,这个是patchCore论文里面的工程技巧,因为Coreset选择只需要保存feature之间的相对距离,原始向量为:x1,x2x_1, x_2x1,x2距离:∣∣x1−x2∣∣||x_1 - x_2||∣∣x1−x2∣∣,经过随机投影后的距离:W(x1−x2)W(x_1-x_2)W(x1−x2),论文里面说,高维空间随机映射到低维,如果维度足够,距离关系基本保持。
2.2 GreedyCoresetSampler
代码层面上的已经知道了算法的步骤,现在进一步去理解这个算法在干什么。第一次的时候coreset_anchor_distances中的每一行是向量row_i到所有向量的距离的平方和的根号(是一个很大的值,这里应该是coreset_anchor_distances初始化为一个很大值,之后逐渐被真实距离替换),找到A向量后 ,coreset_select_distance每行是A向量到row_i向量的距离,然后的操作就是将coreset_anchor_distances和coreset_select_distance在行的维度上cat,然后行的维度上取小值,形成新的coreset_anchor_distances,这里最小的值,应该所有向量到A 的距离,当前coreset={A};第二轮开始,去找coreset_anchor_distances里面的最大值,意思是距离A最远的那个向量,例如B,然后将所有向量到B的距离,和coreset_anchor_distances合并,里面找最小值,意思是,剩下的向量到A或者B的距离的最小值,其实就是到这个集合最近的距离,组成新的coreset_anchor_distances,然后再看哪个向量距离{A,B}最远,把这个最远的也选择上。
在patchCore中,从大量的feature中,挑出一小部分“最有代表性”的feature,用它们代表整个正常数据集,它不是在判断异常,而是在做正常特征库的压缩。
我的思考:
- GreedyCoresetSampler在patchCore中发挥它的作用的前提是,视觉相似性等同于Feature空间中的距离比较小,patchCore通常不自己训练一个异常检测Encoder,直接利用ImageNet预训练CNN的中间层特征;
- ImageNet已经让CNN学到了大量的视觉结构,这个是没有问题的,但是我觉得patchCore选择ImageNet最主要的原因是,patchCore是用来做工业检测的,工业上的图片目标的尺寸和角度和ImageNet是非常相似的,另外工业上的图片受光照影响比较小,因此用ImageNet也是比较合理;另外在工业图片中,异常往往是局部的,而正常数据的视觉结果相对稳定。
- ImageNet的预训练不适合监控视频
我的判断:patchCore不适合轨道异物检测
- 在工业场景中,相机、产品、拍摄距离、角度比较固定,使得工业图片的全局特征比较稳定,所以不同特征的同一位置的path(i,j)对用的空间位置基本相同,例如都是一个螺丝孔、焊点、轴承边缘等,所以在不同正常图片中,空间位置+局部视觉语义基本稳定,因此可以拆成大量path;
- 在轨道场景中,不同图片的相同位置的path,不一定具有相同视觉内容;
- imagenet的特征不适用轨道场景;
更多推荐

所有评论(0)