CPMF_실습
https://github.com/caoyunkang/CPMF
GitHub - caoyunkang/CPMF: [PR] Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection
[PR] Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection - caoyunkang/CPMF
github.com
Git clone
git https://github.com/caoyunkang/CPMF
cd CPMF
가상환경 세팅 & 초기 라이브러리 설치
conda create -n 3d_cpmf python=3.7
conda activate 3d_cpmf
sh init.sh
제 환경은 CUDA 11.8 이라 python=3.8 로 진행했고, 이미 pytorch 가 설치돼있기 때문에 init.sh 에서 pytorch 설치 부분은 제거했다.
데이터셋 다운로드
mkdir datasets
cd datasets
wget https://www.mydrive.ch/shares/45920/dd1eb345346df066c63b5c95676b961b/download/428824485-1643285832/mvtec_3d_anomaly_detection.tar.xz
mkdir mvtec_3d
tar -xvf mvtec_3d_anomaly_detection.tar.xz -c ./mvtec_3d
데이터셋 전처리
1. MVtec_3d
preprocess_dataset.sh 에서 상대경로 -> 절대경로로 변경
또 export DISPLAY=:0.0 => export DISPLAY=:1.0 으로 변경
sh preprocess_dataset.sh
Training
feture_extractors/fetures.py 에서
def forward 에 x = x.to(self.device) 주석처리 부분 풀어주기. (안그러면 데이터는 cpu, 모델은 gpu에 올라가 있어 오류 발생)
utils/visz_utils.py
맨 위에 import scienceplots 추가
export data_dir="/home/kdh/Project/CPMF/datasets/mvtec_3d_multiview"
export exp_name="cpmf_resnet18_1"
python main.py --category bagel --n-views 27 --no-fpfh False --data-path $data_dir --exp-name $exp_name --backbone resnet18 --draw True
이때 draw False 로 해도 됨. draw: AD feature 작업 시각화
결과
Class: bagel, Image ROCAUC: 0.9824, Pixel ROCAUC: 0.9860, AU-PRO: 0.9592
Class: cable_gland, Image ROCAUC: 0.8894, Pixel ROCAUC: 0.9865, AU-PRO: 0.9454
Class: carrot, Image ROCAUC: 0.9902, Pixel ROCAUC: 0.9973, AU-PRO: 0.9794
Class: cookie, Image ROCAUC: 0.9889, Pixel ROCAUC: 0.9267, AU-PRO: 0.8700
Class: dowel, Image ROCAUC: 0.9645, Pixel ROCAUC: 0.9684, AU-PRO: 0.8976
Class: foam, Image ROCAUC: 0.8069, Pixel ROCAUC: 0.9290, AU-PRO: 0.7273
Class: peach, Image ROCAUC: 0.9891, Pixel ROCAUC: 0.9974, AU-PRO: 0.9798
Class: potato, Image ROCAUC: 0.9615, Pixel ROCAUC: 0.9974, AU-PRO: 0.9808
Class: tire, Image ROCAUC: 0.9632, Pixel ROCAUC: 0.9960, AU-PRO: 0.9771