본문 바로가기
프로그램 활용/인공지능(AI)

[자료수집] YOLO v4 텐서플로 개발 환경 만들기(NO Anaconda)

by 3604 2022. 7. 17.
728x90

YOLO v4 텐서플로 개발 환경 만들기(NO Anaconda)

출처: https://wiserloner.tistory.com/1248?category=825446

- 기존의 https://wiserloner.tistory.com/1247에서 이어집니다.

이것 역시 비공개를 하려다가 공개합니다.

이미 공개하신 분들이 많고, 보통 YOLO 하나만 주력으로 사용하기보단 다른 모델이나 기술을 응용하는 부분이 많기 때문입니다.
(애초에 yolo자체가 보다 많은 사람이 사용하라고 공개한 것이라 이전 글을 비공개한 것이 부끄럽네요.)

 

0. https://github.com/hunglc007/tensorflow-yolov4-tflite에서 프로젝트를 다운받고 압축을 풉니다.

실행환경에는 텐서플로가 필요하니,

저번까지 따라오신 분이라면,

 

python -m pip install --upgrade pip

pip install tensorflow-gpu==2.3.0rc0

pip install opencv-python

pip install easydict

pip install image

 

// PIL 이미지 라이브러리

pip install pillow

 

// 쥬피터 노트북

pip install jupyterlab

pip install notebook

를 하면 됩니다.

 

1. yolo v4 가중치 파일을 다운받습니다.

YOLO 해당 git hub에 들르셔도 되고, 그냥 https://drive.google.com/file/d/1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT/view에서 받아도 됩니다.

받은 weight 파일을,

tensorflow-yolov4-tflite-master\data

위치로 붙여넣습니다.

 

1. cmd를 켜서 압축 푼 위치로 이동합니다.

python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4

위 명령어를 입력하면 기본 weights를 가진 yolo 모델 save 파일이 출력됩니다.

 

tf lite용으로 출력하려면,

python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416-tflite --input_size 416 --model yolov4 --framework tflite
python convert_tflite.py --weights ./checkpoints/yolov4-416-tflite --output ./checkpoints/yolov4-416.tflite

 

2. 실행을 확인하려면,

python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --image ./data/kite.jpg

 

lite 버전의 경우는,

python detect.py --weights ./checkpoints/yolov4-416.tflite --size 416 --model yolov4 --image ./data/kite.jpg --framework tflite

 

lite 버전은 이름대로 경량화 버전이라 정확도가 조금 낮아진 대신 빠르다는 장점이 있습니다.

모바일 환경이나 소형 디바이스 환경에서 좋겠죠.

 

저장된 텐서플로 모델은 ./checkpoints에, 위에서 설정한 이름대로의 위치에 존재합니다.

 

- 잠깐 텐서플로 2.0의 모델 세이브 파일에 대해 이야기하자면,

지금 잠시 코랩을 켜서,

import tensorflow as tf
import numpy as np
model = tf.keras.Sequential([
    tf.keras.layers.Dense(5, input_shape=(3,)),
    tf.keras.layers.Softmax()])
model.save('/tmp/model')

를 해보세요.

위에서 우리가 yolo 모델을 저장한 것과 같은 방식인데,

tmp/model에 텐서플로 모델이 저장되는 것입니다.

 

이를 확인해보면,

%cd /tmp/model

이렇게 디렉토리를 바꾸고,

 

!dir

이렇게 확인이 가능한데,

내부 정보가,assets, saved_model.pb, variables

이렇게 저장된 것을 볼수 있을겁니다.

 

yolo 모델도 저장이 되었다면 이렇게 저장되었을텐데,

위와 같은 정보가 텐서플로 모델을 이루는 설정, 구조, 그리고 가중치를 의미합니다.

이를 복원해서 다시 텐서플로 모델로 가져오려면,

loaded_model = tf.keras.models.load_model('/tmp/model')
x = tf.random.uniform((10, 3))
assert np.allclose(model.predict(x), loaded_model.predict(x))

위와 같이 모델 파일이 저장된 위치에 load_model을 한후,

기존 모델을 사용하듯 predict를 하거나 뭘 하건 상관 없습니다.

 

yolo의 인터페이스는, 샘플코드를 확인하시거나, summary를 해서 알아보세요.



// 끝입니다.
나머지는 텐서플로 모델을 사용하시듯 개발하면 됩니다.

공개된 깃헙엔 커스텀 학습 방법까지 있으니 참고하세요.

텐서플로로 해석하는 저 코드는 이후 분석해서 정리할 것입니다.

 

깔끔하게, 아나콘다를 이용한 가상 환경 구축 방법에 의한 개발방식은 추후 정리해서 곧바로 개발에 들어갈수 있게 하려 합니다.

728x90