관리 메뉴

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

CNN 7 - 객체 탐지를 하는 YOLO v6 모델 실습 3 : 사전 학습된 모델 가져와서 친칠라 라벨링 학습 완료하기 본문

인공지능/딥러닝

CNN 7 - 객체 탐지를 하는 YOLO v6 모델 실습 3 : 사전 학습된 모델 가져와서 친칠라 라벨링 학습 완료하기

huenuri 2024. 10. 30. 05:54

이어서 라벨링한 데이터의 코드를 수정하는 작업을 진행해 보겠다.


 

 

 

 

 

data.yaml 파일 수정하기

 

그리고 이 폴더 안에 들어가면 이미지가 있는데 이상하게도 이미지에 라벨이 표시되어 있지 않다. 그 이유는 라벨은 좌표이기 때문이다. 사진 안에는 없지만 lables에 들어가면 좌표가 찍혀 있다.

 

 

 

 

 

이제 다시 코랩으로 돌아와서 이미지 학습을 시킬 텐데 그전에 한 가지 주의 사항이 있다. labes 폴더에 들어가 보면 다음과 같은 텍스트 파일을 볼 수 있다.

 

 

 

 

data.yaml은 데이터가 들어있는 경로를 저장해 주는 파일이다. 

 

 

 

 

이 파일은 지금 상대경로로 되어 있는데 이것을 절대경로로 변경하여 저장할 것이다. images 폴더 밑에 있는 test, train, valid의 경로를 복사하여 이 파일에 붙여 넣는다. 이때 경로 앞에 띄어쓰기가 한 칸씩 되어 있는지 확인한다.

 

 

 

 

이렇게 경로를 붙여 넣고 저장을 해준다. 처음에는 편집이 되지 않고 파일을 불러올 수 없어 좀 헤맸지만 이 부분도 마침내 해결되었다.

 

 

 


 

 

 

 

 

YOLOv6 모델 학습하는 코드 가져와서 학습하기

 

 

YOLO 모델로 객체 탐지를 어떻게 하는지 알려주는 사이트이다. 이 밑에 내려가보면 모델을 학습할 수 있는 코드를 공개하고 있다.

 

 

YOLO 객체 탐지 모델 참고 사이트

 

How to Train a YOLOv6 Model on a Custom Dataset

Learn how to train a YOLOv6 object detection model on a custom dataset.

blog.roboflow.com

 

 

 

1. 학습 모델

 

이 코드를 가져다가 붙여 넣을 것이다.

 

 

 

 

 

이 코드는 사전 학습된 모델이 아니므로 우리가 사용할 모델인 사전 학습 모델 이름으로 변경한다. 그렇지 않으면 사용할 수 있는 사진은 36장으로 제한된다. 이미지 사이즈도 640으로 변경한다.

 

 

 

 

그런 다음 친칠라 폴더 이름을 그대로 복사해서 중괄호를 포함한 곳에 붙여 넣는다. 이 모델을 학습시키는데 10분 정도 걸린다. 그동안 다른 코드로 가져와서 모델을 한 가지 더 학습시켜 볼 것이다.

 

 

 

다음 코드를 진행하는 동안 코드 실행이 모두 완료되었다.


 

 

 

2. 예측 모델

 

다시 사이트로 가서 이 코드를 가져온다.

 

 

 

 

조금 전처럼 폴더 경로를 붙여 넣고, 이미지 사이즈는 삭제한다. 삭제 시 --도 함께 삭제한다. 이미지를 삭제하는 이유는 auto로 설정하기 위함이다. 

weights는 학습된 모델의 가중치인데 YOLO 모델은 알아서 이걸 체크포인트한다. 체크 포인트는 mce 등을 말하는 것인데 이 내용은 좀 어려우므로 생략하겠다. 아무튼 best_ckpt.pt로 베스트 모델이 알아서 저장되어 있다.

 

 

 

만약 이 코드를 실행하다 실패가 뜬다면 가중치가 저장되어 있는 곳을 따라가서 확인해 본다. 난 오류가 나지 않았다.

 

 

오류가 난 사람은 exp가 여러 개 보인다. 그중에 exp2에 들어가 보면 거기에 가중치가 저장되어 있다. 그런 다음 앞의 코드를 exp2로 쓰면 된다.

코드 실행 완료 후 폴더를 찾아가 보니 사진이 한 장도 보이지 않았다. 이건 학습에 실패했다는 뜻이다. 다시 코드를 수정해 보았다.


 

 

 

 

 

코드를 칠 때 파일명에 오타가 있었다. 맨 아래쪽에 보면 이 파일을 찾아가면 결과가 있다고 뜬다.

 

 

 

 

여기에 학습된 사진이 들어있다.

 

 

 

 

 

 

이런 식으로 사진 안에 친칠라 라벨이 붙어있다. 난 모든 사진이 이렇게 되어 있는 걸 보니 학습을 아주 잘한 것을 볼 수 있다. 선생님 것은 한 개도 표시가 되어 있지 않다고 한다.

 


 

 

 

학습을 마치고

무척 긴 시간 동안 어제부터 YOLO 모델 V6의 객체 탐지에 대해서 살펴보았다. 다음에는 V8에 대해서 살펴볼 것인데, 이건 사용자 친화적인 모델이라고 한다.

중간에 우여곡절이 많았지만 새벽에 2시간 반 동안 공부하며 어제 하지 못한 공부를 마무리하니 정말 좋았다.