작은 고양이의 캣 타워

Colab에서 YOLO와 함께 놀기 (수정중)

by J4BEZ

주의사항
이 부분은 편집자 고양이 J4BEZ가 오늘 무엇을 습득하였는지 학습 일기를 작성한 게시글로,

게시글에 대한 기초 설명이 부족하며 편집자가 잘못 이해한 부분 혹은 오역이 있을 수 있습니다.

 

잘못된 내용을 발견하셨을 때 혹여 여유가 괜찮으시면 댓글로 가르쳐 주시길 조심스레 부탁드립니다🙇‍♂️🙇‍♂️

여러분의 작은 관심이 아깽이 개발자가 성장하는데에 큰 도움이 됩니다

 

오늘도 배워가는 학생임에 잘못되거나 부족한 부분이 많이 있을 가능성이 높으니

해당 게시물 외에 다른 분들께서 작성하신 게시글 혹은 공식 문서(깃헙 레포 등)를 참고해 주시길 부탁드리며

사뭇 추워진 날씨 속 모두들 건강 유의하시고 평안한 하루 되시길 기도합니다🙏

 

0. 개요 (오늘 우리는 무엇을 할까요?!)

오늘 우리는 Google Colab에서 RoboFlow에서 받은 데이터 셋을 통해 YOLO를 훈련시킴으로

이미지를 통해 객체 판별(Object Detection)하는 모델을 만들고 테스트하는 시간을 가질거예요

Google Colab이란 무엇인가?

 

[COLAB] google colab 이란? & 사용법

google colab & jupyter notebook • 구글 코랩(colab)은 클라우드 기반의 무료 Jupyter notebook 개발 환경 • google drive에 저장된 jupyter notebook • 내부적으로 코랩 + 구글드라이브 + 도커 + 리눅스 + 구글클라우

kimchangheon.tistory.com

 

Yolo란 무엇인가?

Github 저장소(YOLOv5): [ ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com) ]

논문 원문: [ Joseph Redmon, Santosh Divvala, Ross Girshick, & Ali Farhadi (2015) “You Only Look Once: Unified, Real-Time Object Detection, arXiv:1506.02640” ]

한글 번역:

 

논문 리뷰 - YOLO(You Only Look Once) 톺아보기

본 글은 YOLO 논문 전체를 번역 및 설명해놓은 글입니다. 크게 중요하지 않은 부분을 제외하고는 대부분의 글을 번역했고 필요하다면 부가적인 설명도 추가했습니다. 내용이 긴 섹션 끝에는 요약

bkshin.tistory.com

 

이번 시간에는 YOLO를 위한 데이터셋으로 RoboFlow에서 제공받은 데이터 셋을 이용할 예정입니다.

RoboFlow란?

공식 사이트: [ Roboflow: Give your software the power to see objects in images and video ]

 

Roboflow 소개 및 원하는 데이터셋 다운로드하기

Roboflow는 컴퓨터 비전(Computer Vision) 기술을 이용해 다양한 애플리케이션을 만들 수 있도록 지원해주는 서비스입니다. Roboflow는 다양한 무료 데이터셋을 지원하고 있다는 특징이 있는데요, 사이트

ndb796.tistory.com

 

1. Colab 환경 준비하기

a. 런타임 유형 설정하기

[ Google Colab ]으로 들어가 주세요

상단 탭 [ 파일 ] > [ 새 노트 ] 클릭
생성된 Colab 노트 제목을 더블 클릭하여 적당한 이름으로 바꾸어 주세요 \n (상단 탭 헤더가 보이지 않는 경우, 오른쪽 상단 [ V ] 버튼을 눌러주시면 나타납니다)

다음으로, Object Detection 모델을 훈련시키기 위해 Colab 노트에게 그래픽카드(GPU)를 넣어줍시다

[런타임] > [런타임 유형 변경] 클릭
[ 하드웨어 가속기 ] > [ GPU ] > [ 저장 ] 을 클릭해주세요

 

