patchcore论文地址
略
样本用 x x x表示
label定义:0是正常样本(nominal),1是异常样本(anomalous)。 y x ∈ { 0 , 1 } y_x \in \{ 0 , 1\} yx∈{0,1}
训练阶段使用正常样本 : ∀ x ∈ X N : y x = 0 {\forall} x \in X_N : y_x=0 ∀x∈XN:yx=0
测试阶段样本: ∀ x ∈ X T : y x ∈ { 0 , 1 } {\forall x \in X_T : y_x \in \{0 ,1\}} ∀x∈XT:yx∈{0,1}
patchcore使用在ImageNet上的预训练网络,用符号 ϕ \phi ϕ表示
符号 ϕ i j = ϕ j ( x i ) \phi_{ij} = \phi_j(x_i) ϕij=ϕj(xi)表示第 i i i个样本 x i ∈ X x_i \in X xi∈X在网络 ϕ \phi ϕ第 j j j层feature map
本文使用ResNet50最终输出的spatial resolution blocks的第 j ∈ { 1 , 2 , 3 , 4 } j\in \{ 1,2,3,4\} j∈{1,2,3,4}层
采用网络最后几层输出会出现的问题:
本文采用a memory bank M M M(在 patch level),避免过多的偏向imageNet
记第 i i i张图片,第 j j j层的特征图为 ϕ i j ∈ R c × h × w \phi_{ij} \in R_{c \times h\times w} ϕij∈Rc×h×w
特征图上的点用 ϕ i j ( h , w ) = ϕ j ( x i , h , w ) \phi_{ij}(h,w) =\phi_j(x_i,h,w) ϕij(h,w)=ϕj(xi,h,w)
each patch-representation operates on a large enough receptive
field size to account for meaningful anomalous context robust to local spatial variations.
本文采用感受野更大的patch(而不是特征图上的点)
This motivates a local neighbourhood aggregation when
composing each patch-level feature representation to increase receptive field size and robustness to small spatial deviations without losing spatial resolution or usability of feature maps.
记点 ( h , w ) (h,w) (h,w)周围的点集为:
这个公式可以理解为 以 ( h , w ) (h,w) (h,w)为中心,以 p p p为直径的正方形包围住的点
那么围绕这些点计算的特征图上的点为
locally aware patch-feature collection 可以表示为:
其中 striding parameter: s
最后 PatchCore memory bank
可以理解为 所有训练集的图片上所有的点 ( h , w ) (h,w) (h,w)
以这个点为中心计算它的邻居点集,得到的特征值
这些特征值的集合作为PatchCore memory bank
根据上面计算的PatchCore memory bank直接用是不现实的,因为太大了。所以需要计算一个 M C M_C MC(小一点的)d代替 M M M
什么样的子集能代替原来的集合呢?
首先取任意一个子集 M C M_C MC
对于测试图片 x t e s t x^{test} xtest,计算测试图片的patch-feature 得到 m t e s t m^{test} mtest
和上面的过程一样,还是求集合 P ( x t e s t ) P(x^{test}) P(xtest)到集合 M M M的距离,标记距离的两个点为
m t e s t , ∗ ∈ P ( x t e s t ) , m ∗ ∈ M m^{test,*} \in P(x^{test}),m^*\in M mtest,∗∈P(xtest),m∗∈M
解释
计算分数
N ( m ) N(m) N(m)是指 m ∗ m^* m∗的最近邻点集,这里实际上是计算了 一个softmax