우리의 프로젝트는 실시간으로 객체를 검출해야 하는 파트가 있기 때문에 YOLO 모델을 선택하기로 했다.
그리고 리눅스 서버에서 환경 설정하기 전 연습 삼아서 로컬 Window 환경에서 yolo4-tensor flow 버전을 돌려보았다.
일단 환경설정은 Python ver 3.7과 Tensorflow 2.3.0rc0이다.
나는 아나콘다 환경에서 진행했기에 처음 가상 환경을 설정해주었다.
아나콘다를 사용하지 않는다면 명령 프롬포트(CMD) 들어가서 2번에 있는 pip install tensorflow 부터 바로 진행하면 된다.
1. Anaconda Prompt에서 가상 환경 생성.
conda create -n [영어 이름] python=3.7
나는 conda create -n yolo4 python=3.7로 생성했다.
2. 가상 환경으로 바꾸고 tensorflow 설치하기
conda activate 내이름
pip install tensorflow==2.3.0rc0
잘 설치가 되었는지 확인하려면 tensorflow를 import 해서 버전을 확인해본다.
python // 파이썬 접속
Python 3.7.10 (default, Feb 26 2021, 13:06:18) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
2021-04-10 15:53:28.846191: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2021-04-10 15:53:28.846377: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
>>> tf.__version__
'2.3.0-rc0'
>>>
위처럼 library 경고 오류가 뜨는 경우 tensorflow가 GPU를 이용할 때 해당. dll 파일을 찾지 못해서 나오는 오류라고 한다.
해결방법은 NVIDIA GPU 경우 CUDA Toolkit을 설치하면 된다고 한다.
설치를 하면 cuda toolkit 폴더에 'cudart64_101.dll' 파일을 찾을 수 있다고 한다.
물론 나의 경우는 Radeon GPU라 CUDA를 사용하지 못해서 그냥 진행했다.
(저 오류 떠도 그냥 cpu로 돌리고 싶으면 그냥 해도 진행이 가능했다.)
버전이 잘 나오면 다음 단계로 진행한다.
3. 깃헙가서 파일을 다운로드하여 준다.
github.com/hunglc007/tensorflow-yolov4-tflite
Download ZIP을 통해 파일을 다운로드하여준다.
경로는 자신의 명령 프롬포트의 기본 경로에 설정해주면 불필요한 폴더 위치 변경이 줄어들 것이다.
나 또한
기본이 Users/miki3/이어서 여기에 바로 압축을 풀었다.
4. YOLO4 weight 가중치 파일을 다운로드하여 준다.
https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT
깃헙 readme에 가중치 파일 또한 올려놓아주셨다. 다운로드한 후
3번에서 압축을 푼 폴더의 data 폴더 안 경로에 넣어준다.
5. 가중치 파일을 tensorflow에 맞게 변환해주기.
기본 경로에 풀었다면 바로 현 위치를 변경해주거나
cd tensorflow-yolov4-tflite-master
또는 자신의 경로에 설치했다면 그 경로로 폴더를 이동해준다.
밑의 명령어를 보면 ./ (나의 위치에서) data 폴더로 들어가기 때문에
현재 내 위치는 tensorflow-yolov4-tflite-master 폴더 (아까 다운로드한 후 압축 풀어준 폴더)에 있어야 정상 작동한다.
또한 가중치 파일 또한 data폴더 안의 경로에 있어야 작동한다.
# Convert darknet weights to tensorflow
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4
- 나의 경우 여기서 import error가 나왔고 설치해주었다.
pip install opencv-python
pip install easydict
6. 가중치 파일이 생성되었고 이제 demo 명령어를 통해 사진을 검출해본다.
이 역시 pil(python image library)가 필요하기 때문에 pillow를 install 해준다.
pip install pillow
python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --image ./data/kite.jpg
kite.jpg는 미리 저장되어있던 사진이고 내 사진을 이용해 보고 싶으면 저 경로처럼 data 폴더 안에 ~~. jpg를 넣어서 명령어를 변경하면 검출된 사진이 그림판이나 로컬 사진 편집기 등으로 뜰 것이다.
나의 경우는 알씨로 사진이 출력되었다.
계속해서 CUDA 세팅을 하고 리눅스 서버에서 돌리는 것과 실시간 영상의 객체 검출, custom dataset을 학습 등 프로젝트가 진행되는 대로 포스팅을 해보겠다.
'프로젝트 기록 > 캡스톤 종합설계' 카테고리의 다른 글
[AWS] ec2 인스턴스 putty 접속시 Connection Timed out 에러 (2) | 2021.03.18 |
---|---|
[AWS] EC2 인스턴스에 putty를 이용해서 접속하기 (0) | 2021.03.18 |
[AWS] EC2 인스턴스에 ssh 접속을 위한 외부 IP 추가하기 (0) | 2021.03.18 |