b. 드라이브 마운트

[잘못된 부분을 발견하여 현재 수정중에 있습니다]

Colab에서 기본 경로로 사용하고 있는 \content 폴더(경로)Colab이 재실행될 때(Colab 재접속, 런타임 유형 변경 등) 마다 초기화되어

따로 백업설정을 해주지 않으면 Colab 노트(.ipynb)에 작성한 코드와 텍스트는 남아있지만,

다운 받은 패키지와 훈련시킨 학습 데이터들은 깔끔하게 날아가버리는 참사가 발생해요

 

패키지야 다시 다운 받고 적용하는데 시간이 얼마 걸리지 않지만

수 시간을 통해 훈련시킨 학습데이터가 날아가버리면 탄식이 절로 나오게 되죠 [ 어떻게 아냐구요?! ㅎㅎ...😭 ]

그렇기에 우리가 Colab과 함께한 추억 잊어버리지 않도록 Google Drive에 백업 설정(드라이브 마운트)을 진행하여 줄게요

[ 이 부분은 dove99님의 velog 게시글 중 "[Colab] Google Colab (코랩) 재실행 초기화 해결방법" 에서 도움을 받았습니다]

왼쪽 위의 '드라이브 마운트' 버튼을 눌러 'Google Drive에 연결'을 진행하여 주세요
'드라이브 마운트'를 완료하면 다음과 같이 drive/MyDrive 아래 Google Drive가 연동된 것을 확인할 수 있습니다. 이 곳에 학습데이터와 패키지를 저장하면 Colab이 재실행되어도 패키지 및 학습 데이터를 지킬 수 있겠죠?!

자, 그럼 1). Google Drive 아래 원하는 위치에 새 폴더를 만들고 2). Colab에서 원하는 위치에 연동 폴더를 만든 뒤, 3).Google 드라이브  폴더의 경로와 우리가 Colab에서 사용할 폴더의 경로를 연결시켜 줍시다.

 

1) Google Drive 아래 원하는 위치Colab과 연동할 폴더를 만들어 주세요

(이름은 자유롭게 지어주시되, 나중에 알아보기 쉽도록 지어주세요)

저는 'Colab'이라는 폴더 아래 'Cat_Detection_Content_inDrive'라는 이름으로 준비해두었습니다 [ 이렇게 되면 Colab에서 해당 폴더의 경로는 [\content\drive\MyDrive\Colab\Cat_Detection_Content_inDrive] 가 될거예요 ]

 

2) 이번엔 Colab에서 \content 폴더 아래 Drive와 연동될 폴더를 만들어주세요

저는 '\content' 폴더 바로 아래 'Cat_Detection_Content_inColab'이라는 이름으로 준비해두었습니다  [이렇게 되면 Colab에서 해당 폴더의 경로는 [\content\Cat_Detection_Content_inColab] 이 될거예요 ]

 

3) 준비해준 두 폴더의 경로를 서로 연결 시켜줍시다

Colab 노트를 처음 만들면 '커서'가 깜박 거리는 작은 단락이 생성되어 있는 것을 확인할 수 있습니다.

이 작은 단락은 '코드 셀(Cell)'이라 부르며 셀 안에 python 코드를 작성할 수 있고,

왼쪽에 달린 '시작 버튼(▶)'을 클릭(혹은 [Ctrl] + [Enter])하여 '코드 셀'에 작성된 python 코드를 실행할 수 있는 친구예요

 

'코드 셀' 안에 python 코드를 작성하여 준비한 두 폴더의 경로를 서로 연결(연동) 시켜줄 거예요

'코드 셀'은 [Ctrl] + [Enter]로 실행할 수 있으며, [Ctrl] + [M] + [B] 로 현재 셀 바로 아래 새로 생성할 수 있습니다.

'코드 셀' 안에 아래 코드를 입력하여 주세요

