๊ณ ๊ธ ๋ฐ์ดํฐ ์๊ฐํ: Ultralytics YOLO11 ๐์ ์ฌ์ฉํ ํํธ ๋งต
ํํธ๋งต ์๊ฐ
๋ก ์์ฑ๋ ํํธ๋งต์ Ultralytics YOLO11 ๋ก ์์ฑ๋ ํํธ๋งต์ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์์ํ ์์์ผ๋ก ๊ตฌ๋ถ๋ ๋งคํธ๋ฆญ์ค๋ก ๋ณํํฉ๋๋ค. ์ด ์๊ฐ์ ๋๊ตฌ๋ ๋ค์ํ ์์ ์คํํธ๋ผ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋ฐ์ดํฐ ๊ฐ์ ๋ํ๋ด๋ฉฐ, ๋ฐ๋ปํ ์์กฐ๋ ๋ ๋์ ๊ฐ๋๋ฅผ, ์ฐจ๊ฐ์ด ์์กฐ๋ ๋ ๋ฎ์ ๊ฐ์ ๋ํ๋ ๋๋ค. ํํธ๋งต์ ๋ณต์กํ ๋ฐ์ดํฐ ํจํด, ์๊ด๊ด๊ณ, ์ด์ ์งํ๋ฅผ ์๊ฐํํ๋ ๋ฐ ํ์ํ๋ฉฐ, ๋ค์ํ ์์ญ์์ ๋ฐ์ดํฐ๋ฅผ ํด์ํ๋ ๋ฐ ์ ๊ทผํ๊ธฐ ์ฝ๊ณ ๋งค๋ ฅ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
Watch: ํํธ๋งต์ ์ฌ์ฉํ Ultralytics YOLO11
๋ฐ์ดํฐ ๋ถ์์ ํํธ๋งต์ ์ ํํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
- ์ง๊ด์ ์ธ ๋ฐ์ดํฐ ๋ถํฌ ์๊ฐํ: ํํธ๋งต์ ๋ณต์กํ ๋ฐ์ดํฐ ์งํฉ์ ์ดํดํ๊ธฐ ์ฌ์ด ์๊ฐ์ ํ์์ผ๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ ์ง์ค๋์ ๋ถํฌ์ ๋ํ ์ดํด๋ฅผ ๊ฐ์ํํฉ๋๋ค.
- ํจ์จ์ ์ธ ํจํด ํ์ง: ๋ฐ์ดํฐ๋ฅผ ํํธ๋งต ํ์์ผ๋ก ์๊ฐํํ๋ฉด ์ถ์ธ, ๊ตฐ์ง, ์ด์๊ฐ์ ๋ ์ฝ๊ฒ ๋ฐ๊ฒฌํ ์ ์์ด ๋ถ์๊ณผ ์ธ์ฌ์ดํธ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ป์ ์ ์์ต๋๋ค.
- ํฅ์๋ ๊ณต๊ฐ ๋ถ์ ๋ฐ ์์ฌ ๊ฒฐ์ : ํํธ๋งต์ ๊ณต๊ฐ ๊ด๊ณ๋ฅผ ์ค๋ช ํ๋ ๋ฐ ์ ์ฉํ๋ฉฐ ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค, ํ๊ฒฝ ์ฐ๊ตฌ, ๋์ ๊ณํ๊ณผ ๊ฐ์ ๋ถ์ผ์ ์์ฌ ๊ฒฐ์ ํ๋ก์ธ์ค๋ฅผ ๋์ต๋๋ค.
์ค์ ์ ํ๋ฆฌ์ผ์ด์
๊ตํตํธ | ๋ฆฌํ ์ผ |
---|---|
Ultralytics YOLO11 ์ด์ก ํํธ๋งต | Ultralytics YOLO11 ๋ฆฌํ ์ผ ํํธ๋งต |
Ultralytics YOLO11 ์์ ๋ฅผ ์ฌ์ฉํ ํํธ๋งต
# Run a heatmap example
yolo solutions heatmap show=True
# Pass a source video
yolo solutions heatmap source="path/to/video/file.mp4"
# Pass a custom colormap
yolo solutions heatmap colormap=cv2.COLORMAP_INFERNO
# Heatmaps + object counting
yolo solutions heatmap region=[(20, 400), (1080, 400), (1080, 360), (20, 360)]
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("heatmap_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# In case you want to apply object counting + heatmaps, you can pass region points.
# region_points = [(20, 400), (1080, 400)] # Define line points
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # Define region points
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # Define polygon points
# Init heatmap
heatmap = solutions.Heatmap(
show=True, # Display the output
model="yolo11n.pt", # Path to the YOLO11 model file
colormap=cv2.COLORMAP_PARULA, # Colormap of heatmap
# region=region_points, # If you want to do object counting with heatmaps, you can pass region_points
# classes=[0, 2], # If you want to generate heatmap for specific classes i.e person and car.
# show_in=True, # Display in counts
# show_out=True, # Display out counts
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = heatmap.generate_heatmap(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
์ธ์ Heatmap()
์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO ๋ชจ๋ธ ํ์ผ ๊ฒฝ๋ก |
colormap |
int |
cv2.COLORMAP_JET |
ํํธ๋งต์ ์ฌ์ฉํ ์ปฌ๋ฌ๋งต์ ๋๋ค. |
show |
bool |
False |
์ด๋ฏธ์ง๋ฅผ ํํธ๋งต ์ค๋ฒ๋ ์ด์ ํจ๊ป ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
show_in |
bool |
True |
์์ญ์ ๋ค์ด์ค๋ ๊ฐ์ฒด ์๋ฅผ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
show_out |
bool |
True |
์์ญ์ ๋ฒ์ด๋๋ ๊ฐ์ฒด ์๋ฅผ ํ์ํ ์ง ์ฌ๋ถ์ ๋๋ค. |
region |
list |
None |
์นด์ดํธ ์์ญ์ ์ ์ํ๋ ํฌ์ธํธ(์ ๋๋ ๋ค๊ฐํ)์ ๋๋ค. |
line_width |
int |
2 |
๊ทธ๋ฆฌ๊ธฐ์ ์ฌ์ฉ๋ ์ ์ ๋๊ป์ ๋๋ค. |
์ธ์ 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 |
์ถ์ ๊ฒฐ๊ณผ์ ํ์๋ฅผ ์ ์ดํ์ฌ ์ถ์ ๋ ๊ฐ์ฒด์ ์๊ฐ์ ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. |
ํํธ๋งต ์ปฌ๋ฌ๋งต
์ปฌ๋ฌ๋งต ์ด๋ฆ | ์ค๋ช |
---|---|
cv::COLORMAP_AUTUMN |
๊ฐ์ ์ ์ง๋ |
cv::COLORMAP_BONE |
๋ผ๋ ์์ ๋งต |
cv::COLORMAP_JET |
์ ํธ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_WINTER |
๊ฒจ์ธ ์์ ์ง๋ |
cv::COLORMAP_RAINBOW |
๋ ์ธ๋ณด์ฐ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_OCEAN |
๋ฐ๋ค ์์ ์ง๋ |
cv::COLORMAP_SUMMER |
์ฌ๋ฆ ์์ ์ง๋ |
cv::COLORMAP_SPRING |
๋ด ์์ ์ง๋ |
cv::COLORMAP_COOL |
๋ฉ์ง ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_HSV |
HSV(์์กฐ, ์ฑ๋, ๊ฐ) ์์ ๋งต |
cv::COLORMAP_PINK |
ํํฌ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_HOT |
ํซ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_PARULA |
ํ๋ฃฐ๋ผ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_MAGMA |
๋ง๊ทธ๋ง ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_INFERNO |
์ธํ๋ฅด๋ ธ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_PLASMA |
ํ๋ผ์ฆ๋ง ์์ ๋งต |
cv::COLORMAP_VIRIDIS |
๋น๋ฆฌ๋์ค ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_CIVIDIS |
์๋น๋์ค ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_TWILIGHT |
ํฉํผ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_TWILIGHT_SHIFTED |
์ํํธ๋ ํฉํผ ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_TURBO |
ํฐ๋ณด ์ปฌ๋ฌ ๋งต |
cv::COLORMAP_DEEPGREEN |
๋ฅ ๊ทธ๋ฆฐ ์ปฌ๋ฌ ๋งต |
์ด๋ฌํ ์ปฌ๋ฌ๋งต์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ํ ์์ ํํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Ultralytics YOLO11 ํํธ๋งต์ ์ด๋ป๊ฒ ์์ฑ๋๋ฉฐ ์ด๋ค ์ด์ ์ด ์๋์?
Ultralytics YOLO11 ๋ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์์์ผ๋ก ๊ตฌ๋ถ๋ ํ๋ ฌ๋ก ๋ณํํ์ฌ ํํธ๋งต์ ์์ฑํ๋ฉฐ, ๋ค์ํ ์์์ด ๋ฐ์ดํฐ ๊ฐ๋๋ฅผ ๋ํ๋ ๋๋ค. ํํธ๋งต์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ์ ํจํด, ์๊ด๊ด๊ณ, ์ด์ ์งํ๋ฅผ ๋ ์ฝ๊ฒ ์๊ฐํํ ์ ์์ต๋๋ค. ๋ฐ๋ปํ ์์กฐ๋ ๋ ๋์ ๊ฐ์ ๋ํ๋ด๊ณ ์ฐจ๊ฐ์ด ์์กฐ๋ ๋ ๋ฎ์ ๊ฐ์ ๋ํ๋ ๋๋ค. ์ฃผ์ ์ด์ ์ผ๋ก๋ ๋ฐ์ดํฐ ๋ถํฌ์ ์ง๊ด์ ์ธ ์๊ฐํ, ํจ์จ์ ์ธ ํจํด ๊ฐ์ง, ์์ฌ ๊ฒฐ์ ์ ์ํ ํฅ์๋ ๊ณต๊ฐ ๋ถ์ ๋ฑ์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ๊ณผ ๊ตฌ์ฑ ์ต์ ์ ํํธ๋งต ๊ตฌ์ฑ ์น์ ์ ์ฐธ์กฐํ์ธ์.
Ultralytics YOLO11 ์ ์ฌ์ฉํ์ฌ ์ค๋ธ์ ํธ ์ถ์ ๊ณผ ํํธ๋งต ์์ฑ์ ๋์์ ์ํํ ์ ์๋์?
์, Ultralytics YOLO11 ๊ฐ์ฒด ์ถ์ ๊ณผ ํํธ๋งต ์์ฑ์ ๋์์ ์ง์ํฉ๋๋ค. ์ด๋ Heatmap
์๋ฃจ์
์ ๊ฐ์ฒด ์ถ์ ๋ชจ๋ธ๊ณผ ํตํฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ํํธ๋งต ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ณ YOLO11 ์ ์ถ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ค์์ ๊ฐ๋จํ ์์์
๋๋ค:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video/file.mp4")
heatmap = solutions.Heatmap(colormap=cv2.COLORMAP_PARULA, show=True, model="yolo11n.pt")
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
im0 = heatmap.generate_heatmap(im0)
cv2.imshow("Heatmap", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
์์ธํ ์๋ด๋ ์ถ์ ๋ชจ๋ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
Ultralytics YOLO11 ํํธ๋งต์ด OpenCV๋ Matplotlib ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์๊ฐํ ๋๊ตฌ์ ๋ค๋ฅธ ์ ์ ๋ฌด์์ธ๊ฐ์?
Ultralytics YOLO11 ํํธ๋งต์ ๊ฐ์ฒด ๊ฐ์ง ๋ฐ ์ถ์ ๋ชจ๋ธ๊ณผ์ ํตํฉ์ ์ํด ํน๋ณํ ์ค๊ณ๋์ด ์ค์๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ์ํ ์๋ํฌ์๋ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. OpenCV๋ Matplotlib ๊ฐ์ ์ผ๋ฐ์ ์ธ ์๊ฐํ ๋๊ตฌ์ ๋ฌ๋ฆฌ YOLO11 ํํธ๋งต์ ์ฑ๋ฅ๊ณผ ์๋ ์ฒ๋ฆฌ์ ์ต์ ํ๋์ด ์์ด ์ง์์ ์ธ ์ถ์ , ๊ฐ์ ๊ณ์ ์กฐ์ , ์ค์๊ฐ ๋น๋์ค ์ค๋ฒ๋ ์ด์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. YOLO11 ์ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ Ultralytics YOLO11 ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
Ultralytics YOLO11 ์ ์ฌ์ฉํ์ฌ ํํธ ๋งต์์ ํน์ ๊ฐ์ฒด ํด๋์ค๋ง ์๊ฐํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
์์ ์ํ๋ ํด๋์ค๋ฅผ ์ง์ ํ์ฌ ํน์ ์ค๋ธ์ ํธ ํด๋์ค๋ฅผ ์๊ฐํํ ์ ์์ต๋๋ค. track()
YOLO ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ฐจ์ ์ฌ๋๋ง ์๊ฐํํ๋ ค๋ ๊ฒฝ์ฐ(ํด๋์ค ์ธ๋ฑ์ค๊ฐ 0๊ณผ 2๋ผ๊ณ ๊ฐ์ ํ ๊ฒฝ์ฐ) classes
๋งค๊ฐ ๋ณ์๋ฅผ ์ ์ ํ ์ฌ์ฉํฉ๋๋ค.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video/file.mp4")
heatmap = solutions.Heatmap(show=True, model="yolo11n.pt", classes=[0, 2])
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
im0 = heatmap.generate_heatmap(im0)
cv2.imshow("Heatmap", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
๊ธฐ์ ์ด ๋ฐ์ดํฐ ๋ถ์์์ ํํธ๋งต ์์ฑ์ ์ํด Ultralytics YOLO11 ์ ์ ํํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
Ultralytics YOLO11 ๋ ๊ณ ๊ธ ๊ฐ์ฒด ๊ฐ์ง ๊ธฐ๋ฅ๊ณผ ์ค์๊ฐ ํํธ๋งต ์์ฑ ๊ธฐ๋ฅ์ ์ํํ๊ฒ ํตํฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์๊ฐํํ๊ณ ์ ํ๋ ๊ธฐ์ ์๊ฒ ์ด์์ ์ธ ์ ํ์ ๋๋ค. ์ฃผ์ ์ฅ์ ์ผ๋ก๋ ์ง๊ด์ ์ธ ๋ฐ์ดํฐ ๋ถํฌ ์๊ฐํ, ํจ์จ์ ์ธ ํจํด ๊ฐ์ง, ๋ ๋์ ์์ฌ ๊ฒฐ์ ์ ์ํ ํฅ์๋ ๊ณต๊ฐ ๋ถ์์ด ์์ต๋๋ค. ๋ํ, ์๊ตฌ ์ถ์ , ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ์ปฌ๋ฌ๋งต, ๋ค์ํ ๋ด๋ณด๋ด๊ธฐ ํ์ ์ง์๊ณผ ๊ฐ์ YOLO11 ์ ์ต์ฒจ๋จ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ๋ณด๋ค ์ฐ์ํฉ๋๋ค. TensorFlow ๋ฐ ์ข ํฉ์ ์ธ ๋ฐ์ดํฐ ๋ถ์์ ์ํ OpenCV์ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ๋ณด๋ค ์ฐ์ํฉ๋๋ค. ๋น์ฆ๋์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ Ultralytics ์๊ธ์ ์์ ํ์ธํ์ธ์.