caoyunkang / CDO

[TII 2023] Collaborative Discrepancy Optimization for Reliable Image Anomaly Localization
MIT License
61 stars 7 forks source link

关于模型测试导出onnx #8

Open ZHIZIHUABU opened 1 year ago

ZHIZIHUABU commented 1 year ago

您好,我发现模型由两部分组成,其中专家模型(ME)不进行训练,学生模型(MA)是我们需要训练的模型; 但是测试代码中对专家模型(ME)和学生模型(MA)的输出进行后处理,为什么只保存了学生模型的权重呢? 如果我需要导出onnx,那么是否需要将整个模型的权重进行保存并加载,然后调用cal_am对模型的output进行输出?

caoyunkang commented 1 year ago

@ZHIZIHUABU 您好!为减少保存文件时的存储占用,我仅保存了优化后的学生模型(MA),而专家模型(ME)为预训练模型,直接加载预训练权重即可。如果需要导出onnx,你需要同时将学生模型以及专家模型进行转化,然后调用cal_am。请注意,本代码使用的一些操作符可能无法转为onnx操作,例如F.interpolate,您需要检查代码并进行针对性优化后才能正常导出onnx。

ZHIZIHUABU commented 10 months ago

感谢,请问您对于工业缺陷的检测有什么比较好的方法吗,一个批次的图像是几乎相同的,但是也会存在一些差异,而且像中大部分都是背景,缺陷属于小目标,目标检测比较困难,负样本也较少;无监督算法精度相对目标检测(有监督)会更低,而且一个批次内图像存在差异,也会造成鲁棒性不好。对于这种工业缺陷检测任务,感觉介于目标检测和异常检测之间,和小样本few-shot有些类似,但是不知道具体应该怎么去处理。

ZHIZIHUABU commented 10 months ago

对于这种工业缺陷,用目标检测去做的话,缺陷特征其实并不突出,和自然场景下物体在图像中属于显著性目标不同;用无监督算法去做的话,能够发现缺陷和无缺陷之间的差异性,但是背景间的差异会影响鲁棒性。