# 코드 출처: [dove99님의 velog: [Colab] Google Colab (코랩) 재실행 초기화 해결방법]
#          : [ https://velog.io/@dove99/colab1 ]
# Colab 폴더와 구글드라이브의 폴더 Link 시키기
import os, sys
from google.colab import drive
drive.mount('/content/drive' ,force_remount=True)
# force_remount=True : 마운트가 되어있는 상태에서도 다시 마운트를 진행하게 합니다.

drive_path = '/content/drive/MyDrive/Colab/Cat_Detection_Content_inDrive' 
# Colab과 연동을 위해 "Google Drive"에서 준비한 폴더의 경로

colab_path = '/content/Cat_Detection_Content_inColab' 
# Google Drive와 연동될 "Colab"에서 준비한 폴더의 경로

os.symlink(drive_path, colab_path) # 두 폴더를 연결 시켜주는 명령어
sys.path.insert(0, colab_path)     # 시스템 환경변수에 colab_path를 추가

 

 

파일 탭 브라우저에서 준비한 폴더 위에 '마우스 우클릭'을 하면 폴더의 경로를 쉽게 얻을 수 있습니다.

같은 방식으로 '[Colab에서 준비한 폴더의 경로]'도 알맞게 넣어주세요

 

[ Google Drive에 연결 ] -> Google Drive 계정 액세스 [ 허용 ] 을 눌러주세요

1. Colab에 YOLO 모델 설치 하기

준비가 어느 정도 되었으니 이제 우리가 만든 Colab 노트에 YOLO를 설치하여 줍시다

이번에 테스트할 YOLO 모델은 v5 버전을 이용할 예정이며, < n, s, m, l, xl > 중에서 'm'을 이용할 예정임을 미리 알려드립니다

Colab노트를 처음 개설하면 '시작▶' 버튼이 달린 작은 노트가 추가되어 있을거예요. 해당 친구는 '코드 쉘'로 불리며 해당 '쉘' 안에 작성된 Python 코드를 실행시켜줍니다.

'코드 쉘' 안에 아래 코드를 입력하여 주세요

!git clone https://github.com/ultralytics/yolov5
# YOLO의 Github 저장소(Repositery)링크에서 YOLOv5를 Clone하여 줍니다.

# '쉘'에서 [Shift] + [Enter]를누르면 실행 됩니다.
# [Ctrl] + [B] + [M]을 누르면 새로운 '코드 쉘'을 생성할 수 있습니다.

다른 문제가 없다면 사진과 같이 초록색 체크 표시와 함께 위와 같이 진행 되었을 거예요
현재폴더(content) 안에 yolov5가 정상적으로 설치된 모습입니다.

 

YOLOv5가 정상적으로 설치되었다면,

아래 코드를 이용하여 Content 폴더 아래 있는 yolov5 폴더로 이동한 뒤,

pip install 명령어를 통해 requirements.txt 안에 작성된 필수 구성 요소들을 모두 설치하여 줍니다.

# cd 명령어를 통해 yolov5 폴더로 이동합니다.
%cd yolov5

# pip install 명령어를 통해 requirements.txt에 작성된
# 모든 필요 사항을 설치하여 줍시다.
!pip install -r requirements.txt

requirements.txt는 위와 같이 작성되어 있습니다.
성공적으로 설치되었습니다.

 

아까 cd 명령어를 통해 현재 폴더의 위치는 \content\yolov5 일거예요

'코드 쉘'에 아래 명령어를 입력하여 다시 \content 폴더로 되돌아갑시다

%cd ..
# cd ..는 상위 폴더로 이동하는 UNIX 명령어 입니다.
# 현재 폴더가 [ /content/yolov5 ] 였으니 상위 폴더 [ /content ] 로 이동될거예요

# 만약 아래 사진과 같이 /content가 출력되지 않는다면
# 위 명령어 대신 [ %cd /content ]를 입력하세요

