Patchcore运行过程

devtools/2024/10/22 21:20:51/

论文github地址:https://github.com/amazon-science/patchcore-inspection

平台:autodl云服务器

1.将下载的代码上传到autodl-tmp/PatchCore里面解压,将数据集上传path_to_mvtec_folder/mvtec里,目录结构如图

2.安装依赖

cd autodl-tmp/PatchCore/patchcore-inspection-main
pip install -e 
pip install -r requirements.txt
pip install timm

3. 训练

(1)修改sample_training.sh 的数据集路径,将路径替换为数据集所在路径

datapath=patch_to_mvtec_folder/mvtec

判断数据集路径是否定位准确,如果定位准确,显示如下

ls path_to_mvtec_folder/mvtec

(2)运行代码

env PYTHONPATH=src python bin/run_patchcore.py --gpu 0 --seed 0 --save_patchcore_model \
--log_group IM224_WR50_L2-3_P01_D1024-1024_PS-3_AN-1_S0 --log_project MVTecAD_Results results \
patch_core -b wideresnet50 -le layer2 -le layer3 \
--pretrain_embed_dimension 1024  --target_embed_dimension 1024 --anomaly_scorer_num_nn 1 --patchsize 3 \
sampler -p 0.1 approx_greedy_coreset dataset --resize 256 --imagesize 224 "${dataset_flags[@]}" mvtec $datapath

相较于github上的命令行,去掉了原来的参数--faiss_on_gpu,因为用的是faiss-cpu ,去掉参数--log_online

(3)运行过程中报错

ModuleNotFoundError: No module named ‘patchcore’

解决方法:

export PYTHONPATH=src

在运行python命令前加上这句,用于设置环境变量,PYTHONPATH的值为src,PYTHONPATH是一个环境变量,类似系统的PATH环境变量,它告诉 Python 解释器在运行时要额外搜索哪些目录来查找模块和包。通过设置 PYTHONPATH,告诉 Python 在运行时要额外搜索src目录

module ‘faiss‘ has no attribute ‘GpuIndexFlatL2’

解决方法:我这里是直接去掉了原来的参数--faiss_on_gpu,用的是faiss-cpu,https://valoray.github.io/2024/06/15/PatchCore%E4%BB%A3%E7%A0%81%E5%A4%8D%E7%8E%B0/这篇博客说用faiss-gpu在推理阶段会报错且训练精度会下降,所以直接用的faiss-cpu

另外关于这个错误的解决方法详见下面这个解决方法(我没试,我用cpu跑的):

在使用faiss时,报以下错误:module ‘faiss‘ has no attribute ‘GpuIndexFlatL2‘,已经成功解决_attributeerror: module 'faiss' has no attribute 'g-CSDN博客


http://www.ppmy.cn/devtools/127958.html

相关文章

企业架构与业务流程管理之间的关系

企业架构与业务流程管理:推动组织成功的双重力量 许多组织都在不断寻找提高敏捷性、效率和整体绩效的方法。在实现这些目标方面发挥关键作用的两个关键概念是企业架构和业务流程管理。本文深入研究了这两个学科之间的复杂关系,研究了它们如何相互补充和…

韩语干货topik韩语考级柯桥外语培训韩语中的惯用表达

表示递进的词尾或惯用表达 1 -을/ㄹ 뿐만 아니라 接在动词和形容词词干后面,表示“不仅...而且...”。该语法需要注意前后会有两个动词或形容词,此时两个动词或形容词的时态应保持一致。 例: 한번 파괴된 자연은 되돌리기기 쉽지 않을 뿐만 아니라 지역…

c#中生成MD5

代码适用于在c#或unity中进行Md5生成 public string GetMD5(string secret, string ticket) {string Add secret ticket;using (System.Security.Cryptography.MD5 md5 System.Security.Cryptography.MD5.Create()){byte[] inputBytes Encoding.ASCII.GetBytes(Add);byte[…

基于yolov10的驾驶员抽烟打电话安全带检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv10的驾驶员抽烟、打电话、安全带检测系统是一种先进的驾驶行为监测系统。该系统利用YOLOv10算法的高效性和准确性,实现对驾驶员行为的实时检测与识别。 YOLOv10是一种最新的实时物体检测模型,其通过深度学习技术,如卷…

电影评论网站:使用Spring Boot进行开发

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

二叉树算法之二叉树遍历(前序、中序、后序、层次遍历)

二叉树遍历是指按照某种顺序访问二叉树的所有节点。常见的二叉树遍历方式包括前序遍历(Preorder Traversal)、中序遍历(Inorder Traversal)、后序遍历(Postorder Traversal)和层次遍历(Level-or…

HarmonyOS Next应用开发——RCP框架实现断点续传

【高心星出品】 RCP框架实现断点续传 RCP框架有提供downloadToStream方法来实现下载文件,并将文件字节转化成流。结合设置请求头的range属性就可以实现断点续传的功能。 断点续传原理 如果要下载的网络资源比较大,我们可以将网络资源字节分割成多份&a…

内存屏障的奥秘:深入理解并掌握Java并发编程的底层优化

1. 什么是内存屏障(Memory Barrier)? 内存屏障(Memory Barrier),也称为内存栅栏,是一种硬件级别的指令,用于控制CPU和编译器的指令重排序。它确保特定操作在多线程编程环境中不会被…