CutPaste
CutPaste Model은 이미지 기반 이상 탐지(Anomaly Detection)를 위한 Self-Supervised Learning 프레임워크이다. 이 모델은 정상(Normal) 데이터만 활용해 학습하고, 실제 결함(Anomaly) 데이터를 사용하지 않고 미지의 이상 패턴을 효과적으로 탐지할 수 있도록 설계되었다.


Github CutPaste Download ZIP
먼저, CutPaste .ZIP을 다운 받는다. 아래의 링크를 통해 다운 받을 수 있다.

Download ZIP을 통해 다운받아준다.
https://github.com/LilitYolyan/CutPaste
GitHub - LilitYolyan/CutPaste: Unofficial implementation of Google "CutPaste: Self-Supervised Learning for Anomaly Detection and
Unofficial implementation of Google "CutPaste: Self-Supervised Learning for Anomaly Detection and Localization" in PyTorch - LilitYolyan/CutPaste
github.com
참고로, 학습하는데 1 epoch = 약 35 sec 걸린다.

다운받은 .zip 파일을 Visual Studio Code를 통해 열어준다.

모델 학습 환경을 만들어 주기 위해 Anaconda3를 설치한다.
GPU Setting
딥러닝 학습을 진행하기 위해 GPU 설치가 필수적인데, windows PC기준 GPU가 NVIDIA라면 cmd 또는 명령 프롬프트를 통해 아래의 방법을 통해 확인해 볼 수 있다.
nvidia-smi

해당 PC는 GPU가 1개 내장되어있으며, GPU = 0, NVIDIA GeForce RTX 4070 Ti이다.
CutPaste가 정상적으로 돌아가기 위해 Anaconda3 가상환경을 설치한다.
conda create -n cutpaste python=3.8 # 가상환경 생성
conda activate cutpaste # 가상환경 활성화
다음으로 내장된 GPU를 가상환경에서 작동시키기 위해 CUDA와 cuDNN을 설치한다.
해당 버전은 GPU 사양에 맞게 설치하면 된다.
windows 환경에서 GPU를 사용해야하며, PyTorch 버전의 이유로 CUDA11.3, cuDNN8.2.1 버전을 설치하였다.
conda install nvidia/label/cuda-11.3.1::cuda-toolkit
conda install nvidia/label/cudnn-8.2.1::cudnn
다른 버전의 설치는 아래에서 확인할 수 있다.
https://anaconda.org/nvidia/cuda
Cuda | Anaconda.org
2025 Python Packaging Survey is now live! Take the survey now
anaconda.org
https://developer.nvidia.com/rdp/cudnn-archive
cuDNN Archive
Download releases from the GPU-accelerated primitive library for deep neural networks.
developer.nvidia.com
CutPaste에서 사용하는 PyTorch 설치를 위해 해당 버전을 설치한다.
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
다른 설치 버전은 아래에서 확인할 수 있다.
https://pytorch.org/get-started/previous-versions/
Previous PyTorch Versions
Access and install previous PyTorch versions, including binaries and instructions for all platforms.
pytorch.org
GPU test도 잊지 않고 진행한다. 이때, Python으로 진행한다.
import torch
print("CUDA 사용 가능 여부: ", torch.cuda.is_available)
print("GPU 개수: ", torch.cuda.device_count())
for i in range(torch.cuda.device_count()):
print(f"GPU {i} 이름: ", torch.cuda.get_device_name(i))
CutPaste requirements.txt
정상적으로 CutPaste를 동작시키기 위해 필수 라이브러리를 설치한다.
아래의 버전을 보면 현재 사용되는 버전과 다르게 pip installer의 버전을 낮춰주게 되는데, 이는 PyTorch 버전이 1.X 등 낮은 버전이 사용되어 설치하는 모듈의 버전들이 낮기 때문에 기존의 pip installer version이 25.X를 downgrade 진행한다.
python.exe -m pip install pip==23.3.1
라이브러리를 설치하기 전, 프로젝트가 있는 해당 폴더로 이동한다.
해당 프로젝트 시 D 드라이브에 모델을 다운받아 D 드라이브의 project 폴더로 경로를 변경하여 진행하였다.
d:
cd project folder
이후 해당 CutPaste 모델 폴더에 들어있는 requirements에 맞게 설치를 진행한다.
pip install -r requirements.txt

