1. YOLO๋ฅผ Colabํ๊ฒฝ์์ ์ฌ์ฉํ๋ ์ด์
Colab ํ๊ฒฝ
์ฅ์
์ฑ๋ฅ ์ข์ GPU๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๊ณผ ํ๊ฒฝ ๊ตฌ์ถ์ด ๊ฐํธํ ์ ์ด๋ค.
(=๋ช์ผ ๊ฑธ๋ฆฌ๋ ํ๊ฒฝ์ ๋จ ๋ช ์๊ฐ๋ง์ ๊ตฌ์ถํ ์ ์๋ค)
๋จ์
1) ํ์ต ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ๋ฃ์ด์ผ ํ๋๋ฐ ์ฉ๋์ด ๋ถ์กฑํ๊ณ ๋๊ธฐํ ๋ฐ์์ด ๋๋ฆฌ๋ค.
2) ๋ฌด๋ฃ๋ก 12์๊ฐ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ค๋ ์๊ฐ ํ์ต์ด ํ์ํ ๋ชจ๋ธ์ ํ๋ จํ๋๋ฐ ์ ์ฝ์ด ์๋ค.
GPU ์ค์
1. ๊ตฌ๊ธ ์ฝ๋ฉ(https://colab.research.google.com/) ์ ์ํ์ฌ '๋ฐํ์'>๋ฐํ์ ์ ํ ๋ณ๊ฒฝ > ํ๋์จ์ด ๊ฐ์๊ธฐ๋ฅผ "GPU" ๋ก ์ค์ ํ์ฌ ์ ์ฅ ๋ฒํผ์ ํด๋ฆญํด์ค๋๋ค.
Colab์ Darknet ์ค์น
1. ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ์ ๊ทผ
from google.colab import drive
drive.mount('/content/gdrive')โ
mount : ์ธ์ํ๊ฒ ํ๋ ๋ช ๋ น์ด
(์ฆ, ์ฌ๊ธฐ์๋ content/gdrive ๋ฅผ ๊ตฌ๊ธ ์ฝ๋ฉ์์ ์ฌ์ฉํ๊ธฐ ์ํด์ mount ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค)
2. ๊ตฌ๊ธ ์ฝ๋ฉ ๋๋ ํฐ๋ฆฌ
์ฌ์ค ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ค์ ์ ์ผ๋ก ๋ด์ผํ๋ ๋๋ ํฐ๋ฆฌ(ํด๋)๋ content ์ด๋ค. ์์ผ๋ก ๊ฒ์ content ํด๋ ๋ด์์ ํ์ผ๋ค์ ๊ฐ์ง๊ณ ๋๊ฑฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์์์ mount ๋ช ๋ น์ด ๋ํ content ํด๋๋ฅผ ๋ง์ดํธ ์ํจ ๊ฒ!
๊ธฐํ ํด๋๋ค์ ์ฝ๋ฉ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋๋ ํฐ๋ฆฌ์ธ๊ฒ ๊ฐ๋ค.
์! ๊ทธ๋ฌ๋ฉด ์ง๊ธ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ํ์ธํ๊ธฐ ์ํด์ pwd ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ํ์ธํด๋ณด์.
์ฐธ๊ณ ๋ก !๋ ์ฝ๋ฉ์์ ๋ช ๋ น์ด๋ฅผ ์น๊ธฐ์ ์ ๊ฐ์ด ๋ถ์ฌ์ฃผ์ด์ผ ๋๋ค๊ณ ํ๋ค. ๊ท์น์ธ๊ฒ ๊ฐ์.
pwd ๋ช ๋ น ๊ฒฐ๊ณผ /content ์ ์๋ค๊ณ ํ๋ค. == ์ฐ๋ฆฌ์ ํ์ฌ ์์น๋ content ํด๋!
ls ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ํ์ฌ ์์น์ธ content ํด๋์ ์กด์ฌ ํ๋ ํ์ผ์ด ์๋์ง ํ์ธํด๋ณด์.
๊ฒฐ๊ณผ: gdrive ์ sample_data๊ฐ ์๋ค๊ณ ํ๋ค.
๋ง๋์ง ํ์ธํ๊ธฐ ์ํด ์ข์ธก ๋๋ ํฐ๋ฆฌ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ณด์.
์ผ์นํจ์ ํ์ธ ํ ์ ์๋ค.
๋ค์์ผ๋ก cuda ๊ด๋ จ ๋ชจ๋์ธ cudnn์ ์ค์น ํด๋ณผ๊ฑฐ๋ค.
3. cudnn ์ค์น
GPU์ ๋ง๋ cudnn์ ์ค์นํด์ผํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ง๋ cudnn์ ์ด๋ป๊ฒ ํ์ธ ํ ์ ์์๊น?
!/usr/local/cuda/bin/nvcc --version
์ ๋ช ๋ น์ด๋ฅผ ์คํ์ํค๋ฉด ๋ง๋ cudnn ๋ฒ์ ์ ํ์ธ ํ ์ ์๋ค.
ํ์๋ 11.2 ๋ฒ์ ์ cudnn์ ๋ค์ด ๋ฐ์ผ๋ผ๊ณ ํ๋.. ์๋ ์ฃผ์๋ก ์ ์ํ์ฌ ํด๋น 11.2 ๋ฒ์ ์ cudnn์ ๋ค์ด ๋ฐ๊ฒ ๋ค.
์! ํน์ nvida ๊ณ์ ์ด ํ์ํ๋ ์์ผ๋ฉด ํ์๊ฐ์ ์ ํด์ผํ๋ค.๐
ํ๋์ฉ ์ฐพ์ผ๋ ค๋ ํ๋๋๊น ctrl+f ํค๋ฅผ ๋์์ ๋๋ฌ์ ๊ฒ์ํด์ ์ฐพ๊ธฐ!
11.2 ๋ฒ์ ์ด ๋๊ฐ๋ ์๋ค. ์ด๋ค ๊ฒ์ ๋ฐ์์ผ ๋ ์ง ํผ๋์ค๋ฌ์ธ ์ ์๋๋ฐ ๊ทธ๋ฅ ๋์ค ์๋ฌด๊ฑฐ๋ ๋ค์ด ๋ฐ์ผ๋ฉด๋๋ค.
์ ์ฌ์ง์ฒ๋ผ ํด๋ฆญ ํ์ฌ ๋ค์ด ๋ฐ๊ธฐ ๊น์ง ์ฑ๊ณตํ๋ค๋ฉด, ๋ค์ ๊ตฌ๊ธ ์ฝ๋ฉ์ผ๋ก ๋์์์
๋ค์์ผ๋ก ์คํ ์ํฌ ๋ช ๋ น์ด๋ฅผ ์ดํด๋ณด์
๋์ถฉ ๋ณด๋ content ์ gdrive์ mydrive ์ darknet์ cudnn์์!! ๋ฐฉ๊ธ ๋ค์ด ๋ฐ์ cudnn ํ์ผ์ด ์์ด์ผ ํ ๊บผ ๊ฐ์ ๊ฐ์ด ์จ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ค์ด ๋ฐ์ cudnn ํ์ผ์ ๋ณธ์ธ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ๋ค์ด๊ฐ์ ๋ฃ์ด์ค์ผํ๋ค.
๊ทธ ๊ณผ์ ์ ๋ํด ๋ ์์ธํ ์ค๋นํด๋ดค๋ค.๐
๋ด ๋๋ผ์ด๋ธ ์์ darknet ์ด๋ฆ์ ํด๋๋ฅผ ์๋ก ์์ฑํด์ค๋ค.
์์ฑ์ ๋ง์ฐ์ค ์ฐ์ธก ํด๋ฆญ์ '์ ํด๋ ์์ฑ' ์ ํ ์ ์๋ค.
๋ค์์ผ๋ก ์์ฑํด์ค darknet ํด๋ ์์ ๋ค์ด๊ฐ์ cuDNN ํด๋๋ฅผ ์์ฑํด์ค๋ค(์ด๋ ์ ๋๋ฌธ์ ๊ตฌ๋ถํด์ ์ ์ด์ค๋ค.)
๋ง์ง๋ง์ผ๋ก
์์ฑํด์ค cuDNN ํด๋ ์์์ ์๊น ๋ค์ด ๋ฐ์ cudnn ํ์ผ์ ์ฌ๊ธฐ์ ๋ฃ์ด์ค๋ค. (๋ฃ์๋ ๋ง์ฐ์ค ๋๋๊ทธํด์ ๋ฃ์ด๋ ๋จ)
์์ ๋ชจ๋ ๊ณผ์ ์ด ๋์ด ๋ฌ๋ค๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์คํ์์ผ์ฃผ๋ฉด ๋๋๋ฐ..
!tar -xzvf /content/drive/MyDrive/darknet/cuDNN/cudnn-11.2-linux-x64-v8.1.1.33.tgz -C /usr/local/
!chmod a+r /usr/local/cuda/include/cudnn.h
์ฌ๊ธฐ์ tar ๋ช ๋ น์ด๋ Tape Archiver์ ์ฝ์๋ก ์ฌ๋ฌ ํ์ผ๋ค์ ํ๋์ ํ์ผ๋ก ๋ฌถ์ด์ฃผ๋ ๋ช ๋ น์ด์ ๋๋ค.
tar ๋ช ๋ น์ด๋ ์์ถ๋ช ๋ น์ด๋ผ๊ธฐ ๋ณด๋ค๋ ๋จ์ ํ์ผ์ ํ๋๋ก ๋ฌถ๋ ๋ช ๋ น์ด์ ๋๋ค.
tar์์ ์ต์ ์ ์ฃผ์ด ์์ถ์ ํด์ค ์ ์์ต๋๋ค.
๋ค์์ผ๋ก ๋๋ฒ์งธ ์ค chomod ๋ ํ์ผ ๋๋ ํด๋์ ๊ถํ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํฉ๋๋ค.
r | ์ฝ๊ธฐ ๊ถํ |
w | ์ฐ๊ธฐ ๊ถํ |
x | ์คํ ๊ถํ |
์ฐ์ฐ์ ์ค๋ช
+ | ๊ธฐ์กด ๊ถํ์ ๊ถํ ์ถ๊ฐ |
- | ๊ธฐ์กด ๊ถํ์์ ๊ถํ ์ ๊ฑฐ |
= | ์ง์ ํ ๊ถํ์ผ๋ก ๋ณ๊ฒฝ |
3. DarkNet ์ค์น
๋คํฌ๋ท์ ์ง์ https://pjreddie.com/darknet/install/ ์ฌ๊ธฐ์ ์ค์น ํด๋ ๋์ง๋ง
๋ช ๋ น์ด๋ก ์ค์นํ๋ฉด ์์ฃผ ์ฝ๊ณ ๊ฐํธํ๋ค!
!git clone https://github.com/alexeyab/darknet
๊ทธ๋ฌ๋ฉด ์ค์นํ darknet์ด content ํด๋ ์๋์ darknetํด๋๊ฐ ์์ฑ๋จ์ ํ์ธํ ์ ์๋ค.
์ด์ ๋ค์ดํ darknet์ ์ปดํ์ผ์ ํด์ค๋ค.
์ปดํ์ผ ๋ช ๋ น์ด๋ make ์ด๋ค.
!make
์ด์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์ปดํ์ผ๋ ๋คํฌ๋ท์ ์ฎ๊ฒจ์ค์ผํ๋ค.
์ ๋ ์ปดํ์ผํ ๋คํฌ๋ท์ /content/gdrive/My Drive/darknet/bin ์ด๋ผ๋ ํด๋์ ์ ์ฅํด๋๊ฑฐ๋ผ์
์๋์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ์์ต๋๋ค.
import os
if not os.path.exists('/content/gdrive/My Drive/darknet/bin'):
os.makedirs('/content/gdrive/My Drive/darknet/bin')
์๋ ์ฝ๋๋ก ์ค์น๋ ๋คํฌ๋ท์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์์ฑ๋ binํด๋ ์ ์ผ๋ก ์ฎ๊ธฐ๋๋ก ํฉ๋๋ค.
!cp ./darknet /content/gdrive/My\ Drive/darknet/bin/darknet
์ฆ darknet ํด๋์์ ์ค์นํ๊ณ ์ปดํ์ผ ํ ๋ด์ฉ๋ค์ ์ ์ ๊ตฌ๊ธ๋๋ผ์ด๋ธ(gdrive)ํด๋๋ก ๋ณต์ฌ๋ฅผ ํ๋๊ฑฐ์ฃ .
4. DarkNet ํ ์คํธ
์ด์ ์ ์ ์ฝ๋ฉ ํ๊ฒฝ ๋ด์ ๋คํฌ๋ท ์ค์น๊ฐ ์๋ฃ๋์๊ณ , ์ ์์ ์ผ๋ก ์คํ๋๋์ง ํ์ธ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณง์ธ๋ example ํ์ผ์ ๊ฐ์ ธ์ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
def imShow(path):
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
image = cv2.imread(path)
height, width = image.shape[:2]
resized_image = cv2.resize(image,(3*width, 3*height), interpolation = cv2.INTER_CUBIC)
fig = plt.gcf()
fig.set_size_inches(18, 10)
plt.axis("off")
#plt.rcParams['figure.figsize'] = [10, 5]
plt.imshow(cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB))
plt.show()
def upload():
from google.colab import files
uploaded = files.upload()
for name, data in uploaded.items():
with open(name, 'wb') as f:
f.write(data)
print ('saved file', name)
def download(path):
from google.colab import files
files.download(path)
์ ์ฝ๋๋ example ํ์ผ์ ์คํ์ํค๊ธฐ ์ํ ํจ์์ ์ธ์ ๋๋ค.
!cp -r "/content/gdrive/My Drive/darknet/weights" ./weights
ํ ์คํธ์ ํ์ํ weightsํ์ผ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ ๋ช ๋ น์ด๋ฅผ ์คํ์ํค๋ฉด๋๋๋ฐ
cp ๋ ๋ณต์ฌ(copy)๋ผ๋ฉด, ๋ค์ r ์ต์ ์ ๋ญ ๋ปํ๋๊ฑธ๊น?
=> -r์ ํ์ ๋๋ ํฐ๋ฆฌ ์ ๋ถ๋ฅผ ๋ณต์ฌํ๋ค.
์ฆ ๋๋ ํฐ๋ฆฌ (ํด๋)๋ฅผ ๋ณต์ฌํ ๋๋ ์๋ ํด๋,ํ์ผ ๋ชจ๋ ํ์ํ๊ธฐ ๋๋ฌธ์ -r ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ ํท๊ฐ๋ฆฌ๋ฉด ์๋๋๊ฒ content / darknet ํด๋์์ ์คํ์ํค๋๊ฑฐ์ง gdrive์ darknet์์ ์คํ์ํค๋๊ฒ ์๋๋ผ๋์
๊ตฌ๊ธ๋๋ผ์ด๋ธ ํด๋๋ ๊ทธ์ ๊ตฌ๊ธ ๋ฐฑ์ ์ฉ์ ๋ถ๊ฐ..?ํฉ๋๋ค.
darknet ํ๊ฒฝ์์ ์คํ์์ผ์ผ๋๊ธฐ ๋๋ฌธ์ ์์ผ๋ก๋ ๊ฒ์ cp ๋ณต์ฌ๋ฅผ ํตํด darknet ํด๋๋ก ๋ถ์ฌ์ฃผ๋ ์์ ์ ๊ฒ์ ํ ๊ฒ์ ๋๋ค.
์ง๊ธ ํ์ฌ ์์น๋ฅผ ๋ณด๋ฉด content ์ darknetํด๋์ ์์์ ํ์ธ ํ ์ ์์ผ๋ฉฐ
darknet ํด๋์ ํด๋orํ์ผ ๋ฆฌ์คํธ ๋ค์ ํ์ธ ํด๋ณด๋ฉด ์ฐ์ธก ํ๋จ ๋ฐ์ weights ํด๋๊ฐ ์์ฑ ๋์์์ ํ์ธ ํ ์ ์๋ค.
5. YOLO ํ ์คํธ
!./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/person.jpg
imShow('predictions.jpg')
์ด์ content/ darknet ํด๋์์ yolov3.cfg ์ yolov3.weights์ dataํด๋์ person.jpg ๋ฅผ ํ์ฉํ์ฌ
imshow ํจ์ ์คํ์ํค๋ฉด,, ์๋์ ๊ฐ์ด ๊ฐ์ฒด๋ฅผ ์ธ์ํ ์ฌ์ง์ ๋ณผ ์ ์๋ค.
'๋ฅ๋ฌ๋๐ค > YOLO, Opencv ๐ข' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[YOLO]#3 YOLO๋ฅผ ํ์ฉํ ๊ฐ์ฒด ํ์ง (Customํ๊ธฐ)&๊ตฌ๊ธ์ฝ๋ฉ (2) | 2022.11.07 |
---|---|
[YOLO]#2 YOLO๋ฅผ ํ์ฉํ ๊ฐ์ฒด ํ์ง (Customํ๊ธฐ)&๊ตฌ๊ธ์ฝ๋ฉ (0) | 2022.11.07 |
๋ฌด๋ฃ๋ก Yolo , Opencv ์ ๋ํด ๊ณต๋ถํ ์ ์๋ ์ฌ์ดํธ (2) | 2022.04.01 |
webcam์์ ๊ฐ์ ธ์จ ์์์ mp4๋ก ์ ์ฅํ๋ OpenCV Python (0) | 2022.04.01 |
openCV๋ฅผ ์ฌ์ฉํ YOLO ๊ฐ์ฒด ๊ฐ์ง (0) | 2022.04.01 |