코랩 참고 사이트 : https://colab.research.google.com/drive/1_GdoqCJWXsChrOiY8sZMr_zbr_fH-0Fg?usp=sharing#scrollTo=iZULaGX7_H1u
YOLO : 객체 탐지 모델
Darknet : Yolo 학습을 위한 프레임워크
1. colab CPU에서 GPU 모드로 변경하기
2. darknet 클로닝하기
darknet 사용할 수 있게 git hub 주소 clone 진행.
git clone https://github.com/AlexeyAB/darknet
3. 미리 학습된 yolov4 weights 파일 다운로드
yolov4는 80개의 객체를 탐지 할 수 있는 coco파일을 가지고 있다.
pre-trained 클래스에서 Yolov4를 실행시키고 객체탐지를 진행해 보자!
!wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights
4. colab에서 결과 확인을 위한 함수 정의
객체 탐지를 실행한후, colab에서 이미지를 보기 위해서는 추가 함수가 필요하다.
아래 함수 정의해주기
# define helper functions
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.imshow(cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB))
plt.show()
# use this to upload files
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)
# use this to download a file
def download(path):
from google.colab import files
files.download(path)
5. darknet과 yolov4로 객체탐지 실행
위의 단계들을 마쳤다면 darknet built 완료! 이제 Darknet을 이용하여 Yolov4를 학습시키고 사용할 준비가 되었다.
연습용으로 coco class에 있는 객체들을 탐지해보자.
객체 탐지를 위해서는 아래와 같은 명령어 사용
!./darknet detector test <path to .data file> <path to config> <path to weights> <path to image>
예시 코드는 아래와 같다
# run darknet detection on test images
!./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/person.jpg
!./darknet detector test 명령어와 함께 아래 네 가지를 적어주면 된다.
<path to .data file> : data 파일의 경로
<path to config> : config 파일의 경로
<path to weights> : weights 파일의 경로
<path to image> : 객체 탐지를 진행할 이미지 파일의 경로
.data파일은 아래와 같이 class의 개수 정보를 비롯해 객체탐지를 위해 필요한 파일들의 경로명을 명시한 파일이다.
classes= 80
train = /home/pjreddie/data/coco/trainvalno5k.txt
valid = coco_testdev
#valid = data/coco_val_5k.list
names = data/coco.names
backup = /home/pjreddie/backup/
eval=coco
config 파일의 경우 차후 커스터마이징 시 수정 해줘야 한다
weights 파일은 이미 훈련이 된 파일을 사용하는 것이 좋다
darknet 설치 시 darknet/data/ 폴더에 이미 몇개의 이미지가 들어있다.
객체 탐지 실행 후 opencv는 이미지를 클라우드에서 바로 열수 없기에 우리는 아래와 같이 imShow명령어를 통해서 겨로가를 확인해야 한다.
imShow('predictions.jpg')
가장 최근 탐지된 이미지는 항상 predictions.jpg로 저장이 된다.
6. 로컬 또는 구글 드라이브의 파일 업로드해서 사용하기
darknet 폴더 내의 이미지 말고 개인이 가진 파일을 사용해서 test를 진행하고 싶을 경우
1. 로컬 파일 업로드
2. 구글 드라이브에 있는 파일 업로드
이렇게 두 가지 방법으로 파일을 가져올 수 있다.
파일 업로드 이후 구글 드라이브를 마운트하고
명령어에서 이미지의 주소를 수정해주면 테스트할 수 있다.
7. yolov4를 사용해서 영상 속 객체 탐지하기
영상도 탐지 가능
8. yolov4 커스터마이징 하기
우리가 지금까지 사용했던 명령인 '!./darknet detector ... 에 우리의 flags를 추가해서 yolov4를 커스터마이징 할 수 있다!
'프로젝트 > Capstone design' 카테고리의 다른 글
Yolo 안드로이드 스튜디오 연동 | darknet weights 파일 변환 (6) | 2022.03.14 |
---|---|
yolo 이미지 라벨링을 위한 labelImg 사용법 (3) | 2021.11.21 |