dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • 반성
  • 기록
  • 회고
  • Baekjoon
  • 백준 DP
  • HackerRank mysql
  • dp
  • AI Tech
  • 스프링
  • 프로그래머스
  • 네이버 부스트캠프
  • 일기
  • 그래프탐색
  • 부스트캠프
  • Hackerrank
  • BFS
  • 서블릿
  • 백준
  • 프로그래머스 SQL
  • c++

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

[Tensorflow-YOLO4] Window 환경에서 YOLO4 모델을 통해 객체 검출해보기.
프로젝트 기록/캡스톤 종합설계

[Tensorflow-YOLO4] Window 환경에서 YOLO4 모델을 통해 객체 검출해보기.

2021. 4. 10. 16:50
728x90

우리의 프로젝트는 실시간으로 객체를 검출해야 하는 파트가 있기 때문에 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

 

hunglc007/tensorflow-yolov4-tflite

YOLOv4, YOLOv4-tiny, YOLOv3, YOLOv3-tiny Implemented in Tensorflow 2.0, Android. Convert YOLO v4 .weights tensorflow, tensorrt and tflite - hunglc007/tensorflow-yolov4-tflite

github.com

 

Download ZIP을 통해 파일을 다운로드하여준다.

경로는 자신의 명령 프롬포트의 기본 경로에 설정해주면 불필요한 폴더 위치 변경이 줄어들 것이다.

나 또한

기본이 Users/miki3/이어서 여기에 바로 압축을 풀었다.

 

4. YOLO4 weight 가중치 파일을 다운로드하여 준다.

https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT

 

yolov4.weights

 

drive.google.com

깃헙 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을 학습 등 프로젝트가 진행되는 대로 포스팅을 해보겠다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'프로젝트 기록 > 캡스톤 종합설계' 카테고리의 다른 글

[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
    '프로젝트 기록/캡스톤 종합설계' 카테고리의 다른 글
    • [AWS] ec2 인스턴스 putty 접속시 Connection Timed out 에러
    • [AWS] EC2 인스턴스에 putty를 이용해서 접속하기
    • [AWS] EC2 인스턴스에 ssh 접속을 위한 외부 IP 추가하기
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바