μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

Ultralytics YOLO πŸš€μ„ μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ˜μ—­μ—μ„œ 개체 수 κ³„μ‚°ν•˜κΈ°

μ˜μ—­ λ‚΄ 였브젝트 μΉ΄μš΄νŒ…μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

κ°€ μžˆλŠ” μ˜μ—­μ˜ 객체 μΉ΄μš΄νŒ… Ultralytics YOLOv8 λŠ” κ³ κΈ‰ 컴퓨터 비전을 μ‚¬μš©ν•˜μ—¬ μ§€μ •λœ μ˜μ—­ λ‚΄μ˜ 객체 수λ₯Ό μ •ν™•ν•˜κ²Œ νŒŒμ•…ν•˜λŠ” 것을 ν¬ν•¨ν•©λ‹ˆλ‹€. 이 μ ‘κ·Ό 방식은 λ‹€μ–‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ΅œμ ν™”ν•˜κ³  λ³΄μ•ˆμ„ κ°•ν™”ν•˜λ©° νš¨μœ¨μ„±μ„ κ°œμ„ ν•˜λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€.



Watch: Ultralytics YOLO11 | Ultralytics μ†”λ£¨μ…˜ πŸš€μ„ μ‚¬μš©ν•œ λ‹€μ–‘ν•œ μ˜μ—­μ—μ„œμ˜ 개체 수 계산

지역 λ‚΄ 였브젝트 μΉ΄μš΄νŒ…μ˜ μž₯점은?

  • 정밀도와 μ •ν™•μ„±: κ³ κΈ‰ 컴퓨터 λΉ„μ „μœΌλ‘œ 개체λ₯Ό μ„ΈλŠ” μ˜μ—­μ—μ„œλŠ” μ •λ°€ν•˜κ³  μ •ν™•ν•œ 개수 계산이 κ°€λŠ₯ν•˜λ―€λ‘œ μˆ˜λ™ 계산과 κ΄€λ ¨λœ 였λ₯˜λ₯Ό μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • νš¨μœ¨μ„± κ°œμ„ : μžλ™ν™”λœ 개체 μΉ΄μš΄νŒ…μ€ 운영 νš¨μœ¨μ„±μ„ ν–₯μƒμ‹œμΌœ λ‹€μ–‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‹€μ‹œκ°„ κ²°κ³Όλ₯Ό μ œκ³΅ν•˜κ³  ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•©λ‹ˆλ‹€.
  • λ‹€λͺ©μ μ„± 및 적용: 지역 λ‚΄ 객체 κ³„μˆ˜μ˜ λ‹€μš©λ„μ„± 덕뢄에 제쑰 및 κ°μ‹œμ—μ„œ ꡐ톡 λͺ¨λ‹ˆν„°λ§μ— 이λ₯΄κΈ°κΉŒμ§€ λ‹€μ–‘ν•œ μ˜μ—­μ— μ μš©ν•  수 μžˆμ–΄ κ΄‘λ²”μœ„ν•œ ν™œμš©λ„μ™€ νš¨μœ¨μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜

λ¦¬ν…ŒμΌ λ§ˆμΌ“ 슀트리트
λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ§€μ—­μ—μ„œ μ§‘κ³„ν•˜λŠ” μ‚¬λžŒ 수 Ultralytics YOLOv8 λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ§€μ—­μ˜ ꡰ쀑 수 계산 Ultralytics YOLOv8
λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ§€μ—­μ—μ„œ μ§‘κ³„ν•˜λŠ” μ‚¬λžŒ 수 Ultralytics YOLOv8 λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ§€μ—­μ˜ ꡰ쀑 수 계산 Ultralytics YOLOv8

지역 계산 μ˜ˆμ‹œ

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), (1080, 360), (20, 360)] # Pass region as list

# pass region as dictionary
region_points = {
    "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)],
    "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)],
}

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

# Init Object Counter
region = solutions.RegionCounter(
    show=True,
    region=region_points,
    model="yolo11n.pt",
)

# 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 = region.count(im0)
    video_writer.write(im0)

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

Ultralytics μ½”λ“œ μ˜ˆμ‹œ

Ultralytics 지역 μΉ΄μš΄νŒ… λͺ¨λ“ˆμ€ 예제 μ„Ήμ…˜μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 예제λ₯Ό μ‚΄νŽ΄λ³΄κ³  μ½”λ“œλ₯Ό μ‚¬μš©μž μ§€μ •ν•˜μ—¬ νŠΉμ • μ‚¬μš© 사둀에 맞게 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

인수 RegionCounter

λ‹€μŒμ€ ν‘œμž…λ‹ˆλ‹€. RegionCounter 인수λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€:

이름 μœ ν˜• κΈ°λ³Έκ°’ μ„€λͺ…
model str None Ultralytics YOLO λͺ¨λΈ 파일 경둜
region list [(20, 400), (1260, 400)] 계산 μ˜μ—­μ„ μ •μ˜ν•˜λŠ” 포인트 λͺ©λ‘μž…λ‹ˆλ‹€.
line_width int 2 경계 μƒμžμ˜ μ„  λ‘κ»˜μž…λ‹ˆλ‹€.
show bool False λΉ„λ””μ˜€ 슀트림 ν‘œμ‹œ μ—¬λΆ€λ₯Ό μ œμ–΄ν•˜λŠ” ν”Œλž˜κ·Έμž…λ‹ˆλ‹€.

자주 λ¬»λŠ” 질문

