Ultralytics YOLO11 ๐์ ์ฌ์ฉํ ๋๊ธฐ์ด ๊ด๋ฆฌ
๋๊ธฐ์ด ๊ด๋ฆฌ๋ ๋ฌด์์ธ๊ฐ์?
์ ์ฌ์ฉํ ๋๊ธฐ์ด ๊ด๋ฆฌ Ultralytics YOLO11 ๋ ๋๊ธฐ ์๊ฐ์ ์ค์ด๊ณ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ๋์ด๋ ์ฐจ๋์ ์ค์ ๊ตฌ์ฑํ๊ณ ์ ์ดํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๋๊ธฐ์ด์ ์ต์ ํํ์ฌ ์๋งค์ , ์ํ, ๊ณตํญ, ์๋ฃ ์์ค ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ๊ณ ๊ฐ ๋ง์กฑ๋์ ์์คํ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค.
Watch: ๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ Ultralytics YOLO11 | ๊ณตํญ ๋ฐ ์งํ์ฒ ์ญ
๋๊ธฐ์ด ๊ด๋ฆฌ์ ์ฅ์ ์?
- ๋๊ธฐ ์๊ฐ ๋จ์ถ: ๋๊ธฐ์ด ๊ด๋ฆฌ ์์คํ ์ ๋๊ธฐ์ด์ ํจ์จ์ ์ผ๋ก ๊ตฌ์ฑํ์ฌ ๊ณ ๊ฐ์ ๋๊ธฐ ์๊ฐ์ ์ต์ํํฉ๋๋ค. ์ด๋ ๊ณ ๊ฐ์ด ๋๊ธฐ ์๊ฐ์ ์ค์ด๊ณ ์ ํ์ด๋ ์๋น์ค์ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํ ์ ์์ด ๋ง์กฑ๋ ํฅ์์ผ๋ก ์ด์ด์ง๋๋ค.
- ํจ์จ์ฑ ํฅ์: ๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ๊ตฌํํ๋ฉด ๊ธฐ์ ์ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ํ ๋นํ ์ ์์ต๋๋ค. ๋๊ธฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์ง์ ๋ฐฐ์น๋ฅผ ์ต์ ํํจ์ผ๋ก์จ ๊ธฐ์ ์ ์ด์์ ๊ฐ์ํํ๊ณ ๋น์ฉ์ ์ ๊ฐํ๋ฉฐ ์ ๋ฐ์ ์ธ ์์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ค์ ์ ํ๋ฆฌ์ผ์ด์
๋ฌผ๋ฅ | ๋ฆฌํ ์ผ |
---|---|
๊ณตํญ ๋ฐ๊ถ ์นด์ดํฐ์์ ๋๊ธฐ์ด ๊ด๋ฆฌ Ultralytics YOLO11 | ๊ตฐ์ค ์ ๋๊ธฐ์ด ๋ชจ๋ํฐ๋ง Ultralytics YOLO11 |
YOLO11 ์์ ๋ฅผ ์ฌ์ฉํ ๋๊ธฐ์ด ๊ด๋ฆฌ
import cv2
from ultralytics import solutions
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("queue_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Define queue region points
queue_region = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # Define queue region points
# queue_region = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # Define queue polygon points
# Init Queue Manager
queue = solutions.QueueManager(
show=True, # Display the output
model="yolo11n.pt", # Path to the YOLO11 model file
region=queue_region, # Pass queue region points
# classes=[0, 2], # If you want to count specific classes i.e person and car with COCO pretrained model.
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if success:
out = queue.process_queue(im0)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
continue
print("Video frame is empty or video processing has been successfully completed.")
break
cap.release()
cv2.destroyAllWindows()
์ธ์ QueueManager
์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO ๋ชจ๋ธ ํ์ผ ๊ฒฝ๋ก |
region |
list |
[(20, 400), (1260, 400)] |
๋๊ธฐ์ด ์์ญ์ ์ ์ํ๋ ํฌ์ธํธ ๋ชฉ๋ก์ ๋๋ค. |
line_width |
int |
2 |
๊ฒฝ๊ณ ์์์ ์ ๋๊ป์ ๋๋ค. |
show |
bool |
False |
๋น๋์ค ์คํธ๋ฆผ ํ์ ์ฌ๋ถ๋ฅผ ์ ์ดํ๋ ํ๋๊ทธ์ ๋๋ค. |
์ธ์ model.track
์ธ์ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
---|---|---|---|
source |
str |
None |
์ด๋ฏธ์ง ๋๋ ๋์์์ ์์ค ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค. ํ์ผ ๊ฒฝ๋ก ๋ฐ URL์ ์ง์ํฉ๋๋ค. |
persist |
bool |
False |
ํ๋ ์ ๊ฐ ์ค๋ธ์ ํธ๋ฅผ ์ง์์ ์ผ๋ก ์ถ์ ํ์ฌ ๋น๋์ค ์ํ์ค ์ ์ฒด์์ ID๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. |
tracker |
str |
botsort.yaml |
์ฌ์ฉํ ์ถ์ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค(์, bytetrack.yaml ๋๋ botsort.yaml . |
conf |
float |
0.3 |
ํ์ง ์ ๋ขฐ ์๊ณ๊ฐ์ ์ค์ ํฉ๋๋ค. ๊ฐ์ด ๋ฎ์์๋ก ๋ ๋ง์ ๊ฐ์ฒด๋ฅผ ์ถ์ ํ ์ ์์ง๋ง ์คํ์ด ํฌํจ๋ ์ ์์ต๋๋ค. |
iou |
float |
0.5 |
์ค๋ณต ๊ฐ์ง๋ฅผ ํํฐ๋งํ๊ธฐ ์ํ IoU( Intersection over Union ) ์๊ณ๊ฐ์ ์ค์ ํฉ๋๋ค. |
classes |
list |
None |
ํด๋์ค ์ธ๋ฑ์ค๋ณ๋ก ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด classes=[0, 2, 3] ์ง์ ๋ ํด๋์ค๋ง ์ถ์ ํฉ๋๋ค. |
verbose |
bool |
True |
์ถ์ ๊ฒฐ๊ณผ์ ํ์๋ฅผ ์ ์ดํ์ฌ ์ถ์ ๋ ๊ฐ์ฒด์ ์๊ฐ์ ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. |
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ค์๊ฐ ๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ์ํด Ultralytics YOLO11 ์ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
์ค์๊ฐ ๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ์ํด Ultralytics YOLO11 ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์:
- YOLO11 ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ด ๋ก๋ํฉ๋๋ค.
YOLO("yolo11n.pt")
. - ๋ค์์ ์ฌ์ฉํ์ฌ ๋์์ ํผ๋๋ฅผ ์บก์ฒํฉ๋๋ค.
cv2.VideoCapture
. - ๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ์ํ ๊ด์ฌ ์์ญ(ROI)์ ์ ์ํฉ๋๋ค.
- ํ๋ ์์ ์ฒ๋ฆฌํ์ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ์งํ๊ณ ๋๊ธฐ์ด์ ๊ด๋ฆฌํฉ๋๋ค.
๋ค์์ ์ต์ํ์ ์์ ๋๋ค:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
queue_region = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
queue = solutions.QueueManager(
model="yolo11n.pt",
region=queue_region,
line_width=3,
)
while cap.isOpened():
success, im0 = cap.read()
if success:
out = queue.process_queue(im0)
cv2.imshow("Queue Management", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
Ultralytics HUB๋ฅผ ํ์ฉํ๋ฉด ๋๊ธฐ์ด ๊ด๋ฆฌ ์๋ฃจ์ ์ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ์ฌ์ฉ์ ์นํ์ ์ธ ํ๋ซํผ์ ์ ๊ณตํจ์ผ๋ก์จ ์ด ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
๋๊ธฐ์ด ๊ด๋ฆฌ์ Ultralytics YOLO11 ์ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ฃผ์ ์ด์ ์ด ์๋์?
๋๊ธฐ์ด ๊ด๋ฆฌ์ Ultralytics YOLO11 ์ ์ฌ์ฉํ๋ฉด ๋ช ๊ฐ์ง ์ด์ ์ด ์์ต๋๋ค:
- ๋๊ธฐ ์๊ฐ ๋จ์ถ: ๋๊ธฐ์ด์ ํจ์จ์ ์ผ๋ก ์ ๋ฆฌํ์ฌ ๊ณ ๊ฐ ๋๊ธฐ ์๊ฐ์ ์ค์ด๊ณ ๋ง์กฑ๋๋ฅผ ๋์ ๋๋ค.
- ํจ์จ์ฑ ํฅ์: ๋๊ธฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ์ง์ ๋ฐฐ์น ๋ฐ ์ด์์ ์ต์ ํํจ์ผ๋ก์จ ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค.
- ์ค์๊ฐ ์๋ฆผ: ๊ธด ๋๊ธฐ์ด์ ๋ํ ์ค์๊ฐ ์๋ฆผ์ ์ ๊ณตํ์ฌ ์ ์ํ ๊ฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ํ์ฅ์ฑ: ๋ฆฌํ ์ผ, ๊ณตํญ, ์๋ฃ ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ๋๊ธฐ์ด ๊ด๋ฆฌ ์๋ฃจ์ ์ ์ดํด๋ณด์ธ์.
๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ์ํด Ultralytics YOLO11 ๊ฐ์ ๊ฒฝ์์ฌ ๋์ TensorFlow ๋๋ ๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ์ํด Detectron2๋ฅผ ์ ํํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
Ultralytics YOLO11 ๋ ๋๊ธฐ์ด ๊ด๋ฆฌ ์ธก๋ฉด์์ TensorFlow ๋ฐ Detectron2์ ๋นํด ๋ช ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค:
- ์ค์๊ฐ ์ฑ๋ฅ: YOLO11 ๋ ์ค์๊ฐ ๊ฐ์ง ๊ธฐ๋ฅ์ผ๋ก ๋ ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ์ ๋ช ํฉ๋๋ค.
- ์ฌ์ฉ ํธ์์ฑ: Ultralytics Ultralytics HUB๋ฅผ ํตํด ๊ต์ก๋ถํฐ ๋ฐฐํฌ๊น์ง ์ฌ์ฉ์ ์นํ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ์ฌ์ ํ์ต๋ ๋ชจ๋ธ: ์ฌ์ ํ์ต๋ ๋ค์ํ ๋ชจ๋ธ์ ์ก์ธ์คํ์ฌ ์ค์ ์ ํ์ํ ์๊ฐ์ ์ต์ํํ ์ ์์ต๋๋ค.
- ์ปค๋ฎค๋ํฐ ์ง์: ๊ด๋ฒ์ํ ๋ฌธ์์ ํ๋ฐํ ์ปค๋ฎค๋ํฐ ์ง์์ผ๋ก ๋ฌธ์ ํด๊ฒฐ์ด ์ฌ์์ง๋๋ค.
์์ํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ Ultralytics YOLO.
Ultralytics YOLO11 ๊ณตํญ ๋ฐ ์๋งค์ ๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ ํ์ ๋๊ธฐ์ด์ ์ฒ๋ฆฌํ ์ ์๋์?
์, Ultralytics YOLO11 ์ ๊ณตํญ ๋ฐ ๋ฆฌํ ์ผ ํ๊ฒฝ์ ํฌํจํ ๋ค์ํ ์ ํ์ ๋๊ธฐ์ด์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํน์ ์ง์ญ ๋ฐ ์ค์ ์ผ๋ก QueueManager๋ฅผ ๊ตฌ์ฑํ๋ฉด YOLO11 ๋ค์ํ ๋๊ธฐ์ด ๋ ์ด์์๊ณผ ๋ฐ๋์ ๋ง๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
๊ณตํญ์ ์์ ๋๋ค:
queue_region_airport = [(50, 600), (1200, 600), (1200, 550), (50, 550)]
queue_airport = solutions.QueueManager(
model="yolo11n.pt",
region=queue_region_airport,
line_width=3,
)
๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์น์ ์ ์ฐธ์กฐํ์ธ์.
๋๊ธฐ์ด ๊ด๋ฆฌ์์ Ultralytics YOLO11 ์ ์ค์ ์ ์ฉ ์ฌ๋ก๋ ๋ฌด์์ธ๊ฐ์?
Ultralytics YOLO11 ๋ ๋๊ธฐ์ด ๊ด๋ฆฌ๋ฅผ ์ํด ๋ค์ํ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋ฉ๋๋ค:
- ์๋งค์ : ๊ณ์ฐ๋ ๋๊ธฐ์ด์ ๋ชจ๋ํฐ๋งํ์ฌ ๋๊ธฐ ์๊ฐ์ ์ค์ด๊ณ ๊ณ ๊ฐ ๋ง์กฑ๋๋ฅผ ๋์ ๋๋ค.
- ๊ณตํญ: ๋ณด๋ค ์ํํ ์น๊ฐ ๊ฒฝํ์ ์ํด ๋ฐ๊ถ ์นด์ดํฐ์ ๋ณด์ ๊ฒ์๋์ ๋๊ธฐ์ด์ ๊ด๋ฆฌํฉ๋๋ค.
- ํฌ์ค์ผ์ด: ํด๋ฆฌ๋๊ณผ ๋ณ์์์ ํ์ ํ๋ฆ์ ์ต์ ํํฉ๋๋ค.
- ์ํ: ์ํ์์ ๋๊ธฐ์ด์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ์ฌ ๊ณ ๊ฐ ์๋น์ค๋ฅผ ๊ฐ์ ํฉ๋๋ค.
์ค์ ๋๊ธฐ์ด ๊ด๋ฆฌ์ ๋ํ ๋ธ๋ก๊ทธ์์ ์์ธํ ๋ด์ฉ์ ํ์ธํ์ธ์.