๋ค์์ ์ฌ์ฉํ์ฌ ๊ฑฐ๋ฆฌ ๊ณ์ฐ Ultralytics YOLOv8
๊ฑฐ๋ฆฌ ๊ณ์ฐ์ด๋ ๋ฌด์์ธ๊ฐ์?
๋ ๋ฌผ์ฒด ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ธก์ ํ๋ ๊ฒ์ ์ง์ ๋ ๊ณต๊ฐ ๋ด์์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ด๋ผ๊ณ ํฉ๋๋ค. ์ ๊ฒฝ์ฐ Ultralytics YOLOv8์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๊ฐ์กฐ ํ์ํ ๊ฒฝ๊ณ ์์์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ๊ฒฝ๊ณ ์์ ์ค์ฌ์ด ์ฌ์ฉ๋ฉ๋๋ค.
Watch: ๋ค์์ ์ฌ์ฉํ์ฌ ๊ฑฐ๋ฆฌ ๊ณ์ฐ Ultralytics YOLOv8
๋น์ฃผ์ผ
๋ค์์ ์ฌ์ฉํ์ฌ ๊ฑฐ๋ฆฌ ๊ณ์ฐ Ultralytics YOLOv8 |
---|
๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ฅ์ ์?
- ํ์งํ ์ ๋ฐ๋: ์ปดํจํฐ ๋น์ ์์ ์์ ์ ํํ ๊ณต๊ฐ ์์น ํ์ ์ ํฅ์์ํต๋๋ค.
- Size Estimation: Allows estimation of object size for better contextual understanding.
๊ฑฐ๋ฆฌ ๊ณ์ฐ
- ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ผ๋ก ๋ ๊ฐ์ ๊ฒฝ๊ณ ์์๋ฅผ ํด๋ฆญํ์ฌ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
YOLOv8 ์ ์ฌ์ฉํ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ์์
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n.pt")
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
# Video writer
video_writer = cv2.VideoWriter("distance_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init distance-calculation obj
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
tracks = model.track(im0, persist=True, show=False)
im0 = dist_obj.start_process(im0, tracks)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
์ฐธ๊ณ
- ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ํด๋ฆญํ๋ฉด ๊ทธ๋ ค์ง ๋ชจ๋ ์ ์ด ์ญ์ ๋ฉ๋๋ค.
- ๋ง์ฐ์ค ์ผ์ชฝ ํด๋ฆญ์ผ๋ก ์ ์ ๊ทธ๋ฆด ์ ์์ต๋๋ค.
Distance is Estimate
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data, which lacks information about the object's depth.
์ธ์ DistanceCalculation()
Name |
Type |
Default |
์ค๋ช |
---|---|---|---|
names |
dict |
None |
ํด๋์ค ์ด๋ฆ ์ฌ์ . |
view_img |
bool |
False |
๋น๋์ค ์คํธ๋ฆผ์ ํ์ํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ํ๋๊ทธ์ ๋๋ค. |
line_thickness |
int |
2 |
์ด๋ฏธ์ง์ ๊ทธ๋ ค์ง ์ ์ ๋๊ป์ ๋๋ค. |
line_color |
tuple |
(255, 255, 0) |
์ด๋ฏธ์ง์ ๊ทธ๋ ค์ง ์ ์ ์์(BGR ํ์). |
centroid_color |
tuple |
(255, 0, 255) |
๊ทธ๋ ค์ง ๊ตฌ์ฌ์ ์ ์์(BGR ํ์). |
์ธ์ model.track
์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
---|---|---|---|
source |
im0 |
None |
์ด๋ฏธ์ง ๋๋ ๋น๋์ค์ ์์ค ๋๋ ํ ๋ฆฌ |
persist |
bool |
False |
ํ๋ ์ ๊ฐ ํธ๋ ์ง์ |
tracker |
str |
botsort.yaml |
์ถ์ ๋ฐฉ๋ฒ '๋ฐ์ดํธํธ๋' ๋๋ '๋ด์ํธ' |
conf |
float |
0.3 |
์ ๋ขฐ ์๊ณ๊ฐ |
iou |
float |
0.5 |
IOU ์๊ณ๊ฐ |
classes |
list |
None |
ํด๋์ค๋ณ๋ก ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํฉ๋๋ค(์: classes=0 ๋๋ classes=[0,2,3]). |
verbose |
bool |
True |
๊ฐ์ฒด ์ถ์ ๊ฒฐ๊ณผ ํ์ |
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Ultralytics YOLOv8 ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํ๋์?
๋ค์์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ ค๋ฉด Ultralytics YOLOv8๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ง๋ ๊ฐ์ฒด์ ๊ฒฝ๊ณ ์์ ์ค์ฌ์ ์๋ณํด์ผ ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค์๋ DistanceCalculation
ํด๋์ค์์ Ultralytics' solutions
๋ชจ๋์ ํธ์ถํ๊ณ ๋ชจ๋ธ์ ์ถ์ ์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๊ตฌํ์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ์์.
Ultralytics YOLOv8 ์ผ๋ก ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ด์ ์ด ์๋์?
Ultralytics YOLOv8 ์ผ๋ก ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ฌ์ฉํ๋ฉด ๋ช ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค:
- ํ์งํ ์ ๋ฐ๋: ๊ฐ์ฒด์ ์ ํํ ๊ณต๊ฐ ์์น๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํฌ๊ธฐ ์ถ์ : ๋ฌผ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์ถ์ ํ์ฌ ๋งฅ๋ฝ์ ๋ ์ ์ดํดํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ์ฅ๋ฉด ์ดํด: 3D ์ฅ๋ฉด ์ดํด๋๋ฅผ ํฅ์์์ผ ์์จ ์ฃผํ ๋ฐ ๊ฐ์์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ ๋์ ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋๋ก ์ง์ํฉ๋๋ค.
Ultralytics YOLOv8 ์ผ๋ก ์ค์๊ฐ ๋์์ ์คํธ๋ฆผ์์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ํํ ์ ์๋์?
์, Ultralytics YOLOv8 ์ ์ฌ์ฉํ์ฌ ์ค์๊ฐ ๋์์ ์คํธ๋ฆผ์์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ํํ ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค์๋ OpenCV๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋์ค ํ๋ ์์ ์บก์ฒํ๊ณ YOLOv8 ๊ฐ์ฒด ๊ฐ์ง๋ฅผ ์คํํ ํ DistanceCalculation
ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ ํ๋ ์์์ ์ค๋ธ์ ํธ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค. ์์ธํ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋น๋์ค ์คํธ๋ฆผ ์์.
Ultralytics YOLOv8 ์ ์ฌ์ฉํ์ฌ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ์ค์ ๊ทธ๋ ค์ง ํฌ์ธํธ๋ฅผ ์ญ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํ๋์?
Ultralytics YOLOv8 ์ผ๋ก ๊ฑฐ๋ฆฌ ๊ณ์ฐ ์ค์ ๊ทธ๋ ค์ง ์ ์ ์ญ์ ํ๋ ค๋ฉด ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ฉ๋๋ค. ์ด ์์ ์ ์ํํ๋ฉด ๊ทธ๋ ค์ง ๋ชจ๋ ์ ์ด ์ง์์ง๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ์์ ์๋์ ์ฐธ๊ณ ์น์ ์ ์ฐธ์กฐํ์ธ์.
Ultralytics YOLOv8 ์์ DistanceCalculation ํด๋์ค๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํ ์ฃผ์ ์ธ์๋ ๋ฌด์์ ๋๊น?
์ด๊ธฐํ๋ฅผ ์ํ ์ฃผ์ ์ธ์๋ DistanceCalculation
ํด๋์ค Ultralytics YOLOv8 ํฌํจ:
names
: ํด๋์ค ์ธ๋ฑ์ค๋ฅผ ํด๋์ค ์ด๋ฆ์ ๋งคํํ๋ ์ฌ์ .view_img
: ๋น๋์ค ์คํธ๋ฆผ์ ํ์ํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ํ๋๊ทธ์ ๋๋ค.line_thickness
: ์ด๋ฏธ์ง์ ๊ทธ๋ ค์ง ์ ์ ๋๊ป์ ๋๋ค.line_color
: ์ด๋ฏธ์ง์ ๊ทธ๋ ค์ง ์ ์ ์์(BGR ํ์).centroid_color
: ๊ตฌ์ฌ์ ์์(BGR ํ์).
์ ์ฒด ๋ชฉ๋ก๊ณผ ๊ธฐ๋ณธ๊ฐ์ DistanceCalculation์ ์ธ์๋ฅผ ์ฐธ์กฐํ์ธ์.