乐于分享
好东西不私藏

AVA-DINO源码拆解:我尝试把零样本异常检测塞进YOLO后,发现了一些有意思的东西

AVA-DINO源码拆解:我尝试把零样本异常检测塞进YOLO后,发现了一些有意思的东西
一、AVA-DINO为什么火了?

大家好,我是小创,喜欢小创的话那就点个赞吧!

最近异常检测圈有个特别有意思的现象。

很多传统方法:

  • PatchCore
  • PaDiM
  • FastFlow

开始被新的DINO路线疯狂超越。

尤其是:

AVA-DINO

很多公开测试中:

面对从未见过的异常。

依然能保持极强检测能力。

这意味着:

模型开始拥有:

零样本异常检测能力。

但问题来了。

AVA-DINO到底做了什么?

其实核心并不复杂。

它本质上干了三件事:

  • DINO特征提取
  • 多尺度特征融合
  • 异常区域定位

今天直接拆源码。


二、AVA-DINO核心结构

其实可以简化成:
Image   │   ▼DINO Backbone   │   ▼Multi-Scale Feature   │   ▼Feature Matching   │   ▼Anomaly Score Map   │   ▼Anomaly Localization
核心其实就这几步。

三、第一步:提取DINO特征

DINO最大的优势:

不是分类。

而是:

特征表达能力极强

PyTorch代码:

from transformers import AutoModelbackbone = AutoModel.from_pretrained(    "facebook/dinov2-base")
提取特征:
features = backbone(pixel_values)feature_map = features.last_hidden_state
这里得到:
(B,N,C)
例如:
1 x 1025 x 768

为什么DINO这么强?

因为它学到的:

不是产品。

而是:

  • 边缘
  • 结构
  • 纹理
  • 语义

所以:

换产品依然有效。


四、多尺度特征融合

AVA-DINO里面非常关键的一步:

把多个层特征拿出来。

例如:

feat1feat2feat3feat4
融合:
fusion = torch.cat([    feat1,    feat2,    feat3,    feat4], dim=1)

为什么?

因为:

异常可能出现在:

  • 微观层
  • 中尺度
  • 全局层

只看一个尺度很容易漏检。


五、异常分数计算

这里才是核心。

AVA-DINO其实在做:

Feature Distance

例如:

正常样本特征:

normal_feature
当前样本:
test_feature
计算距离:
distance = torch.norm(    test_feature - normal_feature,    p=2,    dim=1)

距离越大:

越可能异常。


六、工业版改进思路

这里是公众号最有价值的部分。

很多论文不会讲。

但工业项目特别重要。

方案1

替换YOLO Backbone

例如:

YOLO11DINO BackboneNeckHead

很多小缺陷:

召回率会明显提升。

方案2

DINO + Geometry Attention

结构:

Image ↓DINO ↓Geometry Attention ↓Detection Head

特别适合:

  • 裂纹
  • 毛刺
  • 崩边

Geometry Attention代码

class GeometryAttention(nn.Module):    def __init__(self,c):        super().__init__()        self.conv_h = nn.Conv2d(            c,c,(1,7),            padding=(0,3)        )        self.conv_v = nn.Conv2d(            c,c,(7,1),            padding=(3,0)        )    def forward(self,x):        h = self.conv_h(x)        v = self.conv_v(x)        attn = torch.sigmoid(h+v)        return x * attn

七、工业视觉真正值得关注的地方

很多人以为:

AVA-DINO厉害在:

零样本。

但我觉得:

真正可怕的是:

泛化能力。

过去工业AI:

逻辑是:

收集缺陷标注缺陷训练缺陷识别缺陷
未来可能变成:
学习正常产品理解产品结构自动发现异常
这才是AVA-DINO最值得关注的地方。