์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด ์ˆ˜ ๊ณ„์‚ฐ Ultralytics YOLO11

์˜ค๋ธŒ์ ํŠธ ์นด์šดํŒ…์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ์นด์šดํŒ… Ultralytics YOLO11 ๋Š” ๋™์˜์ƒ๊ณผ ์นด๋ฉ”๋ผ ์ŠคํŠธ๋ฆผ์—์„œ ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ณ  ์นด์šดํŒ…ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. YOLO11 ๋Š” ์ตœ์ฒจ๋‹จ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋Šฅ ๋•๋ถ„์— ๊ตฐ์ค‘ ๋ถ„์„ ๋ฐ ๊ฐ์‹œ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํšจ์œจ์ ์ด๊ณ  ์ •ํ™•ํ•œ ๊ฐ์ฒด ์นด์šดํŒ…์„ ์ œ๊ณตํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํƒ์›”ํ•ฉ๋‹ˆ๋‹ค.


Watch: ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด ์ˆ˜ ๊ณ„์‚ฐ Ultralytics YOLOv8

Watch: ํด๋ž˜์Šค๋ณ„ ์˜ค๋ธŒ์ ํŠธ ์นด์šดํŒ…์„ ์‚ฌ์šฉํ•˜์—ฌ Ultralytics YOLO11

์˜ค๋ธŒ์ ํŠธ ์นด์šดํŒ…์˜ ์žฅ์ ์€?

  • ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”: ๊ฐœ์ฒด ์นด์šดํŒ…์€ ์ •ํ™•ํ•œ ๊ฐœ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žฌ๊ณ  ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฆฌ์†Œ์Šค ํ• ๋‹น์„ ์ตœ์ ํ™”ํ•˜์—ฌ ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ๊ฐ•ํ™”: ๊ฐœ์ฒด ์นด์šดํŒ…์€ ๊ฐœ์ฒด๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ถ”์ ํ•˜๊ณ  ๊ณ„์‚ฐํ•˜์—ฌ ์‚ฌ์ „ ์œ„ํ˜‘ ํƒ์ง€๋ฅผ ์ง€์›ํ•จ์œผ๋กœ์จ ๋ณด์•ˆ๊ณผ ๊ฐ์‹œ๋ฅผ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•œ ์˜์‚ฌ ๊ฒฐ์ •: ๊ฐ์ฒด ์นด์šดํŒ…์€ ์˜์‚ฌ ๊ฒฐ์ •, ์†Œ๋งค์—…, ๊ตํ†ต ๊ด€๋ฆฌ ๋ฐ ๊ธฐํƒ€ ๋‹ค์–‘ํ•œ ์˜์—ญ์˜ ํ”„๋กœ์„ธ์Šค ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ท€์ค‘ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

๋ฌผ๋ฅ˜ ์–‘์‹์—…
์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ํŒจํ‚ท ๊ณ„์ˆ˜ ์‚ฌ์šฉ Ultralytics YOLO11 ๋ฐ”๋‹ค์—์„œ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ์„ธ๊ธฐ Ultralytics YOLO11
์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ํŒจํ‚ท ๊ณ„์ˆ˜ ์‚ฌ์šฉ Ultralytics YOLO11 ๋ฐ”๋‹ค์—์„œ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ์„ธ๊ธฐ Ultralytics YOLO11

YOLO11 ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐœ์ฒด ์ˆ˜ ๊ณ„์‚ฐ

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video/file.mp4"

# Pass region coordinates
yolo solutions count 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))

# Define region points
# region_points = [(20, 400), (1080, 400)]  # For line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]  # For rectangle region counting
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]  # For polygon region counting

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting using YOLO11 OBB model.
    # classes=[0, 2],  # If you want to count specific classes i.e person and car with COCO pretrained model.
    # 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 = counter.count(im0)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

์ธ์ˆ˜ ObjectCounter

