Open Image Dataset์ Object Detection ํ์ต ๋ฐ Inference
Open Image Dataset์์ Football ๊ด๋ จ Object, Fish๊ด๋ จ Object๋ฅผ ์ถ์ถ ํ ํ์ต ๋ฐ์ดํฐ ์ธํธ ์์ฑํ, ์ด๋ฅผ ์ด์ฉํ์ฌ Object Detection์ ์ํํด ๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ ๋ค์ด๋ก๋ ๋งํฌ
GitHub - chulminkw/DLCV
Contribute to chulminkw/DLCV development by creating an account on GitHub.
github.com
Keras-yolo ํจํค์ง, OpenImage Dataset์ ์ฌ์ฉํ์ต๋๋ค.
์ฃผ์์ฌํญ
๋ชจ๋ธ์ Inference ๋จ๊ณ ๋ฐ ๋ฐ์ดํฐ์ ๊ด๋ จ ์ฝ๋๋ Part.1 ๋ถ๋ถ์ ๊ณ์๋์ด ์์ต๋๋ค. inference ๊ด๋ จํด์ ๊ด๋ จ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
[CV] OpenImage Dataset์ Object Detection Inference Part.1 (with Keras-yolo)
Open Image Dataset์ Object Detection ํ์ต ๋ฐ InferenceOpen Image Dataset์์ Football ๊ด๋ จ Object, Fish๊ด๋ จ Object๋ฅผ ์ถ์ถ ํ ํ์ต ๋ฐ์ดํฐ ์ธํธ ์์ฑํ, ์ด๋ฅผ ์ด์ฉํ์ฌ Object Detection์ ์ํํด ๋ณด๊ฒ ์ต๋๋ค.๋ฐ์ดํฐ ๋ค
daehyun-bigbread.tistory.com
์ต์ข ํ์ต๋ ๋ชจ๋ธ์ ๋ก๋ฉํ์ฌ Video Object Detection ์ํ
Image Object Detection ๊ด๋ จํด์ ์๋จ์ Part.1 ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!
Keras-yolo ํจํค์ง์ font Directory ์ด๋
%cd /content/DLCV/Detection/yolo
!cp -rf keras-yolo3/font ./font
์์ Object Detection
import cv2
import time
import numpy as np
from PIL import Image
def detect_video_yolo(model, input_path, output_path=""):
# ์ ์ฒด ์ํ ์๊ฐ ์ธก์ ์ ์ํ ์์ ์๊ฐ ๊ธฐ๋ก
overall_start = time.time()
# ์
๋ ฅ ๋น๋์ค ํ์ผ ์ด๊ธฐ
cap = cv2.VideoCapture(input_path)
# ๋น๋์ค ์ฝ๋ฑ ์ค์ (XVID ์ฌ์ฉ)
codec = cv2.VideoWriter_fourcc(*'XVID')
# ์
๋ ฅ ๋น๋์ค์ FPS์ ํ๋ ์ ํฌ๊ธฐ ๊ฐ์ ธ์ค๊ธฐ
vid_fps = cap.get(cv2.CAP_PROP_FPS)
vid_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# ์ถ๋ ฅ ๋น๋์ค ํ์ผ ์์ฑ๊ธฐ ์ด๊ธฐํ
vid_writer = cv2.VideoWriter(output_path, codec, vid_fps, vid_size)
# ์ ์ฒด ํ๋ ์ ์ ๊ฐ์ ธ์ค๊ธฐ
frame_cnt = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print(f'์ด Frame ๊ฐฏ์: {frame_cnt}, ์๋ณธ ์์ FPS: {vid_fps}, ์๋ณธ Frame ํฌ๊ธฐ: {vid_size}')
index = 0
while True:
# ๋น๋์ค์์ ํ๋ ์ ์ฝ๊ธฐ
hasFrame, image_frame = cap.read()
if not hasFrame:
print('ํ๋ ์์ด ์๊ฑฐ๋ ์ข
๋ฃ ๋์์ต๋๋ค.')
break
# ํ๋ ์ ์ฒ๋ฆฌ ์์ ์๊ฐ ๊ธฐ๋ก
frame_start = time.time()
# OpenCV์ ์ด๋ฏธ์ง ๋ฐฐ์ด์ PIL Image๋ก ๋ณํ
image = Image.fromarray(cv2.cvtColor(image_frame, cv2.COLOR_BGR2RGB))
# YOLO ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ
detected_image = model.detect_image(image)
# PIL Image๋ฅผ OpenCV์ฉ ์ด๋ฏธ์ง ๋ฐฐ์ด๋ก ๋ณํ
result = cv2.cvtColor(np.asarray(detected_image), cv2.COLOR_RGB2BGR)
index += 1
print(f'#### frame:{index} ์ด๋ฏธ์ง ์ฒ๋ฆฌ์๊ฐ:{round(time.time() - frame_start, 3)}์ด')
# ์ฒ๋ฆฌ๋ ํ๋ ์์ ์ถ๋ ฅ ๋น๋์ค์ ์์ฑ
vid_writer.write(result)
# ๋น๋์ค ์์ฑ๊ธฐ์ ์บก์ฒ ๊ฐ์ฒด ํด์
vid_writer.release()
cap.release()
# ์ ์ฒด ์ํ ์๊ฐ ์ถ๋ ฅ
print(f'### Video Detect ์ด ์ํ์๊ฐ: {round(time.time() - overall_start, 5)}์ด')
- detect_video_yolo ํจ์๋ ์ ๋ ฅ ๋น๋์ค ํ์ผ์ ํ๋ ์๋ณ๋ก ์ฒ๋ฆฌํ์ฌ YOLO ๋ชจ๋ธ์ ํตํด ๊ฐ์ฒด๋ฅผ ๊ฒ์ถํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ๋น๋์ค ํ์ผ๋ก ์ ์ฅํฉ๋๋ค.
- ๊ฐ ํ๋ ์์ ์ฒ๋ฆฌ ์๊ฐ์ ์ถ๋ ฅํ๋ฉฐ, ์ ์ฒด ์ํ ์๊ฐ์ด ์๋ฃ ์์ ์ ์ถ๋ ฅ๋ฉ๋๋ค. ๋ํ OpenCV์ PIL์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ํ์์ ๋ณํํ๊ณ , ๋น๋์ค ์ ์ถ๋ ฅ์ ๊ด๋ฆฌํฉ๋๋ค.
detect_video_yolo(ballnfish_yolo, '/content/DLCV/data/video/NFL01.mp4', '/content/DLCV/data/output/NFL_yolo_01.avi')
colab ์ผ๋ก ๋๋ฆฌ๋ ๊ฒฝ์ฐ์๋ Object Detection ์ ์ฉ๋ ์์ ํ์ผ์ google drive์์ download ํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํด google drive๋ฅผ colab์ mount๋ฅผ ์ํํฉ๋๋ค.
import os, sys
from google.colab import drive
drive.mount('/content/gdrive')
## My Drive ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๊ณต๋์ด ์์ผ๋ฏ๋ก ' '๋ก ๋ฌถ์ต๋๋ค.
!cp /content/DLCV/data/output/NFL_yolo_01.avi '/content/gdrive/My Drive/NFL_yolo_01.avi'
- Video Object Detection ํ์ง ๊ฒฐ๊ณผ
detect_video_yolo(ballnfish_yolo, '/content/DLCV/data/video/FishnShark01.mp4', '/content/DLCV/data/output/FishnShark_yolo_01.avi')
## My Drive ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๊ณต๋์ด ์์ผ๋ฏ๋ก ' '๋ก ๋ฌถ์ต๋๋ค.
!cp /content/DLCV/data/output/FishnShark_yolo_01.avi '/content/gdrive/My Drive/FishnShark_yolo_01.avi'
- Video Object Detection ํ์ง ๊ฒฐ๊ณผ.
์์ด๋ฅผ ํ์งํ๋๋ฐ ์๋จ ์ผ์ชฝ ์ฒซ๋ฒ์งธ ์ฌ์ง์์ ์์ด๊ฐ ์ Detect ๋์ง ์๋ ์ด์๊ฐ ๋ฐ์ํ๋๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
'๐ Computer Vision' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CV] OpenImage Dataset์ Object Detection Inference Part.1 (with Keras-yolo) (0) | 2025.01.22 |
---|---|
[CV] Google Open Image Dataset (0) | 2024.10.11 |
[CV] Keras YOLO๋ก Raccoon Dataset์ ์ด์ฉํ Object Detection (0) | 2024.10.10 |
[CV] Object Detection Model Training์ ์ ์์ฌํญ (0) | 2024.10.08 |
[CV] Keras ๊ธฐ๋ฐ YOLO Open Source Package & Object Detection (0) | 2024.10.07 |