论文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博客