๋‹ค์Œ์€ ํ‘œ์ž…๋‹ˆ๋‹ค. ObjectCounter ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

์ด๋ฆ„ ์œ ํ˜• ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
model str None Ultralytics YOLO ๋ชจ๋ธ ํŒŒ์ผ ๊ฒฝ๋กœ
region list [(20, 400), (1260, 400)] ๊ณ„์‚ฐ ์˜์—ญ์„ ์ •์˜ํ•˜๋Š” ํฌ์ธํŠธ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
line_width int 2 ๊ฒฝ๊ณ„ ์ƒ์ž์˜ ์„  ๋‘๊ป˜์ž…๋‹ˆ๋‹ค.
show bool False ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•˜๋Š” ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค.
show_in bool True ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์— ์ธ ์นด์šดํŠธ๋ฅผ ํ‘œ์‹œํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•˜๋Š” ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค.
show_out bool True ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์— ์•„์›ƒ ์นด์šดํŠธ๋ฅผ ํ‘œ์‹œํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•˜๋Š” ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค.

์ธ์ˆ˜ 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 ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์˜์ƒ์—์„œ ๊ฐœ์ฒด๋ฅผ ์นด์šดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”:

  1. ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ(cv2, ultralytics).
  2. ์นด์šดํŒ… ์˜์—ญ(์˜ˆ: ๋‹ค๊ฐํ˜•, ์„  ๋“ฑ)์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋™์˜์ƒ ์บก์ฒ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ฐœ์ฒด ์นด์šดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฐ ํ”„๋ ˆ์ž„์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ •์˜๋œ ์˜์—ญ ๋‚ด์—์„œ ๊ฐ์ฒด๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ํ•œ ์ง€์—ญ์—์„œ ๊ณ„์‚ฐํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค:

import cv2

from ultralytics import solutions


def count_objects_in_region(video_path, output_video_path, model_path):
    """Count objects in a specific region within a video."""
    cap = cv2.VideoCapture(video_path)
    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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
    counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")

๊ฐœ์ฒด ์ˆ˜ ๊ณ„์‚ฐ ์„น์…˜์—์„œ ๋” ๋งŽ์€ ๊ตฌ์„ฑ ๋ฐ ์˜ต์…˜์„ ์‚ดํŽด๋ณด์„ธ์š”.

๊ฐ์ฒด ์นด์šดํŒ…์— Ultralytics YOLO11 ์„ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ์ด์ ์ด ์žˆ๋‚˜์š”?

๊ฐ์ฒด ์นด์šดํŒ…์— Ultralytics YOLO11 ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”: ์ •ํ™•ํ•œ ์นด์šดํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ , ์žฌ๊ณ  ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ์‚ฐ์—…์—์„œ ๋ฆฌ์†Œ์Šค ํ• ๋‹น์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
  2. ๋ณด์•ˆ ๊ฐ•ํ™”: ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ถ”์ ํ•˜๊ณ  ๊ณ„์‚ฐํ•˜์—ฌ ๋ณด์•ˆ ๋ฐ ๊ฐ์‹œ๋ฅผ ๊ฐ•ํ™”ํ•˜์—ฌ ์„ ์ œ์ ์ธ ์œ„ํ˜‘ ํƒ์ง€๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•œ ์˜์‚ฌ ๊ฒฐ์ •: ๋ฆฌํ…Œ์ผ, ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ๋“ฑ์˜ ์˜์—ญ์—์„œ ์˜์‚ฌ ๊ฒฐ์ •์„ ์œ„ํ•œ ๊ท€์ค‘ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ฝ”๋“œ ์˜ˆ์ œ๋Š” ๊ฐ์ฒด ์นด์šดํŒ…์˜ ์žฅ์  ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Ultralytics YOLO11 ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

Ultralytics YOLO11 ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์นด์šดํŠธํ•˜๋ ค๋ฉด ์ถ”์  ๋‹จ๊ณ„์—์„œ ๊ด€์‹ฌ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Python ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:

