本文基于PaddlePaddle复现PatchCore工业异常检测算法,改进特征提取与筛选,用KNN Greedy CoreSet采样构建记忆池,采用新策略算异常得分。在MVTec数据集精度达标,还介绍了相关流程与复现心得。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

本项目基于PaddlePaddle框架复现了PatchCore算法,并在MvTec数据集上进行了实验。
PatchCore对SPADE,PaDiM等一系列基于图像Patch的无监督异常检测算法工作进行了扩展,主要解决了SPADE测试速度太慢的问题,并且在特征提取部分做了一些探索。相比SPADE,PaDiM,PatchCore 仅使用stage2、stage3的特征图进行建模,通过增加窗口大小为3、步长为1、padding为1的平均池化AvgPool2d增大感受野后拼接,使用KNN Greedy CoreSet 采样选取最具代表性的特征点(选择与其他特征点最远的点以实现尽可能平衡的采样,效果类似泊松圆盘),构建特征向量记忆池,只保留1%~10%的特征数,进而实现高效的特征筛选并用于异常检测。并提出采用了re-weighting策略计算Image-Level的异常得分代替此前的最大值异常得分。 PatchCore 论文: PatchCore: Towards Total Recall in Industrial Anomaly Detection
参考repo:
在此非常感谢openvineo贡献的anomalib项目,提高了本repo复现论文的效率。
本项目为第六届论文复现赛异常检测项目。
按复现考核标准,使用resnet18 10%特征数 在MVTec AD数据集的测试效果如下表。
| category | Image_AUROC | Pixel_AUROC | PRO_score |
|---|---|---|---|
| carpet | 0.995586 | 0.990199 | 0.959082 |
| grid | 0.969925 | 0.979229 | 0.921544 |
| leather | 1 | 0.989842 | 0.969135 |
| tile | 0.989899 | 0.940809 | 0.847143 |
| wood | 0.990351 | 0.943459 | 0.889898 |
| bottle | 1 | 0.9814 | 0.945257 |
| cable | 0.977699 | 0.984428 | 0.941403 |
| capsule | 0.979657 | 0.989979 | 0.942688 |
| hazelnut | 1 | 0.988504 | 0.936284 |
| metal_nut | 0.993157 | 0.985884 | 0.938088 |
| pill | 0.938352 | 0.97595 | 0.92767 |
| screw | 0.938512 | 0.993937 | 0.971481 |
| toothbrush | 0.936111 | 0.990976 | 0.917974 |
| transistor | 0.990417 | 0.955586 | 0.915834 |
| zipper | 0.971113 | 0.987035 | 0.954973 |
| mean | 0.978052 | 0.978481 | 0.931897 |
| Avg | Carpet | Grid | Leather | Tile | Wood | Bottle | Cable | Capsule | Hazelnut | Metal Nut | Pill | Screw | Toothbrush | Transistor | Zipper | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| anomalib (ResNet-18) | 0.973 | 0.970 | 0.947 | 1.000 | 0.997 | 0.997 | 1.000 | 0.986 | 0.965 | 1.000 | 0.991 | 0.916 | 0.943 | 0.931 | 0.996 | 0.953 |
| 复现 | 0.978052 | 0.995586 | 0.969925 | 1 | 0.989899 | 0.990351 | 1 | 0.977699 | 0.979657 | 1 | 0.993157 | 0.938352 | 0.938512 | 0.936111 | 0.990417 | 0.971113 |
| Avg | Carpet | Grid | Leather | Tile | Wood | Bottle | Cable | Capsule | Hazelnut | Metal Nut | Pill | Screw | Toothbrush | Transistor | Zipper | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ResNet-18 | 0.976 | 0.986 | 0.955 | 0.990 | 0.943 | 0.933 | 0.981 | 0.984 | 0.986 | 0.986 | 0.986 | 0.974 | 0.991 | 0.988 | 0.974 | 0.983 |
| 复现 | 0.978481 | 0.990199 | 0.979229 | 0.989842 | 0.940809 | 0.943459 | 0.9814 | 0.984428 | 0.989979 | 0.988504 | 0.985884 | 0.97595 | 0.993937 | 0.990976 | 0.955586 | 0.987035 |
达到论文复现验收标准.
%cd /home/aistudio/data/ !tar xvf data116034/mvtec_anomaly_detection.tar.xz >/dev/null
/home/aistudio/data
!pip install scikit-image >/dev/null
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This beh*iour is the source of the following dependency conflicts. parl 1.4.1 requires pyzmq==18.1.1, but you h*e pyzmq 22.3.0 which is incompatible.
一共有15个类别,这里需要对15个类别分别训练,最后取平均值作为验证指标.(https://github.com/openvinotoolkit/anomalib/blob/development/anomalib/models/stfpm/README.md).
单个类别训练: 以category=carpet为例。
In [3]%cd /home/aistudio/Anomaly.Paddle/ !python train.py --category carpet --data_path=/home/aistudio/data/ --method=coreset --arch=resnet18 --k=10 --eval
/home/aistudio/Anomaly.Paddle
Namespace(arch='resnet18', batch_size=32, category='carpet', cpu=False, crop_size=256, data_path='/home/aistudio/data/', debug=False, einsum=False, eval=True, eval_PRO=False, eval_threthold_step=500, inc=False, k=10, load_projection=None, method='coreset', non_partial_AUC=False, num_workers=0, resize=256, s*e_model=True, s*e_model_subfolder=True, s*e_path='./output/coreset_resnet18_10', s*e_pic=True, seed=521, test_batch_size=1)
W0505 22:47:52.097200 463 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0505 22:47:52.102414 463 device_context.cc:465] device: 0, cuDNN Version: 7.6.
100%|██████████████████████████████████| 69183/69183 [00:04<00:00, 14500.91it/s]
model resnet18, nParams 2787264
Training model 1/1 for carpet
| feature extraction | train | carpet |: 0%| | 0/9 [00:00<?, ?it/s]/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
if data.dtype == np.object:
| feature extraction | train | carpet |: 100%|████| 9/9 [00:20<00:00, 2.27s/it]
Creating CoreSet Sampler via k-Center Greedy
Getting the coreset from the main embedding.
Assigning the coreset as the memory bank with shape [28672, 384].
2025-05-05 23:06:01 Train ends, total 1067.16s
S*ing model...
2025-05-05 23:06:01 S*e model in ./output/coreset_resnet18_10/carpet.pdparams
2025-05-05 23:06:01 Starting eval model...
| feature extraction | test | carpet |: 100%|█| 117/117 [02:26<00:00, 1.25s/it]
max_score:3.2409136295318604 min_score:0.7035042643547058
F1 image:0.9828571428571428 threshold:3.2409136295318604
F1 pixel:0.5584764361267536 threshold:3.2409136295318604
['carpet', 0.9955858747993579, 0.9901991232207019, None]
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2349: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
if isinstance(obj, collections.Iterator):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:101: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead
ret = np.asscalar(ex)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2366: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
return list(data) if isinstance(data, collections.MappingView) else data
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:425: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead
a_min = np.asscalar(a_min.astype(scaled_dtype))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:426: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead
a_max = np.asscalar(a_max.astype(scaled_dtype))
Image_AUROC Pixel_AUROC
category
carpet 0.995586 0.990199
Evaluation result s*ed at./output/coreset_resnet18_10/carpet_seed521.csv:
对所有类别进行训练:
In [4]%cd /home/aistudio/Anomaly.Paddle/ !python train.py --category all --data_path=/home/aistudio/data/ --method=coreset --arch=resnet18 --k=10 --eval
/home/aistudio/Anomaly.Paddle Namespace(arch='resnet18', batch_size=32, category='all', cpu=False, crop_size=256, data_path='/home/aistudio/data/', debug=False, einsum=False, eval=True, eval_PRO=False, eval_threthold_step=500, inc=False, k=10, load_projection=None, method='coreset', non_partial_AUC=False, num_workers=0, resize=256, s*e_model=True, s*e_model_subfolder=True, s*e_path='./output/coreset_resnet18_10', s*e_pic=True, seed=521, test_batch_size=1) W0505 23:08:38.231904 2381 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:08:38.237079 2381 device_context.cc:465] device: 0, cuDNN Version: 7.6. ^C
单个类别测试: 以category=carpet为例。
In [13]%cd /home/aistudio/Anomaly.Paddle/ !python eval.py --data_path=/home/aistudio/data/ --category carpet --method=coreset --arch=resnet18 --k=10
/home/aistudio/Anomaly.Paddle
Namespace(arch='resnet18', batch_size=1, category='carpet', crop_size=256, data_path='/home/aistudio/data/', eval_PRO=False, eval_threthold_step=500, k=10, method='coreset', model_path=None, non_partial_AUC=False, num_workers=0, resize=256, s*e_path='./output/coreset_resnet18_10', s*e_pic=True, seed=521, test_batch_size=1)
Testing model 1/1 for carpet
W0505 23:14:08.773208 3548 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0505 23:14:08.778220 3548 device_context.cc:465] device: 0, cuDNN Version: 7.6.
model resnet18, nParams 2787264
2025-05-05 23:14:18 Starting eval model...
| feature extraction | test | carpet |: 0%| | 0/117 [00:00<?, ?it/s]/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
if data.dtype == np.object:
| feature extraction | test | carpet |: 100%|█| 117/117 [01:38<00:00, 1.19it/s]
max_score:3.2409136295318604 min_score:0.7035042643547058
F1 image:0.9828571428571428 threshold:3.2409136295318604
F1 pixel:0.5584764361267536 threshold:3.2409136295318604
['carpet', 0.9955858747993579, 0.9901991232207019, None]
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2349: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
if isinstance(obj, collections.Iterator):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:101: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead
ret = np.asscalar(ex)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2366: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
return list(data) if isinstance(data, collections.MappingView) else data
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:425: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead
a_min = np.asscalar(a_min.astype(scaled_dtype))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:426: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead
a_max = np.asscalar(a_max.astype(scaled_dtype))
Image_AUROC Pixel_AUROC
category
carpet 0.995586 0.990199
Evaluation result s*ed at./output/coreset_resnet18_10/carpet_seed521.csv:
对所有类别进行测试: 由于已在训练过程中进行测试此处不再重复
简小派
简小派是一款AI原生求职工具,通过简历优化、岗位匹配、项目生成、模拟面试与智能投递,全链路提升求职成功率,帮助普通人更快拿到更好的 offer。
123
查看详情
In [6]
#%cd /home/aistudio/Anomaly.Paddle/#!python eval.py --data_path=/home/aistudio/data/ --category all --method=coreset --arch=resnet18 --k=10 --eval_PRO
%cd /home/aistudio/Anomaly.Paddle/ !python predict.py /home/aistudio/data/carpet/test/color/000.png --category carpet --method=coreset --arch=resnet18 --k=10
/home/aistudio/Anomaly.Paddle /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Sized Namespace(arch='resnet18', category='carpet', crop_size=256, k=10, method='coreset', model_path=None, norm=True, picture_path='/home/aistudio/data/carpet/test/color/000.png', resize=256, s*e_path='./output/coreset_resnet18_10', s*e_pic=True, seed=42, threshold=0.4) Testing model for carpet W0505 23:11:38.219069 2823 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:11:38.224303 2823 device_context.cc:465] device: 0, cuDNN Version: 7.6. model resnet18, nParams 2787264 /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object: 2025-05-05 23:11:53 Starting eval model... /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2349: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working if isinstance(obj, collections.Iterator): /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:101: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead ret = np.asscalar(ex) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2366: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working return list(data) if isinstance(data, collections.MappingView) else data /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:425: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead a_min = np.asscalar(a_min.astype(scaled_dtype)) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:426: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead a_max = np.asscalar(a_max.astype(scaled_dtype)) 2025-05-05 23:11:55 Predict : Picture /home/aistudio/data/carpet/test/color/000.png done! Result s*ed at ./output/coreset_resnet18_10/carpet/carpet_predict.png
可以在output/找到如下的类似结果:
%cd /home/aistudio/Anomaly.Paddle/ !python export_model.py --method=coreset --arch=resnet18 --k=10 --model_path=./output/coreset_resnet18_10/carpet.pdparams --s*e_dir=./output/coreset_resnet18_10
/home/aistudio/Anomaly.Paddle /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Sized Namespace(arch='resnet18', category='leather', img_size=256, k=10, method='coreset', model_path='./output/coreset_resnet18_10/carpet.pdparams', s*e_dir='./output/coreset_resnet18_10') W0505 23:11:59.439810 2902 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:11:59.445221 2902 device_context.cc:465] device: 0, cuDNN Version: 7.6. model resnet18, nParams 2787264 /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:77: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working return (isinstance(seq, collections.Sequence) and /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmpzp85lm0v.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmpxdiplums.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmp22pggkiw.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmps33tfdg1.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmpht9nggz5.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmp11b99l2s.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) Model is s*ed in ./output/coreset_resnet18_10.
%cd /home/aistudio/Anomaly.Paddle/ !python infer.py --model_name='PatchCore' --enable_post_process --use_gpu=True --model_file=output/coreset_resnet18_10/model.pdmodel --input_file=/home/aistudio/data/carpet/test/color/000.png --params_file=output/coreset_resnet18_10/model.pdiparams --category=carpet --stats=./output/coreset_resnet18_10/stats --s*e_path=./output/coreset_resnet18_10
/home/aistudio/Anomaly.Paddle /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/setuptools/depends.py:2: DeprecationWarning: the imp module is deprecated in f*our of importlib; see the module's documentation for alternative uses import imp /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Sized Inference model(PatchCore)... load train set feature from: ./output/coreset_resnet18_10/stats E0506 19:06:01.010391 1895 analysis_config.cc:91] Please compile with gpu to EnableGpu()--- Running analysis [ir_graph_build_pass]--- Running analysis [ir_graph_clean_pass]--- Running analysis [ir_analysis_pass]--- Running IR pass [simplify_with_basic_ops_pass]--- Running IR pass [layer_norm_fuse_pass]--- Fused 0 subgraphs into layer_norm op.--- Running IR pass [attention_lstm_fuse_pass]--- Running IR pass [seqconv_eltadd_relu_fuse_pass]--- Running IR pass [seqpool_cvm_concat_fuse_pass]--- Running IR pass [mul_lstm_fuse_pass]--- Running IR pass [fc_gru_fuse_pass]--- fused 0 pairs of fc gru patterns--- Running IR pass [mul_gru_fuse_pass]--- Running IR pass [seq_concat_fc_fuse_pass]--- Running IR pass [squeeze2_matmul_fuse_pass]--- Running IR pass [reshape2_matmul_fuse_pass]--- Running IR pass [flatten2_matmul_fuse_pass]--- Running IR pass [map_matmul_v2_to_mul_pass]--- Running IR pass [map_matmul_v2_to_matmul_pass]--- Running IR pass [map_matmul_to_mul_pass]--- Running IR pass [fc_fuse_pass]--- Running IR pass [repeated_fc_relu_fuse_pass]--- Running IR pass [squared_mat_sub_fuse_pass]--- Running IR pass [conv_bn_fuse_pass]I0506 19:06:01.055578 1895 fuse_pass_base.cc:57] --- detected 15 subgraphs--- Running IR pass [conv_eltwiseadd_bn_fuse_pass]--- Running IR pass [conv_transpose_bn_fuse_pass]--- Running IR pass [conv_transpose_eltwiseadd_bn_fuse_pass]--- Running IR pass [is_test_pass]--- Running IR pass [runtime_context_cache_pass]--- Running analysis [ir_params_sync_among_devices_pass]--- Running analysis [adjust_cudnn_workspace_size_pass]--- Running analysis [inference_op_replace_pass]--- Running analysis [memory_optimize_pass]I0506 19:06:01.060403 1895 memory_optimize_pass.cc:216] Cluster name : conv2d_31.tmp_0 size: 262144 I0506 19:06:01.060425 1895 memory_optimize_pass.cc:216] Cluster name : batch_norm_0.tmp_2 size: 4194304 I0506 19:06:01.060428 1895 memory_optimize_pass.cc:216] Cluster name : pool2d_0.tmp_0 size: 1048576 I0506 19:06:01.060431 1895 memory_optimize_pass.cc:216] Cluster name : relu_0.tmp_0 size: 4194304 I0506 19:06:01.060443 1895 memory_optimize_pass.cc:216] Cluster name : conv2d_22.tmp_0 size: 1048576 I0506 19:06:01.060452 1895 memory_optimize_pass.cc:216] Cluster name : x size: 786432--- Running analysis [ir_graph_to_program_pass]I0506 19:06:01.074777 1895 analysis_predictor.cc:714] ======= optimize end ======= I0506 19:06:01.075248 1895 naive_executor.cc:98] --- skip [feed], feed -> x I0506 19:06:01.076575 1895 naive_executor.cc:98] --- skip [concat_0.tmp_0], fetch -> fetch /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object: Inference mode image_score:[2.66626549] /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2349: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working if isinstance(obj, collections.Iterator): /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:101: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead ret = np.asscalar(ex) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2366: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working return list(data) if isinstance(data, collections.MappingView) else data /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:425: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead a_min = np.asscalar(a_min.astype(scaled_dtype)) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/image.py:426: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead a_max = np.asscalar(a_max.astype(scaled_dtype)) s*ed
输出结果如下:
因为test_tipc 不支持后处理的可视化环境,tipc中不进行异常图可视化。
首先安装auto_log,需要进行安装,安装方式如下: auto_log的详细介绍参考https://github.com/LDOUBLEV/AutoLog。
git clone https://github.com/LDOUBLEV/AutoLog cd AutoLog/ pip3 install -r requirements.txt python3 setup.py bdist_wheel pip3 install ./dist/auto_log-1.2.0-py3-none-any.whlIn [2]
#%cd /home/aistudio/#!git clone https://github.com/LDOUBLEV/AutoLog%cd /home/aistudio/AutoLog/ !pip3 install -r requirements.txt >/dev/null#!python3 setup.py bdist_wheel!pip3 install ./dist/auto_log-1.2.0-py3-none-any.whl >/dev/null
/home/aistudio/AutoLog
进行TIPC:
In [11]%cd /home/aistudio/Anomaly.Paddle/ !bash test_tipc/prepare.sh test_tipc/configs/PatchCore/train_infer_python.txt 'lite_train_lite_infer'
/home/aistudio/Anomaly.Paddle Archive: MVTec.zip creating: MVTec/ inflating: MVTec/.DS_Store creating: MVTec/capsule/ inflating: MVTec/capsule/.DS_Store creating: MVTec/capsule/test/ creating: MVTec/capsule/test/crack/ inflating: MVTec/capsule/test/crack/001.png inflating: MVTec/capsule/test/crack/000.png inflating: MVTec/capsule/test/.DS_Store creating: MVTec/capsule/test/scratch/ inflating: MVTec/capsule/test/scratch/001.png inflating: MVTec/capsule/test/scratch/000.png inflating: MVTec/capsule/test/scratch/.DS_Store creating: MVTec/capsule/test/poke/ inflating: MVTec/capsule/test/poke/001.png inflating: MVTec/capsule/test/poke/000.png inflating: MVTec/capsule/test/poke/.DS_Store creating: MVTec/capsule/test/good/ inflating: MVTec/capsule/test/good/001.png inflating: MVTec/capsule/test/good/000.png inflating: MVTec/capsule/test/good/.DS_Store creating: MVTec/capsule/test/faulty_imprint/ inflating: MVTec/capsule/test/faulty_imprint/001.png inflating: MVTec/capsule/test/faulty_imprint/000.png inflating: MVTec/capsule/test/faulty_imprint/.DS_Store creating: MVTec/capsule/test/squeeze/ inflating: MVTec/capsule/test/squeeze/001.png inflating: MVTec/capsule/test/squeeze/000.png inflating: MVTec/capsule/test/squeeze/.DS_Store creating: MVTec/capsule/ground_truth/ creating: MVTec/capsule/ground_truth/crack/ inflating: MVTec/capsule/ground_truth/crack/000_mask.png inflating: MVTec/capsule/ground_truth/crack/001_mask.png inflating: MVTec/capsule/ground_truth/.DS_Store creating: MVTec/capsule/ground_truth/scratch/ inflating: MVTec/capsule/ground_truth/scratch/000_mask.png inflating: MVTec/capsule/ground_truth/scratch/001_mask.png creating: MVTec/capsule/ground_truth/poke/ inflating: MVTec/capsule/ground_truth/poke/000_mask.png inflating: MVTec/capsule/ground_truth/poke/001_mask.png creating: MVTec/capsule/ground_truth/faulty_imprint/ inflating: MVTec/capsule/ground_truth/faulty_imprint/000_mask.png inflating: MVTec/capsule/ground_truth/faulty_imprint/001_mask.png creating: MVTec/capsule/ground_truth/squeeze/ inflating: MVTec/capsule/ground_truth/squeeze/000_mask.png inflating: MVTec/capsule/ground_truth/squeeze/001_mask.png creating: MVTec/capsule/train/ creating: MVTec/capsule/train/good/ inflating: MVTec/capsule/train/good/001.png inflating: MVTec/capsule/train/good/000.pngIn [12]
%cd /home/aistudio/Anomaly.Paddle/ ! bash test_tipc/test_train_inference_python.sh test_tipc/configs/PatchCore/train_infer_python.txt 'lite_train_lite_infer'
/home/aistudio/Anomaly.Paddle Namespace(arch='resnet18', batch_size=32, category='capsule', cpu=False, crop_size=256, data_path='./test_tipc/data/MVTec', debug=False, einsum=False, eval=False, eval_PRO=False, eval_threthold_step=500, inc=False, k=10, load_projection=None, method='coreset', non_partial_AUC=False, num_workers=0, resize=256, s*e_model=True, s*e_model_subfolder=False, s*e_path='./test_tipc/output/PatchCore/', s*e_pic=False, seed=521, test_batch_size=1) W0505 23:12:50.398147 3193 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:12:50.403101 3193 device_context.cc:465] device: 0, cuDNN Version: 7.6. model resnet18, nParams 2787264 Training model 1/1 for capsule | feature extraction | train | capsule |: 0%| | 0/1 [00:00<?, ?it/s]/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object: | feature extraction | train | capsule |: 100%|███| 1/1 [00:00<00:00, 3.47it/s] Creating CoreSet Sampler via k-Center Greedy Getting the coreset from the main embedding. Assigning the coreset as the memory bank with shape [204, 384]. 2025-05-05 23:13:11 Train ends, total 5.96s S*ing model... 2025-05-05 23:13:11 S*e model in ./test_tipc/output/PatchCore/capsule.pdparams Run successfully with command - python3.7 train.py --data_path=./test_tipc/data/MVTec --category capsule --method=coreset --arch=resnet18 --k=10 --s*e_path=./test_tipc/output/PatchCore/ --s*e_model_subfolder=False --s*e_pic=False! /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Sized Namespace(arch='resnet18', category='leather', img_size=256, k=10, method='coreset', model_path='./test_tipc/output/PatchCore/capsule.pdparams', s*e_dir='./test_tipc/output/PatchCore/') W0505 23:13:14.875043 3308 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:13:14.880427 3308 device_context.cc:465] device: 0, cuDNN Version: 7.6. model resnet18, nParams 2787264 /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:77: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working return (isinstance(seq, collections.Sequence) and /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmpeu0e3616.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmphsdl18dg.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmp3pdqc646.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmpcndbd9vo.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmp8vecen64.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py:341: UserWarning: /tmp/tmpw8r51_rv.py:21 The beh*ior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future. op_type, op_type, EXPRESSION_MAP[method_name])) Model is s*ed in ./test_tipc/output/PatchCore/. Run successfully with command - python3.7 export_model.py --method=coreset --arch=resnet18 --k=10 --model_path=./test_tipc/output/PatchCore/capsule.pdparams --s*e_dir=./test_tipc/output/PatchCore/! W0505 23:13:31.946898 3372 analysis_predictor.cc:795] The one-time configuration of analysis predictor failed, which may be due to native predictor called first and its configurations taken effect.--- Running analysis [ir_graph_build_pass]--- Running analysis [ir_graph_clean_pass]--- Running analysis [ir_analysis_pass]--- Running IR pass [is_test_pass]--- Running IR pass [simplify_with_basic_ops_pass]--- Running IR pass [conv_affine_channel_fuse_pass]--- Running IR pass [conv_eltwiseadd_affine_channel_fuse_pass]--- Running IR pass [conv_bn_fuse_pass]I0505 23:13:31.992252 3372 fuse_pass_base.cc:57] --- detected 15 subgraphs--- Running IR pass [conv_eltwiseadd_bn_fuse_pass]--- Running IR pass [embedding_eltwise_layernorm_fuse_pass]--- Running IR pass [multihead_matmul_fuse_pass_v2]--- Running IR pass [squeeze2_matmul_fuse_pass]--- Running IR pass [reshape2_matmul_fuse_pass]--- Running IR pass [flatten2_matmul_fuse_pass]--- Running IR pass [map_matmul_v2_to_mul_pass]--- Running IR pass [map_matmul_v2_to_matmul_pass]--- Running IR pass [map_matmul_to_mul_pass]--- Running IR pass [fc_fuse_pass]--- Running IR pass [fc_elementwise_layernorm_fuse_pass]--- Running IR pass [conv_elementwise_add_act_fuse_pass]--- Running IR pass [conv_elementwise_add2_act_fuse_pass]--- Running IR pass [conv_elementwise_add_fuse_pass]--- Running IR pass [transpose_flatten_concat_fuse_pass]--- Running IR pass [runtime_context_cache_pass]--- Running analysis [ir_params_sync_among_devices_pass]I0505 23:13:32.002573 3372 ir_params_sync_among_devices_pass.cc:45] Sync params from CPU to GPU--- Running analysis [adjust_cudnn_workspace_size_pass]--- Running analysis [inference_op_replace_pass]--- Running analysis [memory_optimize_pass]I0505 23:13:32.230777 3372 memory_optimize_pass.cc:216] Cluster name : batch_norm_14.tmp_2 size: 262144 I0505 23:13:32.230805 3372 memory_optimize_pass.cc:216] Cluster name : x size: 786432 I0505 23:13:32.230809 3372 memory_optimize_pass.cc:216] Cluster name : pool2d_0.tmp_0 size: 1048576 I0505 23:13:32.230813 3372 memory_optimize_pass.cc:216] Cluster name : relu_0.tmp_0 size: 4194304 I0505 23:13:32.230816 3372 memory_optimize_pass.cc:216] Cluster name : batch_norm_2.tmp_2 size: 1048576--- Running analysis [ir_graph_to_program_pass]I0505 23:13:32.245414 3372 analysis_predictor.cc:714] ======= optimize end ======= I0505 23:13:32.246016 3372 naive_executor.cc:98] --- skip [feed], feed -> x I0505 23:13:32.247359 3372 naive_executor.cc:98] --- skip [concat_0.tmp_0], fetch -> fetch W0505 23:13:32.313050 3372 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:13:32.317571 3372 device_context.cc:465] device: 0, cuDNN Version: 7.6. /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Sized /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object: Inference model(PaDiM)... load train set feature from: ./test_tipc/output/PatchCore/stats Run successfully with command - python3.7 infer.py --stats=./test_tipc/output/PatchCore/stats --use_gpu=True --use_tensorrt=False --precision=fp32 --model_file=./test_tipc/output/PatchCore/model.pdmodel --batch_size=1 --input_file=./test_tipc/data/MVTec/capsule/test/crack/001.png --params_file=./test_tipc/output/PatchCore/model.pdiparams > ./test_tipc/output/PatchCore/python_infer_gpu_usetrt_False_precision_fp32_batchsize_1.log 2>&1 ! --- Running analysis [ir_graph_build_pass]--- Running analysis [ir_graph_clean_pass]--- Running analysis [ir_analysis_pass]--- Running IR pass [simplify_with_basic_ops_pass]--- Running IR pass [layer_norm_fuse_pass]--- Fused 0 subgraphs into layer_norm op.--- Running IR pass [attention_lstm_fuse_pass]--- Running IR pass [seqconv_eltadd_relu_fuse_pass]--- Running IR pass [seqpool_cvm_concat_fuse_pass]--- Running IR pass [mul_lstm_fuse_pass]--- Running IR pass [fc_gru_fuse_pass]--- fused 0 pairs of fc gru patterns--- Running IR pass [mul_gru_fuse_pass]--- Running IR pass [seq_concat_fc_fuse_pass]--- Running IR pass [squeeze2_matmul_fuse_pass]--- Running IR pass [reshape2_matmul_fuse_pass]--- Running IR pass [flatten2_matmul_fuse_pass]--- Running IR pass [map_matmul_v2_to_mul_pass]--- Running IR pass [map_matmul_v2_to_matmul_pass]--- Running IR pass [map_matmul_to_mul_pass]--- Running IR pass [fc_fuse_pass]--- Running IR pass [repeated_fc_relu_fuse_pass]--- Running IR pass [squared_mat_sub_fuse_pass]--- Running IR pass [conv_bn_fuse_pass]I0505 23:13:44.782842 3435 fuse_pass_base.cc:57] --- detected 15 subgraphs--- Running IR pass [conv_eltwiseadd_bn_fuse_pass]--- Running IR pass [conv_transpose_bn_fuse_pass]--- Running IR pass [conv_transpose_eltwiseadd_bn_fuse_pass]--- Running IR pass [is_test_pass]--- Running IR pass [runtime_context_cache_pass]--- Running analysis [ir_params_sync_among_devices_pass]--- Running analysis [adjust_cudnn_workspace_size_pass]--- Running analysis [inference_op_replace_pass]--- Running analysis [memory_optimize_pass]I0505 23:13:44.787526 3435 memory_optimize_pass.cc:216] Cluster name : conv2d_31.tmp_0 size: 262144 I0505 23:13:44.787545 3435 memory_optimize_pass.cc:216] Cluster name : batch_norm_0.tmp_2 size: 4194304 I0505 23:13:44.787549 3435 memory_optimize_pass.cc:216] Cluster name : pool2d_0.tmp_0 size: 1048576 I0505 23:13:44.787554 3435 memory_optimize_pass.cc:216] Cluster name : relu_0.tmp_0 size: 4194304 I0505 23:13:44.787556 3435 memory_optimize_pass.cc:216] Cluster name : conv2d_22.tmp_0 size: 1048576 I0505 23:13:44.787559 3435 memory_optimize_pass.cc:216] Cluster name : x size: 786432--- Running analysis [ir_graph_to_program_pass]I0505 23:13:44.802613 3435 analysis_predictor.cc:714] ======= optimize end ======= I0505 23:13:44.803148 3435 naive_executor.cc:98] --- skip [feed], feed -> x I0505 23:13:44.804566 3435 naive_executor.cc:98] --- skip [concat_0.tmp_0], fetch -> fetch W0505 23:13:44.870177 3435 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:13:44.874680 3435 device_context.cc:465] device: 0, cuDNN Version: 7.6. /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Sized /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object: Inference model(PaDiM)... load train set feature from: ./test_tipc/output/PatchCore/stats Run successfully with command - python3.7 infer.py --stats=./test_tipc/output/PatchCore/stats --use_gpu=False --enable_mkldnn=False --cpu_threads=1 --model_file=./test_tipc/output/PatchCore/model.pdmodel --batch_size=1 --input_file=./test_tipc/data/MVTec/capsule/test/crack/001.png --precision=fp32 --params_file=./test_tipc/output/PatchCore/model.pdiparams > ./test_tipc/output/PatchCore/python_infer_cpu_usemkldnn_False_threads_1_precision_fp32_batchsize_1.log 2>&1 ! --- Running analysis [ir_graph_build_pass]--- Running analysis [ir_graph_clean_pass]--- Running analysis [ir_analysis_pass]--- Running IR pass [simplify_with_basic_ops_pass]--- Running IR pass [layer_norm_fuse_pass]--- Fused 0 subgraphs into layer_norm op.--- Running IR pass [attention_lstm_fuse_pass]--- Running IR pass [seqconv_eltadd_relu_fuse_pass]--- Running IR pass [seqpool_cvm_concat_fuse_pass]--- Running IR pass [mul_lstm_fuse_pass]--- Running IR pass [fc_gru_fuse_pass]--- fused 0 pairs of fc gru patterns--- Running IR pass [mul_gru_fuse_pass]--- Running IR pass [seq_concat_fc_fuse_pass]--- Running IR pass [squeeze2_matmul_fuse_pass]--- Running IR pass [reshape2_matmul_fuse_pass]--- Running IR pass [flatten2_matmul_fuse_pass]--- Running IR pass [map_matmul_v2_to_mul_pass]--- Running IR pass [map_matmul_v2_to_matmul_pass]--- Running IR pass [map_matmul_to_mul_pass]--- Running IR pass [fc_fuse_pass]--- Running IR pass [repeated_fc_relu_fuse_pass]--- Running IR pass [squared_mat_sub_fuse_pass]--- Running IR pass [conv_bn_fuse_pass]I0505 23:13:57.568568 3490 fuse_pass_base.cc:57] --- detected 15 subgraphs--- Running IR pass [conv_eltwiseadd_bn_fuse_pass]--- Running IR pass [conv_transpose_bn_fuse_pass]--- Running IR pass [conv_transpose_eltwiseadd_bn_fuse_pass]--- Running IR pass [is_test_pass]--- Running IR pass [runtime_context_cache_pass]--- Running analysis [ir_params_sync_among_devices_pass]--- Running analysis [adjust_cudnn_workspace_size_pass]--- Running analysis [inference_op_replace_pass]--- Running analysis [memory_optimize_pass]I0505 23:13:57.573712 3490 memory_optimize_pass.cc:216] Cluster name : conv2d_31.tmp_0 size: 262144 I0505 23:13:57.573740 3490 memory_optimize_pass.cc:216] Cluster name : batch_norm_0.tmp_2 size: 4194304 I0505 23:13:57.573742 3490 memory_optimize_pass.cc:216] Cluster name : pool2d_0.tmp_0 size: 1048576 I0505 23:13:57.573746 3490 memory_optimize_pass.cc:216] Cluster name : relu_0.tmp_0 size: 4194304 I0505 23:13:57.573750 3490 memory_optimize_pass.cc:216] Cluster name : conv2d_22.tmp_0 size: 1048576 I0505 23:13:57.573752 3490 memory_optimize_pass.cc:216] Cluster name : x size: 786432--- Running analysis [ir_graph_to_program_pass]I0505 23:13:57.589735 3490 analysis_predictor.cc:714] ======= optimize end ======= I0505 23:13:57.590353 3490 naive_executor.cc:98] --- skip [feed], feed -> x I0505 23:13:57.591871 3490 naive_executor.cc:98] --- skip [concat_0.tmp_0], fetch -> fetch W0505 23:13:57.659296 3490 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0505 23:13:57.663693 3490 device_context.cc:465] device: 0, cuDNN Version: 7.6. /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working from collections import Sized /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:130: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any beh*ior and is safe. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations if data.dtype == np.object: Inference model(PaDiM)... load train set feature from: ./test_tipc/output/PatchCore/stats Run successfully with command - python3.7 infer.py --stats=./test_tipc/output/PatchCore/stats --use_gpu=False --enable_mkldnn=False --cpu_threads=2 --model_file=./test_tipc/output/PatchCore/model.pdmodel --batch_size=1 --input_file=./test_tipc/data/MVTec/capsule/test/crack/001.png --precision=fp32 --params_file=./test_tipc/output/PatchCore/model.pdiparams > ./test_tipc/output/PatchCore/python_infer_cpu_usemkldnn_False_threads_2_precision_fp32_batchsize_1.log 2>&1 !
利用 broadcast 和 norm 实现 cdist,缺点是目前的 broadcast 机制会成倍消耗显存 使用条件判断适应2d/3d data,说起来没有atleast_nd这种函数还是不太方便
def cdist(X, Y, p=2.0):
dim = max(len(X.shape), len(Y.shape)) if dim==3: if len(Y.shape)==2:
Y = Y.unsqueeze(0) elif len(Y.shape)==1:
Y = Y.unsqueeze(0).unsqueeze(0) else: assert len(Y.shape)==3
assert Y.shape[0]=X.shape[0] #B, P, C = X.shape
#1|B, R, C = Y.shape
D = paddle.linalg.norm(X[:, :, None, :]-Y[None, :, :, :], p, axis=-1) return D
减少显存占用的写法:
def cdist(X, Y, p=2.0):
#2d P, C = X.shape| R, C = Y.shape -> P,R
P, C = X.shape
R, C = Y.shape
#3d B, P, C = X.shape|1, R, C = Y.shape -> B, P,R
#D = paddle.linalg.norm(X[:, None, :]-Y[None, :, :], axis=-1)
D = paddle.zeros((P, R)) for i in range(P):
D[i,:] = paddle.linalg.norm(X[i, None, :]-Y, axis=-1) #D[i,:] = (X[i, None, :]-Y).square().sum(-1).sqrt_()
return D
希望paddle Hackathon 能够早点补上原生实现(https://github.com/PaddlePaddle/community/blob/master/rfcs/APIs/20250316_api_design_for_cdist.md)
paddle.nn.AvgPool2D 默认exclusive=True, 与pytorch对应的参数为exclusive=False
以上就是【论文复现】PatchCore: 面向全召回率的工业异常检测的详细内容,更多请关注其它相关文章!
# 官网
# 昆山网站建设立项
# 做蛋糕如何营销产品推广
# 连江专业seo公司
# 安桥头村营销推广中心
# 潞城百度网站优化
# 网络营销seo网站推广的目的
# 赣州关键词优化排名
# seo案例资讯
# seo医疗推广
# 中国网站优化广告
# 并在
# 不太
# 在此
# 进行测试
# 进行了
# python
# 显存
# 为例
# 中文网
# 一言
# whee
# latte
# design
# udio
# follow
# asic
# igs
# red
# 百度
# ai
# git
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
酒店业将如何受益于人工智能的改变?
昇腾AI大模型训推一体化解决方案将在WAIC发布
联想首发AI PC于今年秋季,英特尔CEO确认AI PC时代来临
构建人机交互创新模式,微美全息研究AIGC智能交互界面生成技术
华为小艺AI助手将实现强大的大模型能力
AI大模型紫东太初已被注册商标 中科院已注册紫东太初大模型商标
美图秀秀发布7款AI产品:支持用户创作、商业创作
上海发布“元宇宙关键技术攻关行动方案”,加快 AIGC 等突破
乐天派桌面机器人加入小米米家生态系统,实现与其他智能设备的互联
OpenAI 向所有付费 API 用户开放 GPT-4
微软 Copilot 团队主管呼吁用户与 AI 交流时应使用恰当的礼貌用语
如何利用物联网技术提高企业生产线智能化水平,提升生产效率
日媒关注中国推进鸟类识别 AI 普及,除监测保护外还可预防传染性疾病
第四范式「式说」大模型入选《2025年通用人工智能创新应用案例集》
云深处科技绝影 Lite3 与 X20 四足机器人亮相
元宇宙技术带你穿梭“大运河”,江苏书展上的数字阅读馆吸睛小读者
1000万张照片训练AI模型 科学家找到水下定位新方法
调查显示:实际上没有那么多人在用 ChatGPT
“木头姐”:特斯拉的人工智能训练——“赢家通吃”的机会
AI 冥想应用 Ogimi.ai 推出,可为用户提供教练级个性化指导
腾讯TRS之元学习与跨域推荐的工业实战
微软商店 AI 摘要功能开启预览,帮助用户迅速了解应用评价
AI技术加速迭代:周鸿祎视角下的大模型战略
食品分销跨国企业Sysco CIDO:我们的增长秘诀是以IT为中心
彭博社:苹果Vision Pro曾测试VR手柄追踪方案
AI人工智能软件,婚纱设计师的必备利器
微软AR/VR专利提出使用时间复用谐振驱动产生双极性电源
7/8上海 | 2025世界人工智能大会分论坛:科技与人文-共筑无障碍智能社会
令人震惊的特斯拉机器人
OpenAI宣布组建新团队 以控制“超级智能”人工智能
海柔创新携手SAP,以机器人技术助力全球客户升级数智化竞争力
OpenAI更新GPT-4等模型,新增API函数调用,价格最高降75%
【原创】奥比中光:与英伟达合作开发的3D开发套件正式发布 连接英伟达AI应用生态
360发布AI数字人广场,可同孙悟空、爱因斯坦等古今中外角色对话
机构研选 | 虚拟电厂是电力物联网升级版 智能电网望迎来高速发展
2025VR&AR显示技术峰会展示歌尔光学最新一代光学模组
OpenAI CEO 山姆・阿尔特曼呼吁 AI 领域中美应当合作
人工智能在服务优化方面优缺点有哪些
小米9号员工李明宣布创业:打造首款安卓桌面机器人
华为4G5G通信物联网收费标准公布,多年研发成果,十年花费近万亿
30+大模型齐聚,大模型成世界人工智能大会“顶流”
腾讯自主研发机器狗 Max 升级,可“奔跑跳跃”完成避障动作
Intel酷睿Ultra发布会官宣!迈向全新的AI时代
笔神作文声讨学而思AI大模型 称用“爬虫”技术盗取数据
Midjourney创始人:AI应该成为人类思想的延伸
杭州举办第19届亚运会,主题为「亚运元宇宙」的发布仪式举行
AI取代人工先拿教育行业开刀?美版“作业帮”启动裁员
AYANEO 安卓掌机 Pocket AIR 配置公布:天玑 1200 + 5.5 英寸屏
人工智能时代的科幻译者怎么办?“做好翻译工作的高端10%”|文化观察
360发布数字安全和人工智能的强大结合:360安全大模型
2025-07-22
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。