๋ค์์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์๋ฅด๊ธฐ Ultralytics YOLO11
๊ฐ์ฒด ์๋ฅด๊ธฐ๋ ๋ฌด์์ธ๊ฐ์?
๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ์๋ฅด๊ธฐ Ultralytics YOLO11 ๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ์๋ฅด๊ธฐ์๋ ์ด๋ฏธ์ง ๋๋ ๋์์์์ ๊ฐ์ง๋ ํน์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ถ์ถํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค. YOLO11 ๋ชจ๋ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์ ํํ๊ฒ ์๋ณํ๊ณ ๋ฌ์ฌํ์ฌ ์ถ๊ฐ ๋ถ์ ๋๋ ์กฐ์์ ์ํ ์ ๋ฐํ ์๋ฅด๊ธฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
Watch: ๋ค์์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์๋ฅด๊ธฐ Ultralytics YOLO
์ค๋ธ์ ํธ ์๋ฅด๊ธฐ์ ์ฅ์ ์?
- ์ง์ค ๋ถ์: YOLO11 ๋์ ๊ฐ์ฒด ์๋ฅด๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฅ๋ฉด ๋ด์์ ๊ฐ๋ณ ํญ๋ชฉ์ ์ฌ์ธต์ ์ผ๋ก ์กฐ์ฌํ๊ฑฐ๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์ฉ๋ ๊ฐ์: ๊ฐ์ฒด ์๋ฅด๊ธฐ๋ ๊ด๋ จ ๊ฐ์ฒด๋ง ์ถ์ถํจ์ผ๋ก์จ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ต์ํํ์ฌ ์ ์ฅ, ์ ์ก ๋๋ ํ์ ๊ณ์ฐ ์์ ์ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ํฅ์๋ ์ ๋ฐ๋: YOLO11 ์ ๊ฐ์ฒด ๊ฐ์ง ์ ํ๋๋ ์๋ฆฐ ๊ฐ์ฒด๊ฐ ๊ณต๊ฐ ๊ด๊ณ๋ฅผ ์ ์งํ๋๋ก ๋ณด์ฅํ์ฌ ์์ธํ ๋ถ์์ ์ํด ์๊ฐ์ ์ ๋ณด์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์กดํฉ๋๋ค.
๋น์ฃผ์ผ
๊ณตํญ ์ํ๋ฌผ |
---|
๊ณตํญ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ๋ฅผ ์ด์ฉํ ์ฌํ ๊ฐ๋ฐฉ ์๋ฅด๊ธฐ Ultralytics YOLO11 |
YOLO11 ์์ ๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ์๋ฅด๊ธฐ
import os
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolo11n.pt")
names = 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))
crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
os.mkdir(crop_dir_name)
# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
idx = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = model.predict(im0, show=False)
boxes = results[0].boxes.xyxy.cpu().tolist()
clss = results[0].boxes.cls.cpu().tolist()
annotator = Annotator(im0, line_width=2, example=names)
if boxes is not None:
for box, cls in zip(boxes, clss):
idx += 1
annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])
crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)
cv2.imshow("ultralytics", im0)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
video_writer.release()
cv2.destroyAllWindows()
์ธ์ model.predict
์ธ์ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
---|---|---|---|
source |
str |
'ultralytics/assets' |
์ถ๋ก ํ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๋ฏธ์ง ๊ฒฝ๋ก, ๋์์ ํ์ผ, ๋๋ ํ ๋ฆฌ, URL ๋๋ ์ค์๊ฐ ํผ๋์ฉ ๋๋ฐ์ด์ค ID๊ฐ ๋ ์ ์์ต๋๋ค. ๋ค์ํ ํ์๊ณผ ์์ค๋ฅผ ์ง์ํ๋ฏ๋ก ๋ค์ํ ์ ํ์ ์ ๋ ฅ์ ์ ์ฐํ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค. |
conf |
float |
0.25 |
ํ์ง์ ๋ํ ์ต์ ์ ๋ขฐ๋ ์๊ณ๊ฐ์ ์ค์ ํฉ๋๋ค. ์ด ์๊ณ๊ฐ๋ณด๋ค ๋ฎ์ ์ ๋ขฐ๋๋ก ํ์ง๋ ๊ฐ์ฒด๋ ๋ฌด์๋ฉ๋๋ค. ์ด ๊ฐ์ ์กฐ์ ํ๋ฉด ์คํ์ง๋ฅผ ์ค์ด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. |
iou |
float |
0.7 |
๋น์ต๋ ์ต์ (NMS)์ ๋ํ ๊ต์ฐจ์ ์ด๊ณผ (IoU) ์๊ณ๊ฐ์ ๋๋ค. ๊ฐ์ด ๋ฎ์์๋ก ์ค๋ณต๋๋ ์์๋ฅผ ์ ๊ฑฐํ์ฌ ํ์ง ํ์๊ฐ ์ค์ด๋ค์ด ์ค๋ณต์ ์ค์ด๋ ๋ฐ ์ ์ฉํฉ๋๋ค. |
imgsz |
int ๋๋ tuple |
640 |
์ถ๋ก ํ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค. ๋จ์ผ ์ ์์ผ ์ ์์ต๋๋ค. 640 ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฌ๊ฐํ ํฌ๊ธฐ ์กฐ์ ๋๋ (๋์ด, ๋๋น) ํํ์ ์ฌ์ฉํฉ๋๋ค. ์ ์ ํ ํฌ๊ธฐ ์กฐ์ ์ ๊ฐ์ง์จ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ ํ์ฑ ์ฒ๋ฆฌ ์๋. |
half |
bool |
False |
์ ํ๋์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๋ฉด์ ์ง์๋๋ GPU์์ ๋ชจ๋ธ ์ถ๋ก ์๋๋ฅผ ๋์ผ ์ ์๋ ๋ฐ์ ํ๋ (FP16) ์ถ๋ก ์ ํ์ฑํํฉ๋๋ค. |
device |
str |
None |
์ถ๋ก ํ ์ฅ์น๋ฅผ ์ง์ ํฉ๋๋ค(์, cpu , cuda:0 ๋๋ 0 ). ์ฌ์ฉ์๊ฐ ๋ชจ๋ธ ์คํ์ ์ํด CPU, ํน์ GPU, ๋๋ ๊ธฐํ ์ปดํจํ
์ฅ์น ์ค์์ ์ ํํ ์ ์์ต๋๋ค. |
batch |
int |
1 |
์ถ๋ก ํ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ง์ ํฉ๋๋ค(์์ค๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ๋๋ ํ ๋ฆฌ, ๋น๋์ค ํ์ผ ๋๋ .txt ํ์ผ). ๋ฐฐ์น ํฌ๊ธฐ๊ฐ ํด์๋ก ์ฒ๋ฆฌ๋์ด ์ฆ๊ฐํ์ฌ ์ถ๋ก ์ ํ์ํ ์ด ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค. |
max_det |
int |
300 |
์ด๋ฏธ์ง๋น ํ์ฉ๋๋ ์ต๋ ๊ฐ์ง ํ์. ๋ชจ๋ธ์ด ํ ๋ฒ์ ์ถ๋ก ์์ ๊ฐ์งํ ์ ์๋ ์ด ์ค๋ธ์ ํธ ์๋ฅผ ์ ํํ์ฌ ๋ฐ์ง๋ ์ฅ๋ฉด์์ ๊ณผ๋ํ ์ถ๋ ฅ์ ๋ฐฉ์งํฉ๋๋ค. |
vid_stride |
int |
1 |
๋น๋์ค ์ ๋ ฅ์ ํ๋ ์ ๋ณดํญ. ๋์์์์ ํ๋ ์์ ๊ฑด๋๋ฐ์ด ์๊ฐ ํด์๋๋ฅผ ํฌ์ํ๋ฉด์ ์ฒ๋ฆฌ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๊ฐ์ด 1์ด๋ฉด ๋ชจ๋ ํ๋ ์์ ์ฒ๋ฆฌํ๊ณ , ๊ฐ์ด ํด์๋ก ํ๋ ์์ ๊ฑด๋๋๋๋ค. |
stream_buffer |
bool |
False |
๋น๋์ค ์คํธ๋ฆผ์ ๋ํด ์์ ํ๋ ์์ ๋๊ธฐ์ด์ ๋ฃ์์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ง์ฝ False , old frames get dropped to accommodate new frames (optimized for real-time applications). If `True', queues new frames in a buffer, ensuring no frames get skipped, but will cause latency if inference FPS is lower than stream FPS. |
visualize |
bool |
False |
์ถ๋ก ์ค์ ๋ชจ๋ธ ๊ธฐ๋ฅ์ ์๊ฐํ๋ฅผ ํ์ฑํํ์ฌ ๋ชจ๋ธ์ด '๋ณด๊ณ ์๋ ๊ฒ'์ ๋ํ ์ธ์ฌ์ดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋๋ฒ๊น ๋ฐ ๋ชจ๋ธ ํด์์ ์ ์ฉํฉ๋๋ค. |
augment |
bool |
False |
์์ธก์ ์ํ ํ ์คํธ ์๊ฐ ์ฆ๊ฐ(TTA)์ ์ง์ํ์ฌ ์ถ๋ก ์๋๋ฅผ ํฌ์ํ๋ฉด์ ํ์ง ๊ฒฌ๊ณ ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. |
agnostic_nms |
bool |
False |
์๋ก ๋ค๋ฅธ ํด๋์ค์ ๊ฒน์น๋ ์์๋ฅผ ๋ณํฉํ๋ ํด๋์ค ๋ฌด๊ด NMS(Non-Maximum Suppression)๋ฅผ ํ์ฑํํฉ๋๋ค. ํด๋์ค ์ค๋ณต์ด ์ผ๋ฐ์ ์ธ ๋ค์ค ํด๋์ค ํ์ง ์๋๋ฆฌ์ค์ ์ ์ฉํฉ๋๋ค. |
classes |
list[int] |
None |
ํด๋์ค ID ์งํฉ์ผ๋ก ์์ธก์ ํํฐ๋งํฉ๋๋ค. ์ง์ ๋ ํด๋์ค์ ์ํ๋ ํ์ง๋ง ๋ฐํ๋ฉ๋๋ค. ๋ค์ค ํด๋์ค ํ์ง ์์ ์์ ๊ด๋ จ ๊ฐ์ฒด์ ์ง์คํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. |
retina_masks |
bool |
False |
๊ณ ํด์๋ ๋ถํ ๋ง์คํฌ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐํ๋ ๋ง์คํฌ(masks.data )๋ฅผ ํ์ฑํํ๋ฉด ์๋ณธ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ์ผ์นํฉ๋๋ค. ๋นํ์ฑํํ๋ฉด ์ถ๋ก ์ค์ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. |
embed |
list[int] |
None |
ํน์ง ๋ฒกํฐ ๋๋ ์๋ฒ ๋ฉ์ ์ถ์ถํ ๋ ์ด์ด๋ฅผ ์ง์ ํฉ๋๋ค. ํด๋ฌ์คํฐ๋ง์ด๋ ์ ์ฌ๋ ๊ฒ์๊ณผ ๊ฐ์ ๋ค์ด์คํธ๋ฆผ ์์ ์ ์ ์ฉํฉ๋๋ค. |
project |
str |
None |
์์ธก ์ถ๋ ฅ์ด ์ ์ฅ๋๋ ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ์ ์ด๋ฆ(๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ). save ๊ฐ ํ์ฑํ๋์ด ์์ต๋๋ค. |
name |
str |
None |
์์ธก ์คํ์ ์ด๋ฆ์
๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์์ธก ์ถ๋ ฅ์ด ์ ์ฅ๋๋ ํ๋ก์ ํธ ํด๋ ๋ด์ ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. save ๊ฐ ํ์ฑํ๋์ด ์์ต๋๋ค. |
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๊ฐ์ฒด ์๋ฅด๊ธฐ( Ultralytics YOLO11 )๋ ๋ฌด์์ด๋ฉฐ ์ด๋ป๊ฒ ์๋ํ๋์?
๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ์๋ฅด๊ธฐ Ultralytics YOLO11YOLO11 ์ ํ์ง ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฏธ์ง ๋๋ ๋์์์์ ํน์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ถ์ถํ๋ ์์ ์ ํฌํจํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ฅผ ํตํด ์ง์ค์ ์ธ ๋ถ์, ๋ฐ์ดํฐ ์ฉ๋ ๊ฐ์, ์ ํ๋ ํฅ์์ ์ํด YOLO11 ์ ํ์ฉํ์ฌ ๋์ ์ ํ๋๋ก ๊ฐ์ฒด๋ฅผ ์๋ณํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์๋ฅผ ์ ์์ต๋๋ค. ์์ธํ ํํ ๋ฆฌ์ผ์ ๊ฐ์ฒด ์๋ฅด๊ธฐ ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค๋ฅธ ์๋ฃจ์ ๋ณด๋ค ๊ฐ์ฒด ์๋ฅด๊ธฐ์ Ultralytics YOLO11 ์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
Ultralytics YOLO11 ๋ ์ ๋ฐ๋, ์๋, ์ฌ์ฉ ํธ์์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค. ์ธ๋ถ์ ์ด๊ณ ์ ํํ ๊ฐ์ฒด ๊ฐ์ง ๋ฐ ์๋ฅด๊ธฐ๊ฐ ๊ฐ๋ฅํ์ฌ ์ง์ค์ ์ธ ๋ถ์๊ณผ ๋์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ์ ๋๋ค. ๋ํ, YOLO11 ์ ๋ค์ํ ํ๋์จ์ด์์ ์ค์๊ฐ ๊ธฐ๋ฅ๊ณผ ์ต์ ํ๊ฐ ํ์ํ ๋ฐฐํฌ๋ฅผ ์ํด OpenVINO ๋ฐ TensorRT ๊ณผ ๊ฐ์ ๋๊ตฌ์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค. ๋ชจ๋ธ ๋ด๋ณด๋ด๊ธฐ ๊ฐ์ด๋์์ ์ด์ ์ ์ดํด๋ณด์ธ์.
๊ฐ์ฒด ์๋ฅด๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์งํฉ์ ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ์ค์ด๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
Ultralytics YOLO11 ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋๋ ๋์์์์ ๊ด๋ จ ๊ฐ์ฒด๋ง ์๋ฅด๋ฉด ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ฌ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ ํจ์จ์ ๋์ผ ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค์๋ ํน์ ๊ฐ์ฒด๋ฅผ ๊ฐ์งํ๋๋ก ๋ชจ๋ธ์ ํ์ต์ํจ ๋ค์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๋ถ๋ถ๋ง ์๋ฅด๊ณ ์ ์ฅํ๋ ๊ณผ์ ์ด ํฌํจ๋ฉ๋๋ค. Ultralytics YOLO11 ์ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋น ๋ฅธ ์์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค์๊ฐ ๋์์ ๋ถ์ ๋ฐ ๊ฐ์ฒด ์๋ฅด๊ธฐ์ Ultralytics YOLO11 ์ ์ฌ์ฉํ ์ ์๋์?
์, Ultralytics YOLO11 ์ค์๊ฐ ๋น๋์ค ํผ๋๋ฅผ ์ฒ๋ฆฌํ์ฌ ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ๊ฐ์งํ๊ณ ์๋ฅผ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ธ์ ๊ณ ์ ์ถ๋ก ๊ธฐ๋ฅ์ ๊ฐ์, ์คํฌ์ธ ๋ถ์, ์๋ํ๋ ๊ฒ์ฌ ์์คํ ๊ณผ ๊ฐ์ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ ๋๋ค. ์ถ์ ๋ฐ ์์ธก ๋ชจ๋๋ฅผ ํ์ธํ์ฌ ์ค์๊ฐ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
๊ฐ์ฒด ์๋ฅด๊ธฐ๋ฅผ ์ํด YOLO11 ์ ํจ์จ์ ์ผ๋ก ์คํํ๊ธฐ ์ํ ํ๋์จ์ด ์๊ตฌ ์ฌํญ์ ๋ฌด์์ธ๊ฐ์?
Ultralytics YOLO11 ๋ CPU ๋ฐ GPU ํ๊ฒฝ ๋ชจ๋์ ์ต์ ํ๋์ด ์์ง๋ง, ํนํ ์ค์๊ฐ ๋๋ ๋์ฉ๋ ์ถ๋ก ์ ๊ฒฝ์ฐ ์ต์ ์ ์ฑ๋ฅ์ ์ป์ผ๋ ค๋ฉด ์ ์ฉ GPU (์: NVIDIA Tesla, RTX ์๋ฆฌ์ฆ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฒฝ๋ ๊ธฐ๊ธฐ์ ๋ฐฐํฌํ๋ ค๋ฉด iOS ์ ๊ฒฝ์ฐ CoreML ๋๋ Android ์ ๊ฒฝ์ฐ TFLite ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ง์๋๋ ๋๋ฐ์ด์ค ๋ฐ ํ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ชจ๋ธ ๋ฐฐํฌ ์ต์ ์์ ํ์ธํ ์ ์์ต๋๋ค.