관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

합성곱 신경망 10 - 객체 탐지 2 : YOLO 객체 탐지 1 <Darknet YOLO 모델 추론하기> 본문

인공지능/딥러닝

합성곱 신경망 10 - 객체 탐지 2 : YOLO 객체 탐지 1 <Darknet YOLO 모델 추론하기>

huenuri 2024. 10. 31. 08:00

이어서 객체 탐지에 대해서 공부해 볼 것이다. 이번에는 Darknet에서 제공하는 YOLO(You Only Look Once) 객체 탐지 모델을 사용하는 방법을 알아본다. YOLO는 경계 박스와 예측 클래스를 서로 다른 문제로 다루지 않고 하나의 회귀 문제로 접근하는 개념이다. 다시 말하면, 하나의 신경망이 한 번만 계산해 두 가지 일을 한꺼번에 처리한다. 따라서 속도가 매우 빠르다는 장점을 갖는다.

 


 

 

 

 

Darknet YOLO 모델 추론하기

YOLO 모델을 개인 로컬 PC 환경에서 학습하는 것은 사실상 불가능하다. 성느 좋은 GPU가 필요하고, 학습 시간도 오래 걸리기 때문이다. 하지만 Darknet에서 제공하는 사전 학습 모델을 활용하면 일반 pc 환경에서도 YOLO 뿐만 아니라 RestNet 등 다양한 딥러닝 모델을 실행할 수 있다.

먼저 Alexey Bochknviskiy의 깃허브 저장소를 코랩 환경으로 다운로드 받는다. darknet 폴더가 생성되는 것을 확인할 수 있다.

 

객체를 탐지할 샘플 이미지를 업로드한다. 업로드 버튼을 누르고 자료실에서 제공하는 파일을 선택해 업로드하면 된다. 하지만 책과 달리 파일 이미지나 나타나지 않았고 이 깃허브에 들어가도 gangnam.jpg는 눈을 씻고 찾아봐도 흔적조차 찾을 수 없었다. 아마도 개발자가 삭제한 것 같다. 

 

 

코드 아래에 선택할 수 있는 창이 보이는 줄 알았는데 아마도 폴더 옆에 이런 게 생긴다는 것 같다. 여전히 강남 사진 이미지는 찾을 수 없어서 직접 다운로드해서 원하는 경로에 복사해 주었다.

 

 

 

GPU를 사용할 수 있도록 Darknet의 Makefile을 수정하고, Darknet을 생성한다.

 

굉장히 많은 내용들이 출력되었지만 일부만 첨부했다.

 

 

 

 

모델 가중치를 가져온다.

 

 

 

 

업로드한 샘플 이미지를 출력해서 확인한다. 텐서플로 허브에서 사용했던 서울 강남의 도로 사진이다.

 

 

Darknet을 실행하여 샘플 이미지에 대한 객체 탐지를 추론한다. 객체를 추출하고 예측 확률을 계산한다. 그런 다음 샘플 이미지의 코랩 파일 경로를 마지막에 추가한다.

 

 

 

 

폴더 경로를 강남 이미지가 저장된 공간으로 했더니 실행이 안 되어 원래 코드대로 해보았다. 그랬더니 잘 된다. 하지만 이렇게 하면 다음 코드를 실행할 때 객체 탐지가 하나도 되지 않은 파일이 저장되기에 코드를 일부 수정했다.


 

 

 

코드 다시 수정하기

 

 

 

 

앞에서 탐지한 결과는 darknet 폴더에 predictions.jpg라는 이름으로 저장된다. 이 파일을 화면에 출력하면 다음과 같다.

 

이렇게 객체 탐지된 결과가 잘 저장되었다.


 

 

 

학습을 마치고

잘 될 것 같지 않았는데 직접 실습해보며 객체 탐지를 이렇게 하는 구나 알게 되었다. 딥러닝도 공부해보니 나름 흥미로운 분야인 것 같다.

이어서 나만의 YOLO 모델을 만드는 학습을 진행해보겠다.