다운받은 CutPaste 폴더의 requirements.txt에는 필수 다운로드 라이브러리의 버전을 설명해주고 있다.
이후 테스트와 version 등의 문제로 아래의 모듈을 추가적으로 설치하였다.
pip install setuptools==58.0.4
pip install opencv-python==4.5.5.64 # 테스트 시 추가
위와 같은 버전으로 설정하였다. 혹시 몰라 아래의 버전도 참조한다.
(cutpaste) PS C:\Users\Administrator> conda list
# packages in environment at C:\Users\Administrator\anaconda3\envs\cutpaste:
#
# Name Version Build Channel
absl-py 2.3.0 pypi_0 pypi
aiohappyeyeballs 2.4.4 pypi_0 pypi
aiohttp 3.10.11 pypi_0 pypi
aiosignal 1.3.1 pypi_0 pypi
async-timeout 5.0.1 pypi_0 pypi
attrs 25.3.0 pypi_0 pypi
blas 2.132 mkl conda-forge
blas-devel 3.9.0 32_hfb1a452_mkl conda-forge
bzip2 1.0.8 h2bbff1b_6
ca-certificates 2025.6.15 h4c7d964_0 conda-forge
cachetools 5.5.2 pypi_0 pypi
cccl 2.3.2 h47f531a_0
certifi 2025.6.15 pypi_0 pypi
charset-normalizer 3.4.2 pypi_0 pypi
colorama 0.4.6 pypi_0 pypi
cuda-command-line-tools 11.3.1 h46d18f5_0 nvidia/label/cuda-11.3.1
cuda-compiler 11.3.1 h46d18f5_0 nvidia/label/cuda-11.3.1
cuda-cudart 11.3.109 h90d3b27_0 nvidia/label/cuda-11.3.1
cuda-cuobjdump 11.3.122 hbfb3ce2_0 nvidia/label/cuda-11.3.1
cuda-cupti 11.3.111 h1d2d2a3_0 nvidia/label/cuda-11.3.1
cuda-cuxxfilt 11.3.122 hc6e7a92_0 nvidia/label/cuda-11.3.1
cuda-libraries 11.3.1 h46d18f5_0 nvidia/label/cuda-11.3.1
cuda-libraries-dev 11.3.1 h46d18f5_0 nvidia/label/cuda-11.3.1
cuda-memcheck 11.3.109 h23f69e8_0 nvidia/label/cuda-11.3.1
cuda-nvcc 11.3.122 h790fb98_0 nvidia/label/cuda-11.3.1
cuda-nvdisasm 11.3.122 h2cc5393_0 nvidia/label/cuda-11.3.1
cuda-nvml-dev 11.3.58 hbc9c638_0 nvidia/label/cuda-11.3.1
cuda-nvprof 11.3.111 h418b846_0 nvidia/label/cuda-11.3.1
cuda-nvprune 11.3.122 h8d04b39_0 nvidia/label/cuda-11.3.1
cuda-nvrtc 11.3.122 h4fd7f55_0 nvidia/label/cuda-11.3.1
cuda-nvtx 11.3.109 hc90bad4_0 nvidia/label/cuda-11.3.1
cuda-nvvp 11.3.111 h50c1cf3_0 nvidia/label/cuda-11.3.1
cuda-samples 11.3.58 h9a5194a_0 nvidia/label/cuda-11.3.1
cuda-sanitizer-api 11.3.111 hb9b8c8e_0 nvidia/label/cuda-11.3.1
cuda-thrust 11.3.109 hfc8979d_0 nvidia/label/cuda-11.3.1
cuda-toolkit 11.3.1 h46d18f5_0 nvidia/label/cuda-11.3.1
cuda-tools 11.3.1 h46d18f5_0 nvidia/label/cuda-11.3.1
cuda-version 11.3 hbc958af_3 conda-forge
cudatoolkit 11.3.1 hf2f0253_13 conda-forge
cycler 0.12.1 pypi_0 pypi
expat 2.7.1 h8ddb27b_0
fontconfig 2.14.1 hb33846d_3
fonttools 4.57.0 pypi_0 pypi
freetype 2.13.3 h0620614_0
frozenlist 1.5.0 pypi_0 pypi
fsspec 2025.3.0 pypi_0 pypi
future 1.0.0 pypi_0 pypi
google-auth 2.40.3 pypi_0 pypi
google-auth-oauthlib 1.0.0 pypi_0 pypi
grpcio 1.70.0 pypi_0 pypi
idna 3.10 pypi_0 pypi
importlib-metadata 8.5.0 pypi_0 pypi
intel-openmp 2024.2.1 h57928b3_1083 conda-forge
jbig 2.1 h8d14728_2003 conda-forge
joblib 1.4.2 pypi_0 pypi
jpeg 9e hcfcfb64_3 conda-forge
khronos-opencl-icd-loader 2024.05.08 h8cc25b3_0
kiwisolver 1.4.7 pypi_0 pypi
krb5 1.20.1 h5b6d351_0
lcms2 2.12 h2a16943_0 conda-forge
lerc 2.2.1 h0e60522_0 conda-forge
libblas 3.9.0 32_h641d27c_mkl conda-forge
libcblas 3.9.0 32_h5e41251_mkl conda-forge
libcublas 11.5.1.109 h534c3b9_0 nvidia/label/cuda-11.3.1
libcufft 10.4.2.109 h5b78ae5_0 nvidia/label/cuda-11.3.1
libcurand 10.2.4.109 h8bccdc1_0 nvidia/label/cuda-11.3.1
libcusolver 11.1.2.109 hbc28524_0 nvidia/label/cuda-11.3.1
libcusparse 11.6.0.109 h4f1f2d5_0 nvidia/label/cuda-11.3.1
libdeflate 1.7 h8ffe710_5 conda-forge
libffi 3.4.4 hd77b12b_1
libglib 2.84.2 h405b238_0
libhwloc 2.11.2 default_ha69328c_1001 conda-forge
libiconv 1.16 h2bbff1b_3
liblapack 3.9.0 32_h1aa476e_mkl conda-forge
liblapacke 3.9.0 32_h845c4fa_mkl conda-forge
liblzma 5.8.1 h2466b09_2 conda-forge
liblzma-devel 5.8.1 h2466b09_2 conda-forge
libnpp 11.3.3.95 h0a60a38_0 nvidia/label/cuda-11.3.1
libnvjpeg 11.5.0.109 ha56d775_0 nvidia/label/cuda-11.3.1
libpng 1.6.39 h8cc25b3_0
libtiff 4.3.0 h0c97f57_1 conda-forge
libuv 1.51.0 h2466b09_0 conda-forge
libwinpthread 12.0.0.r4.gg4f2fc60ca h57928b3_9 conda-forge
libxml2 2.13.8 h866ff63_0
lightning-utilities 0.11.9 pypi_0 pypi
lz4-c 1.9.3 h8ffe710_1 conda-forge
markdown 3.7 pypi_0 pypi
markupsafe 2.1.5 pypi_0 pypi
matplotlib 3.5.1 pypi_0 pypi
mkl 2024.2.2 h66d3029_15 conda-forge
mkl-devel 2024.2.2 h57928b3_15 conda-forge
mkl-include 2024.2.2 h66d3029_15 conda-forge
multidict 6.1.0 pypi_0 pypi
numpy 1.21.2 pypi_0 pypi
oauthlib 3.3.1 pypi_0 pypi
olefile 0.47 pyhd8ed1ab_0 conda-forge
opencv-python 4.5.5.64 pypi_0 pypi
openjpeg 2.4.0 hb211442_1 conda-forge
openssl 3.5.1 h725018a_0 conda-forge
packaging 25.0 pypi_0 pypi
pcre2 10.42 h0ff8eda_1
pillow 8.4.0 pypi_0 pypi
pip 23.3.1 pypi_0 pypi
propcache 0.2.0 pypi_0 pypi
protobuf 3.20.3 pypi_0 pypi
pyasn1 0.6.1 pypi_0 pypi
pyasn1-modules 0.4.2 pypi_0 pypi
pydeprecate 0.3.1 pypi_0 pypi
pyparsing 3.1.4 pypi_0 pypi
python 3.8.20 h8205438_0
python-dateutil 2.9.0.post0 pypi_0 pypi
python_abi 3.8 2_cp38 conda-forge
pytorch 1.10.1 py3.8_cuda11.3_cudnn8_0 pytorch
pytorch-lightning 1.5.7 pypi_0 pypi
pytorch-mutex 1.0 cuda pytorch
pyyaml 6.0.2 pypi_0 pypi
requests 2.32.4 pypi_0 pypi
requests-oauthlib 2.0.0 pypi_0 pypi
rsa 4.9.1 pypi_0 pypi
scikit-learn 1.0.2 pypi_0 pypi
scipy 1.10.1 pypi_0 pypi
setuptools 58.0.4 pypi_0 pypi
six 1.17.0 pypi_0 pypi
sqlite 3.45.3 h2bbff1b_0
tbb 2021.13.0 h62715c5_1 conda-forge
tensorboard 2.14.0 pypi_0 pypi
tensorboard-data-server 0.7.2 pypi_0 pypi
threadpoolctl 3.5.0 pypi_0 pypi
tk 8.6.13 h2c6b04d_2 conda-forge
torchaudio 0.10.1 py38_cu113 pytorch
torchmetrics 1.5.2 pypi_0 pypi
torchvision 0.11.2 py38_cu113 pytorch
tqdm 4.62.3 pypi_0 pypi
typing_extensions 4.12.2 pyha770c72_0 conda-forge
ucrt 10.0.22621.0 h57928b3_1 conda-forge
urllib3 2.2.3 pypi_0 pypi
vc 14.42 haa95532_5
vc14_runtime 14.44.35208 h818238b_26 conda-forge
vs2015_runtime 14.44.35208 h38c0c73_26 conda-forge
vs2017_win-64 19.16.27032.1 hb4161e2_3
vswhere 2.8.4 haa95532_0
werkzeug 3.0.6 pypi_0 pypi
wheel 0.44.0 py38haa95532_0
xz 5.8.1 h208afaa_2 conda-forge
xz-tools 5.8.1 h2466b09_2 conda-forge
yarl 1.15.2 pypi_0 pypi
zipp 3.20.2 pypi_0 pypi
zlib 1.2.13 h8cc25b3_1
zstd 1.5.0 h6255e5f_0 conda-forge
보통 pip install requirements.txt로 환경설정을 진행하지만, 버전의 따른 ERROR이 발생한다면 위와 같이 각각 설치를 진행하면 된다.
환경설정을 마치도록 한다.
참고
https://arxiv.org/abs/2104.04015
CutPaste: Self-Supervised Learning for Anomaly Detection and Localization
We aim at constructing a high performance model for defect detection that detects unknown anomalous patterns of an image without anomalous data. To this end, we propose a two-stage framework for building anomaly detectors using normal training data only. W
arxiv.org
https://github.com/LilitYolyan/CutPaste
GitHub - LilitYolyan/CutPaste: Unofficial implementation of Google "CutPaste: Self-Supervised Learning for Anomaly Detection and
Unofficial implementation of Google "CutPaste: Self-Supervised Learning for Anomaly Detection and Localization" in PyTorch - LilitYolyan/CutPaste
github.com
'전공은 살려야지 > 머신러닝' 카테고리의 다른 글
| SRGAN Custom Training (3) - Custom Trainning (5) | 2025.07.07 |
|---|---|
| SRGAN Custom Training (2) - Dataset Custom Setting (2) | 2025.07.04 |
| SRGAN Custom Training (1) - GPU Setting (3) | 2025.06.27 |