import cv2

from ultralytics import solutions


def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
    """Count specific classes of objects in a video."""
    cap = cv2.VideoCapture(video_path)
    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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    line_points = [(20, 400), (1080, 400)]
    counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])

์ด ์˜ˆ์ œ์—์„œ๋Š” classes_to_count=[0, 2]ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. 0 ๊ทธ๋ฆฌ๊ณ  2 (์˜ˆ: ์‚ฌ๋žŒ ๋ฐ ์ž๋™์ฐจ).

์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋‹ค๋ฅธ ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ ๋Œ€์‹  YOLO11 ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Ultralytics YOLO11 ๋Š” Faster R-CNN, SSD ๋ฐ ์ด์ „ YOLO ๋ฒ„์ „๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ์— ๋น„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  1. ์†๋„์™€ ํšจ์œจ์„ฑ: YOLO11 ์€ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ฐ์‹œ ๋ฐ ์ž์œจ ์ฃผํ–‰๊ณผ ๊ฐ™์ด ๊ณ ์† ์ถ”๋ก ์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.
  2. ์ •ํ™•๋„: ๋ฌผ์ฒด ๊ฐ์ง€ ๋ฐ ์ถ”์  ์ž‘์—…์— ์ตœ์ฒจ๋‹จ ์ •ํ™•๋„๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์˜คํƒ์ง€ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์ „๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  3. ํ†ตํ•ฉ ์šฉ์ด์„ฑ: YOLO11 ์€ ๋ชจ๋ฐ”์ผ ๋ฐ ์—ฃ์ง€ ๋””๋ฐ”์ด์Šค๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ ๋ฐ ๋””๋ฐ”์ด์Šค์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ตœ์‹  AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  4. ์œ ์—ฐ์„ฑ: ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋„๋ก ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ์ง€, ์„ธ๋ถ„ํ™”, ์ถ”์ ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๋ฐ ์„ฑ๋Šฅ ๋น„๊ต์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Ultralytics YOLO11 ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ตฐ์ค‘ ๋ถ„์„ ๋ฐ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— YOLO11 ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ, Ultralytics YOLO11 ์€ ์‹ค์‹œ๊ฐ„ ๊ฐ์ง€ ๊ธฐ๋Šฅ, ํ™•์žฅ์„ฑ ๋ฐ ํ†ตํ•ฉ ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•ด ๊ตฐ์ค‘ ๋ถ„์„ ๋ฐ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์™„๋ฒฝํ•˜๊ฒŒ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋™์ ์ธ ํ™˜๊ฒฝ์—์„œ ๊ณ ์ •๋ฐ€ ๊ฐ์ฒด ์ถ”์ , ์นด์šดํŒ… ๋ฐ ๋ถ„๋ฅ˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ๊ตฐ์ค‘ ๋ถ„์„: ๋Œ€๊ทœ๋ชจ ๋ชจ์ž„์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์—ฌ ์•ˆ์ „์„ ๋ณด์žฅํ•˜๊ณ  ๊ตฐ์ค‘์˜ ํ๋ฆ„์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตํ†ต ๊ด€๋ฆฌ: ์ฐจ๋Ÿ‰์„ ์ถ”์  ๋ฐ ์ง‘๊ณ„ํ•˜๊ณ , ๊ตํ†ต ํŒจํ„ด์„ ๋ถ„์„ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ตํ†ต ํ˜ผ์žก์„ ๊ด€๋ฆฌํ•˜์„ธ์š”.

์ž์„ธํ•œ ์ •๋ณด ๋ฐ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ๊ฐ์ฒด ์นด์šดํŒ…์˜ ์‹ค์ œ ์ ์šฉ ๊ฐ€์ด๋“œ( YOLO11)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ“…1 ๋…„ ์ „ ์ƒ์„ฑ๋จ โœ๏ธ ์—…๋ฐ์ดํŠธ๋จ 16 ์ผ ์ „

๋Œ“๊ธ€