Tensorflow를 이용해 Object Detection 모델을 학습(train)하고 사용하는 것을 쉽게 도와주는 오픈소스 프레임워크 (이하 TF ObDe API)
API 설치
해당 API를 사용하기 위해 Tensorflow를 먼저 설치해줘야 한다.
포스팅에서는 Windows 10에 설치했다.
공식 가이드 : 공식 git, Readthedocs
설치 환경
- Windows 10 Pro
- Anaconda 22.9.0(python 3.9)
- tensorflow 2.10
- protoc 22.0
- Visual Studio 2022
1. python 가상환경 제작
# 가상환경 생성
conda create -n [가상환경 이름] python==[python 버전]
# 가상환경 목록 보기
conda env list
# 가상환경 activate
conda activate [가상환경 이름]
# 가상환경 deactivate
conda deactivate
2. tensorflow 설치
버전은 2.10으로 설치했다.
pip install tensorflow==2.10
3. tensorflow model git clone
git clone https://github.com/tensorflow/models.git
4. protobuf 설치
압축을 풀고 아래 명령어로 compile해준다.
PATH/TO/PROTO/bin/protoc object_detection/protos/*.proto --python_out=.
Compile에 성공하는 경우 proto파일만 존재했던 폴더에 python 파일도 생성됨을 볼 수 있다.
5. Visual Studio 설치
윈도우의 경우 pycocotools를 설치하기 위해서 C++ build tools의 설치가 선행되어야한다.
Visual Studio를 설치해 해결할 수 있다.
Build tools : https://aka.ms/vs/17/release/vs_BuildTools.exe
6. object detection API 설치
object_detection/packages/tf2/setup.py를 models/research로 복사
# models/research에서 다음 실행
python -m pip install .
7. 설치 테스트
ObDe API의 설치가 제대로 되었는지 확인할 수 있는 script도 지원해준다
python object_detection\builders\model_builder_tf2_test.py
OK가 뜨는 경우 설치가 성공적으로 되었음을 나타낸다.
GPU 세팅
GPU가 있는 경우 nvidia CUDA toolkit과 cuDNN을 추가로 설치하면 CPU 대신 GPU를 사용하는 세팅이 된다.
GPU 드라이버가 설치된 경우 nvidia-smi로 GPU 상태를 확인할 수 있다.
CUDA version을 볼 수 있는데, 해당 버전의 CUDA toolkit을 설치해주어야한다.
CUDA toolkit : https://developer.nvidia.com/cuda-toolkit-archive
CUDA toolkit을 설치하면 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\ 이하 경로로 설치가 되며 환경변수 세팅까지 완료된다
cuDNN : https://developer.nvidia.com/rdp/cudnn-download
cuDNN은 nvidia 로그인이 필요하다
설치한 CUDA의 버전에 맞게 선택
다운받은 파일 압축을 풀면 bin, include, lib 폴더가 있는데, 해당 내용을 각각 CUDA toolkit 설치 경로안에 폴더 안에 넣어준다.
tensorflow를 import 하고 아래 명령어로 연결된 GPU 확인 가능
tf.config.list_physical_devices('GPU')
이렇게 세팅을 했는데도 불구하고 API를 돌리는 경우 GPU 관련 에러가 터진다.
NVIDIA cuDNN 링크에서 zlib dll을 다운, 압축풀고 dll_x64 > zlibwapi.dll을 설치된 CUDA 디렉토리(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\[버전])의 bin 안에 복사하면 해결
이후 ‘Can’t find libdevice’ 관련 에러가 한번 더 터지는데, CUDA 툴킷 안의 nvvm 디렉토리를 object_detection으로 복사해주면 간단하게 해결가능하다.