(코드 쉘은 [Ctrl] + [B] + [M]으로 새로 생성할 수 있습니다)

 

3. RoboFlow에서 YOLOv5 모델을 위한 DataSet을 다운받아주기

[ RoboFlow Universe ]로 들어가서 원하는 Detection 모델을 찾아주세요

(너무 많이 접속하면 비정상적인 접근이라 인식하고 사이트에서 잠시 차단할 수 있으니 주의해 주세요)

 

Roboflow Universe: Open Source Computer Vision Community

Download free, open source datasets and pre-trained computer vision machine learning models.

universe.roboflow.com

*로그인까지 부탁해요

Classes 는 해당 '데이터셋'이 인식 가능한 물체의 종류 입니다.
좌측 탭 [Dataset] > [ YOLOv5 ] 클릭 (Dataset 탭에 만들어진 dataSet이 없는 경우 직접 만들어야 하지만, 지금은 연습하는 시간이니 DataSet이 존재하는 다른 Dataset을 찾아주시길 바라요)
[Format] 박스에서 'YOLO vt PyTorch' 를 선택, 아래 동그라미 버튼(Radio Button)에서 [show download code]를 선택한 이후 [Continue]를 눌러주세요
[ >_ Terminal ] 버튼을 클릭한 뒤 [복사] 버튼을 눌러주세요 (해당 링크는 자신의 RoboFlow 계정의 private key를 기준으로 생성되었기 때문에 다른 친구들에게 공유하면 안됩니다)

복사를 완료하였으면 Colab 노트의 '코드 쉘'로 돌아와서 방금 복사한 내용을 입력한 뒤  코드 맨 앞에!(느낌표)를 입력하여 주세요

#복사한 curl -L ~~ 앞에 !를 붙여주세요
!curl -L "https://universe.roboflow.com/ds/비밀입니다" &gt; roboflow.zip; unzip roboflow.zip; rm roboflow.zip

사진.jpg: 모델 훈련을위한 이미지 파일이에요 사진.txt: 해당 '사진'에서 인식된 개체(detection class)를 표시해주는 네모(이하 Bounding Box)좌표가 담겨있는 텍스트 파일 입니다.

 

정상적으로 설치되었다면 아래와 같이 test / train /valid 폴더와 해당 데이터셋의 정보를 담고 있는 data.yaml 파일이 함께 설치되었을 거예요

test/train/valid : 각각 '사진'과 해당 사진의 'Bounding Box' 좌표가 담겨있습니다. \n data.yaml: 해당 dataset의 test, train, valid 폴더의 경로와 같은 정보들을 담고 있는 마크업 파일이예요 (json, xml과 비슷하게 정보를 보관하는 파일 입니다)

 

4. 설치한 DataSet으로 훈련을 진행합시다.

여러분 12시간 뒤에 만나요

 

 

--

긴 글 읽어주심에 감사드립니다

모두들 한 주간 고생 많으셨고 추운 날씨 가운데 건강 꼭 유의하시며 평안한 주말 되시길 기도합니다🙏

 

🌟 도움 받은 게시글 🌟

{ jiiina님의 Velog :: [YOLO] 코랩(Colab)으로 yolo v5 custom training 하기 }

 

[YOLO] 코랩(Colab)으로 yolo v5 custom training하기

YOLO v5를 사용하여 custom training을 해보았다. Google Colab을 활용하였다.

velog.io

 

{ easycoding님의 Youtube :: #3 너무 쉬운 인공지능 : YOLO v5 구글 코랩을 이용한 커스텀 트레이닝 (Colab) }

 

{ dove99님의 velog :: [Colab] Google Colab (코랩) 재실행 초기화 해결방법 }

 

https://velog.io/@dove99/colab1

[Colab] Google Colab (코랩) 재실행 초기화 해결방법

velog.io

 

블로그의 정보

작은 고양이의 캣 타워

J4BEZ

활동하기