Anomaly Detection
文章平均质量分 64
工业视觉异常检测
高亮1989
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(M3DM)RGB-D异常检测经典论文《Multimodal Industrial Anomaly Detection via Hybrid Fusion》阅读笔记-1
这篇文章收录于2023年CVPR,文章下载链接,代码下载链接。文章的代码目前已经137星了,在异常检测领域尤其是RGB-D异常检测这个一个细分领域中应该是非常难得的高星代码了,其影响力和经典程度由此可见一斑。在我的印象中,这篇文章应该是最早提出的跨模态知识蒸馏方式,取得了最高分数的同时也启发了很多其他同领域的学者,后续又出现了几篇对它的升级和完善的文章,我也会在随后的博客中逐一介绍并作出对比分析。文章所提出的模型的整体结构如下图:输入为RGB图像和点云。原创 2024-09-14 15:10:10 · 2389 阅读 · 2 评论 -
3D异常检测最新论文《Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection》阅读笔记
在BTF这篇文章中指出,点云的特征提取至关重要,但因为预训练点云特征网络的训练与使用的域差异,导致这些网络的性能甚至不如手工制作的特征提取方法。因此,作者产生了将二者结合起来的思路。之后,根据投影过程的对应关系,可以将每个像素的2D特征赋给对应的3D点,并使用平均值池化进行聚合,也就是一个3D点的特征是它对应的不同视角下所得到的这些2D特征的平均。另外对于在MVTec 3D-AD上进行3D异常检测的算法,其评判标准有失偏颇,因为一些缺陷是仅能通过RGB判断的,这对统计3D异常检测算法的性能是不充分的。原创 2024-09-12 10:59:32 · 1604 阅读 · 1 评论 -
异常检测经典论文:《Catching Both Gray and Black Swans: Open-set Supervised Anomaly Detection》阅读笔记-2:异常分数解析
其中的已见异常和人工异常训练过程中的损失函数是如下定义的,在异常图像的所有patch中,选择其中异常分数最高的k个patch进行损失计算。这样做的原因是,异常图像中的多数patch也是与正常图像的特征一致的,也就是说,有问题的异常区域只是图像的一部分。毕竟是21年的文章了,有些老了。异常评分网络的训练之前,首先要对异常分数进行指导,(或者说是进行数据的标注),这篇文章中提出了一个“参考分数生成器”,通过对随机选择的一些样本的异常分数进行统计,获得异常分数的均值方差,然后。原创 2024-09-09 10:48:31 · 586 阅读 · 0 评论 -
异常检测经典论文:《Catching Both Gray and Black Swans: Open-set Supervised Anomaly Detection》阅读笔记-1
综合:在训练过程中,已知异常被送入head1和head3, 生成异常被送入head2和head3,正常样本被送入head1,head2,head3,head4,经过训练后,我的理解是,head1输出一个样本属于已知异常的分数,head2输出该样本为合成异常的分数,head3输出该样本为异常的分数(通过与参考样本做差得到的残差特征),head4输出该样本为合格样本的分数。这部分就有很多的类似方式了,有一系列的异常检测算法就是通过生成伪缺陷图像进行训练的,我觉得这里也可以换成其他的类似方式。原创 2024-09-05 10:37:42 · 1168 阅读 · 0 评论 -
多模态工业异常检测算法整理
本文统计了MVTec 3D-AD上的多个多模态异常检测算法,仅对比其I-AUROC指标。数据的来源为,这位博主经常分享很多工业异常检测的优秀博文,质量很高。和。原创 2024-08-30 10:05:29 · 1859 阅读 · 0 评论 -
Docker+Win11:显示Docker中的GUI,解决报错“[Open3D WARNING] GLFW Error: X11: Failed to open display :0 [Open3D”
之前查看了很多相关的为docker挂载显示器的博客,其中都是使用了本机的物理地址或127.0.0.1,我使用后都是不成功的,因为这些博客的宿主机都是linux,而我使用的是windows。我查阅了很多资料,但几乎没有人在Windows宿主机上解决这个问题,所以我将我的解决办法分享出来,希望帮助到同样遇到这个问题的朋友。在本系列博文中,我将Pytorch部署在Win11为宿主的Docker中,并成功的调用GPU进行了训练。如果你运行了代码,时钟顺利的显示到你的显示器上,那么恭喜你,你已经成功完成了配置!原创 2024-08-20 12:55:59 · 1452 阅读 · 0 评论 -
CPMF复现笔记(2):训练MVTecAD-3D数据集, 精度SOTA
在上一篇博文中,我详细介绍了CPMF的环境配置与数据预处理,预处理的作用有2个:第一是去除背景(这也是几乎所有MVTecAD-3D相关文章都会进行的操作),二是生成多视角图像和与之对应的点云特征。小插曲:root/feature_extractors/features.py的第66行需要稍微修改一点,因为模型和数据一个在cpu一个在gpu,不然会报错。可以看到,对于每一个xyz,都生成了一系列的各个视角的图像。在这里,我的实验名称为t1,那么我得到的结果保存在results/csv/t1.csv中。原创 2024-08-20 16:56:04 · 1116 阅读 · 0 评论 -
CPMF复现笔记(1):docker环境配置+数据预处理
我只是解决了这个问题,但对于其中的原理并没有深入的了解(我只想尽快开展异常检测算法的研究,不想在这里多花费精力)希望其他朋友遇到类似的问题时可以从这篇文章中得到帮助。从init.sh中可以看到,作者使用的是torch1.13.1+cu116,刚好我之前拉取过这个镜像,就直接创建容器了。3. 下载MVTec3D-AD数据集,作者给出了下载链接,但我之前已经下载好了,就按照对应的路径导入到docker容器中了。作为对比,我测试了matplotlib的远程可视化功能,我在容器中运行了如下代码,原创 2024-08-20 14:19:50 · 1226 阅读 · 0 评论 -
Anomaly Detection(8):异常检测的学术与工业界差异
初期的生产线上往往是人机共存的,若是模型能够达到极高的召回率(即次品几乎完全检出了,虽然此时的误检也很多),我便可以安排人工只检测模型认为有问题的产品,这节省了一定比例的人工。反之,若模型具有极高的精准率,那么它可以在几乎不干扰人工生产过程的情况下,对人工检查过的产品进行复检,一定程度的提高产品质量。但是目前的主流模型普遍追求的是最高的F1Score,并没有把极致的精准率或召回率作为目标,导致很难应用到实际的项目中去。),很多模型已经达到了非常完美的性能,他们的图像准确率普遍超过99.5%。原创 2024-08-16 16:14:57 · 815 阅读 · 4 评论 -
Anomalib(7):使用配置文件训练自己的数据集
可以看到,主要有trainer,normalization,task,metrics,logging,data,model几大部分,这样一来,我们就不必去写输入参数了,还可以一目了然的看到所有参数的配置情况。并且随着使用的深入和对模型了解的加深,我想要调节模型的一些参数,这时我就不得不翻阅模型的文档查看参数说明,并在指令中通过输入参数来进行设置。第二种也很好理解,当默认参数不能满足你的需求的时候,你可以输入一些参数,来覆盖掉默认的参数;使用这种配置文件的形式去训练自己的数据集,只需要按照我这篇博客。原创 2024-08-16 15:31:18 · 3627 阅读 · 0 评论 -
Win11+docker(5):使用共享显存解决训练模型显存不足的问题
我们的显存都是8GB,这时我才发现,在训练过程中我的显存占用为11G,其中8G为专用显存(3070显卡显存为8G),其余占用了3G的共享显存,但我并没有对共享显存进行过专门的设置。随后,我在其基础上配置了Anomalib,使用了PatchCore训练了MVTec的缺陷检测以及我自己的数据集,取得了很高的准确率(99.7%)。如果您的代码遇到显存不足的问题,手头又没有适合的GPU环境,不妨试一试共享显存的方法。2.我的训练环境是通过docker配置的,他是直接在windows训练的。原创 2024-08-15 13:15:12 · 2554 阅读 · 1 评论 -
Anomalib:PatchCore使用API与CLI精度不一致(4)
之后我再次在我自己的训练集上进行了训练,这次我的准确率达到了99.4%,这远远超出了我的预期,推理速度大约为160ms(3070GPU)。在前几篇博文中,我使用Win11+Docker配置了anomalib,并成功的训练了我自己的一个火腿肠缺陷检测的数据集,其中使用的模型就是PatchCore。我是这样理解的,这种产品的每个patch都是符合正常品特征的,但貌似模型没有能够充分的理解一个正常品应该包含的各个组成部分,从而使这种部分结构缺失的样本被漏掉。这说明我的代码可能是存在问题的。原创 2024-08-12 17:48:24 · 1039 阅读 · 4 评论 -
Win11+docker+vscode配置anomalib并训练自己的数据(3)
数据集是我在工作中收集到的火腿肠缺陷数据,与MVTec等数据不同,我的火腿肠数据来源于多台设备和多个品种,因此,它们表面的纹理与颜色差异以及不同设备间的成像质量差异要远大于标准数据集,使得检测变得更难了。因为我的图像数量有些多,单个类别有1000个样本,MVTec AD是200多个,这导致我的训练时间很长,约2个小时吧。我的数据集是包含了合格样本和异常样本的,但只包含图像标签,并没有标注异常区域的mask,因此我需要使用classification类别的task。接下来,按照docker文档的提示,原创 2024-08-07 17:09:52 · 1987 阅读 · 0 评论 -
Win11+docker+gpu+vscode+pytorch配置
近期在研究异常检测相关算法,奈何各个经典算法的代码都是基于不同的pytorch版本的,而且好多代码还需要配置knn_cuda和pointnet2_ops_lib,这两个与cuda版本需要满足对应关系,因此通过conda虚拟环境已经无法满足需求了,不得已,只能来试试docker了。这里需要注意的是,我下载的docker镜像是pytorch1.12.1的官方镜像,已经发布2年多了,比较老。3. 作为经典算法的集合,anomalib是我最需要的,因此,我决定从配置anomalib开始。2. 需要使用GPU。原创 2024-08-05 13:45:13 · 1006 阅读 · 0 评论 -
Win11+docker+gpu+vscode+pytorch配置anomalib(2)
关于数据集:anomalib会自动下载数据集和模型,但MVTec数据集还是比较大的,我们也可以自己下载好数据,然后把它解压到anomalib/datasets/MVTec路径,这样就不需要在运行代码时下载了。其实在anomalib/notebooks中提供了jupyter示例代码,但我的vscode提示不能在远程容器中运行jupyter,只能够运行py文件,所以我就创建了一个测试代码。初次代码运行会报错,提示缺少一些lib,根据报错提示很容易就能搜索到缺失的软件,将这些软件安装好就可以正常运行了。原创 2024-08-06 10:27:27 · 1031 阅读 · 0 评论 -
Auto-Encoder理解
是一种无监督学习模型,可以理解为令最常见的3层的神经网络的“输入->中间层->输出”中的输出等于输入,而目的是得到训练后的中间层。中间层的节点数少于出入层与输出层,这样,如果输出层能够很好的拟合出输入,那么中间层就相当于实现了数据的降维。如果自编码器都是在正常品数据中训练得到的,那么它很可能对于异常数据无法进行拟合,即模型输出与输入存在很大的差异,这种方法可以用于进行异常检测。结合了自身的一些理解,更加具体的信息及代码请阅读该文章。本文主要来源于知乎文章。原创 2024-02-05 09:40:30 · 537 阅读 · 0 评论 -
BGAD文章复现笔记-1
论文Explicit Boundary Guided Semi-Push-Pull Contrastive Learning for Supervised Anomaly Detection的复现笔记原创 2024-01-29 15:38:46 · 807 阅读 · 0 评论
分享