Dino 방식으로 학습된 transformer 아키텍처를 잘 활용하면, 아주 간단하게 multi-class anomaly detection을 수행할 수 있다. 1) Noisy Bottleneck 2) Linear Attention 3) Loose Constraint 4) Loose Loss의 4개의 components로 구성. 각 component가 identity shortcut 막을 수 있다고 주장함. 이때의 성능은, 기존의 one-class-one-model sota를 상회한다.
Method Highlights
전체적인 문제의식은 uniAD랑 비슷함. recon 방식으로 multi-class anomaly detection을 접근했을 때 가장 문제가 되는 점은 identity shortcut임 (이 논문에서는 identity mapping이라고 하지만). 그걸 별도의 novel한 module을 넣지 않고서도 간단하게 해결할 수 있다는 취지임.
backbone
backbone은 DINOv2-R (register token 사용한 버전)로 한정 지음 -> 다른 backbone에서도 실험을 하긴 했으나, 전체적으로 CL에서 높은 성능을 보여줌.
=> 그래도 전체적으로 성능이 괜찮아보임. 약간 recon 방식에서 굳이 scratch로 학습을 하지 않고 encoder는 얼려도 된다 이런 걸로 보인다 (distillation으로 봐도 될 것 같다. distillation에서 backbone을 바꾸면? 이런 느낌)
noisy bottleneck
이 부분은 feature noise를 denoising하는 것을 목적으로 하고, decoder에 encoder feature를 먹여줄 때 (bottleneck), bottleneck 부분인 MLP에 dropout을 적용함으로써 noise를 주는 것과 동일한 작용을 한다고 함 (이 부분은 상당히 흥미롭). dropout이 기존에는 볼 때마다 다른 representation을 줌으로써, network의 generality를 높이는 방향으로 갔지만 여기서는 noise로 적용하는 형태로 해석한다는 점이 흥미롭..
linear attention
Decoder 부분의 attention을 softmax attention에서 linear attention으로 대체하면, 이웃하는 영역에 더 집중하는 경향이 사라진다 (논문에서는 unfocusing ability라고 칭함). 이 부분이 기존의 image recognition 분야에서는 한계로 작용했지만, 오히려 여기에서는 identity shortcut을 방지할 수 있다는 측면에서 접근. 이 부분은 UniAD의 neighbor-masked attention과 비슷한 접근이지만, 훨씬 간단하게 implement할 수 있음.
loose reconstruction
loose constraint
reconstruction 에러 term에 어떤 레이어를 넣어줄 것이냐라고 보면 됨. layer-to-layer로 넣어주면, identity shortcut에 취약해질 수밖에 없음 (이 부분이 distillation에서는 도움이 됐지만, 오히려 recon에서는 방해된다고 주장. 근데 내가 볼 땐 이 부분은 distillation에서도 비슷하지 않을까 싶음. kd에서도 over-generalization이 문제가 되는데 내가 봤을 땐 이게 identity shortcut이나 비슷하지 않나 싶은 생각). 어쨌든, layer를 add 형태로 aggregate해서 decoder의 aggregated feature와 매칭해주는 형태임 (이게 layer2layer correspondence가 loose해지기 때문이라 함). 다만, 여기서 앞단 뒷단으로 grouping해서 평균낸 후 loss term에 넣어주는데 이는 1 group에서는 detection 성능은 괜찮은데 localization 성능이 떨어지기 때문이라고 함.
loose loss
point-by-point로 reconstruction할 때, 잘 restore된 feature point의 gradient는 0.1로 downscale해줌 (아예 sg 걸어버리면 학습이 잘 안되더라). 이 부분은 ReContrast에서 가져옴.
Experiment Highlights
실험 세팅에 대한 정보.
성능은 기존 방법론 압살..ㅎㅎ 다만, backbone의 영향이 제법 컸을 것으로 보임.
448로 학습하길래 resolution 측면에서 unfair하지 않을까 싶었는데, low resolution에서도 실험한 결과 충분히 잘 나오더라.
베이스라인부터가 아주 강력함. 오히려 Linear Attention이나 Loose constraint 같은 경우에는 그 자체로는 도움이 안되고, denoising task를 condition으로 했을 때 더 도움이 되는 구조. 이미 근데 포화가 많이 되어서 뭔가 요소를 추가할 때부터 드라마틱하게 오르긴 어려워보임 (Real-IAD에서는 안보여줬을라나)
이 결과를 보면 솔직히 linear attention이 크게 의미 있나 싶긴 하다. 이미 너무 포화되어서 성능 변화를 보여주기 까다로울 듯.
scalable하다고는 하는데, backbone에 따라 너무 영향을 많이 받을 듯해서 의미있는 결과일까 싶음.
backbone을 바꿔가면서 실험을 많이 했음. 개인적으로 궁금한 건 backbone을 바꿨을 때도 저 ablation의 기조가 유지가 될까 하는 점이긴 함 (오히려 유지가 된다면, 좀 성능이 약한 backbone에서 보여주는 것도 하나 추가하면 더 설득력이 있었을 것 같음). 일단 backbone의 영향력이 엄청 크긴 큰 것 같다. 다 어느 정도 기존거를 상회하는 점수를 보임 (MAE 제외. 내가 볼 땐 pixel recon task 자체가 ad에서 generality를 너무 떨어뜨리는 것 같음)
Strengths
압도적인 성능
흥미로운 발견 & 발상의 전환
Weaknesses
이미 backbone이 너무 강력해서 backbone의 영향이 많았을 거 같고, 제안한 component가 크게 영향을 주었을까 싶은 의구심 (dino는 다른 방식으로 해도 잘 나옴. backbone이 갖는 representation 퀄리티가 이미 너무 좋지 않았을까 하는 느낌.)
novelty가 떨어짐 (발상의 전환이 novel하기도 하고, 애초에 fancy한 module을 개발하지 않고도 잘 나온다는 게 셀링포인트기도 해서 큰 weakness는 아닐 것 같음)
Summary
Dino 방식으로 학습된 transformer 아키텍처를 잘 활용하면, 아주 간단하게 multi-class anomaly detection을 수행할 수 있다. 1) Noisy Bottleneck 2) Linear Attention 3) Loose Constraint 4) Loose Loss의 4개의 components로 구성. 각 component가 identity shortcut 막을 수 있다고 주장함. 이때의 성능은, 기존의 one-class-one-model sota를 상회한다.
Method Highlights
전체적인 문제의식은 uniAD랑 비슷함. recon 방식으로 multi-class anomaly detection을 접근했을 때 가장 문제가 되는 점은 identity shortcut임 (이 논문에서는 identity mapping이라고 하지만). 그걸 별도의 novel한 module을 넣지 않고서도 간단하게 해결할 수 있다는 취지임.
backbone
backbone은 DINOv2-R (register token 사용한 버전)로 한정 지음 -> 다른 backbone에서도 실험을 하긴 했으나, 전체적으로 CL에서 높은 성능을 보여줌. => 그래도 전체적으로 성능이 괜찮아보임. 약간 recon 방식에서 굳이 scratch로 학습을 하지 않고 encoder는 얼려도 된다 이런 걸로 보인다 (distillation으로 봐도 될 것 같다. distillation에서 backbone을 바꾸면? 이런 느낌)
noisy bottleneck
이 부분은 feature noise를 denoising하는 것을 목적으로 하고, decoder에 encoder feature를 먹여줄 때 (bottleneck), bottleneck 부분인 MLP에 dropout을 적용함으로써 noise를 주는 것과 동일한 작용을 한다고 함 (이 부분은 상당히 흥미롭). dropout이 기존에는 볼 때마다 다른 representation을 줌으로써, network의 generality를 높이는 방향으로 갔지만 여기서는 noise로 적용하는 형태로 해석한다는 점이 흥미롭..
linear attention
Decoder 부분의 attention을 softmax attention에서 linear attention으로 대체하면, 이웃하는 영역에 더 집중하는 경향이 사라진다 (논문에서는 unfocusing ability라고 칭함). 이 부분이 기존의 image recognition 분야에서는 한계로 작용했지만, 오히려 여기에서는 identity shortcut을 방지할 수 있다는 측면에서 접근. 이 부분은 UniAD의 neighbor-masked attention과 비슷한 접근이지만, 훨씬 간단하게 implement할 수 있음.
loose reconstruction
loose constraint reconstruction 에러 term에 어떤 레이어를 넣어줄 것이냐라고 보면 됨. layer-to-layer로 넣어주면, identity shortcut에 취약해질 수밖에 없음 (이 부분이 distillation에서는 도움이 됐지만, 오히려 recon에서는 방해된다고 주장. 근데 내가 볼 땐 이 부분은 distillation에서도 비슷하지 않을까 싶음. kd에서도 over-generalization이 문제가 되는데 내가 봤을 땐 이게 identity shortcut이나 비슷하지 않나 싶은 생각). 어쨌든, layer를 add 형태로 aggregate해서 decoder의 aggregated feature와 매칭해주는 형태임 (이게 layer2layer correspondence가 loose해지기 때문이라 함). 다만, 여기서 앞단 뒷단으로 grouping해서 평균낸 후 loss term에 넣어주는데 이는 1 group에서는 detection 성능은 괜찮은데 localization 성능이 떨어지기 때문이라고 함.
loose loss point-by-point로 reconstruction할 때, 잘 restore된 feature point의 gradient는 0.1로 downscale해줌 (아예 sg 걸어버리면 학습이 잘 안되더라). 이 부분은 ReContrast에서 가져옴.
Experiment Highlights
실험 세팅에 대한 정보.
성능은 기존 방법론 압살..ㅎㅎ 다만, backbone의 영향이 제법 컸을 것으로 보임.
448로 학습하길래 resolution 측면에서 unfair하지 않을까 싶었는데, low resolution에서도 실험한 결과 충분히 잘 나오더라.
베이스라인부터가 아주 강력함. 오히려 Linear Attention이나 Loose constraint 같은 경우에는 그 자체로는 도움이 안되고, denoising task를 condition으로 했을 때 더 도움이 되는 구조. 이미 근데 포화가 많이 되어서 뭔가 요소를 추가할 때부터 드라마틱하게 오르긴 어려워보임 (Real-IAD에서는 안보여줬을라나)
이 결과를 보면 솔직히 linear attention이 크게 의미 있나 싶긴 하다. 이미 너무 포화되어서 성능 변화를 보여주기 까다로울 듯.
scalable하다고는 하는데, backbone에 따라 너무 영향을 많이 받을 듯해서 의미있는 결과일까 싶음.
backbone을 바꿔가면서 실험을 많이 했음. 개인적으로 궁금한 건 backbone을 바꿨을 때도 저 ablation의 기조가 유지가 될까 하는 점이긴 함 (오히려 유지가 된다면, 좀 성능이 약한 backbone에서 보여주는 것도 하나 추가하면 더 설득력이 있었을 것 같음). 일단 backbone의 영향력이 엄청 크긴 큰 것 같다. 다 어느 정도 기존거를 상회하는 점수를 보임 (MAE 제외. 내가 볼 땐 pixel recon task 자체가 ad에서 generality를 너무 떨어뜨리는 것 같음)
Strengths
Weaknesses