Ultralytics YOLOv8 을 μ‚¬μš©ν•˜μ—¬ μ§€μ •λœ μ˜μ—­μ—μ„œ 였브젝트 μΉ΄μš΄νŒ…μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

λ₯Ό μ‚¬μš©ν•˜μ—¬ μ§€μ •λœ μ˜μ—­μ—μ„œ 개체 수 계산 Ultralytics YOLOv8 λŠ” κ³ κΈ‰ 컴퓨터 비전을 μ‚¬μš©ν•˜μ—¬ μ§€μ •λœ μ˜μ—­ λ‚΄μ˜ 물체 수λ₯Ό κ°μ§€ν•˜κ³  μ§‘κ³„ν•©λ‹ˆλ‹€. 이 μ •λ°€ν•œ 방법은 제쑰, κ°μ‹œ, ꡐ톡 λͺ¨λ‹ˆν„°λ§κ³Ό 같은 λ‹€μ–‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ νš¨μœ¨μ„±κ³Ό 정확성을 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

Ultralytics YOLOv8 으둜 객체 μΉ΄μš΄νŒ… 슀크립트λ₯Ό μ‹€ν–‰ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?

λ‹€μŒ 단계에 따라 Ultralytics YOLOv8 μ—μ„œ 개체 μΉ΄μš΄νŒ…μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€:

  1. Ultralytics 리포지토리λ₯Ό λ³΅μ œν•˜κ³  λ””λ ‰ν† λ¦¬λ‘œ μ΄λ™ν•©λ‹ˆλ‹€:

    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics/examples/YOLOv8-Region-Counter
    
  2. 지역 μΉ΄μš΄νŒ… 슀크립트λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€:

    python yolov8_region_counter.py --source "path/to/video.mp4" --save-img
    

더 λ§Žμ€ μ˜΅μ…˜μ„ 보렀면 지역 카운트 μ‹€ν–‰ μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

λ¦¬μ „μ—μ„œ 였브젝트 μΉ΄μš΄νŒ…μ— Ultralytics YOLOv8 을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

Ultralytics YOLOv8 을 μ‚¬μš©ν•˜λ©΄ 지역 λ‚΄ 개체 수 계산에 λͺ‡ 가지 이점이 μžˆμŠ΅λ‹ˆλ‹€:

  • 정밀도와 μ •ν™•μ„±: μˆ˜λ™ κ³„μ‚°μ—μ„œ ν”νžˆ λ³Ό 수 μžˆλŠ” 였λ₯˜λ₯Ό μ΅œμ†Œν™”ν•©λ‹ˆλ‹€.
  • νš¨μœ¨μ„± κ°œμ„ : μ‹€μ‹œκ°„ κ²°κ³Όλ₯Ό μ œκ³΅ν•˜κ³  ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•©λ‹ˆλ‹€.
  • λ‹€λͺ©μ μ„± 및 ν™œμš©λ„: λ‹€μ–‘ν•œ 도메인에 μ μš©ν•˜μ—¬ ν™œμš©λ„λ₯Ό λ†’μž…λ‹ˆλ‹€.

μž₯점 μ„Ήμ…˜μ—μ„œ 더 μžμ„Έν•œ ν˜œνƒμ„ μ‚΄νŽ΄λ³΄μ„Έμš”.

λ™μ˜μƒ μž¬μƒ 쀑에 μ •μ˜λœ μ˜μ—­μ„ μ‘°μ •ν•  수 μžˆλ‚˜μš”?

예, Ultralytics YOLOv8 을 μ‚¬μš©ν•˜λ©΄ λ™μ˜μƒ μž¬μƒ 쀑에 μ˜μ—­μ„ λŒ€ν™”ν˜•μœΌλ‘œ 이동할 수 μžˆμŠ΅λ‹ˆλ‹€. 마우슀 μ™Όμͺ½ λ²„νŠΌμœΌλ‘œ ν΄λ¦­ν•˜κ³  λ“œλž˜κ·Έν•˜κΈ°λ§Œ ν•˜λ©΄ μ˜μ—­μ˜ μœ„μΉ˜λ₯Ό λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ°λŠ₯은 동적인 ν™˜κ²½μ— λŒ€ν•œ μœ μ—°μ„±μ„ ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€. 이동 κ°€λŠ₯ν•œ μ˜μ—­μ— λŒ€ν•œ 팁 μ„Ήμ…˜μ—μ„œ μžμ„Ένžˆ μ•Œμ•„λ³΄μ„Έμš”.

μ§€μ—­μ—μ„œ 였브젝트 μΉ΄μš΄νŒ…μ˜ μ‹€μ œ 적용 μ‚¬λ‘€μ—λŠ” μ–΄λ–€ 것이 μžˆλ‚˜μš”?

Ultralytics YOLOv8 을 μ‚¬μš©ν•œ 객체 μΉ΄μš΄νŒ…μ€ λ‹€μ–‘ν•œ μ‹€μ œ μ‹œλ‚˜λ¦¬μ˜€μ— μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • μ†Œλ§€μ—…: μœ λ™μΈκ΅¬ 뢄석을 μœ„ν•œ μ‚¬λžŒ 수 계산
  • μ‹œμž₯ 거리: ꡰ쀑 밀도 관리.

μ‹€μ œ 적용 사둀 μ„Ήμ…˜μ—μ„œ 더 λ§Žμ€ 사둀λ₯Ό μ‚΄νŽ΄λ³΄μ„Έμš”.

πŸ“…1 λ…„ μ „ 생성됨 ✏️ μ—…λ°μ΄νŠΈλ¨ 9 일 μ „

λŒ“κΈ€