TL;DR
이 튜토리얼은 약 7,000장의 항공 이미지와 120,302개의 person 어노테이션을 사용해 RF‑DETR을 학습하고 Roboflow Workflows로 배포하는 실무 파이프라인을 제시한다. 핵심은 학습 해상도, 추론 시 타일링(SAHI), 아키텍처 선택, 어노테이션 규칙이라는 네 가지 레버를 함께 맞추는 것이며, 튜토리얼은 512×512 학습 설정과 Image Slicer를 결합하는 비용·성능 절충을 안내한다. 완성된 워크플로는 검출·레이블 시각화·Python 집계·Gemini 단문 관찰을 연결해 주석 이미지와 수치 요약을 동시에 산출한다.
섹션별 상세


- 튜토리얼은 약 7,000장의 항공 이미지와 120,302개의 person 어노테이션으로 RF‑DETR을 학습시켜 소형 사람·차량을 검출한다고 밝힌다. — 블로그 요약 및 데이터 준비 섹션에 데이터셋 크기와 person 어노테이션 수가 기재되어 있음. 출처
- 추론 시 이미지 슬라이싱(SAHI)을 적용하면 리사이즈로 인해 사라지는 소형 객체를 복구할 수 있지만, 추론 횟수와 지연이 증가한다고 명시한다. — 기법 설명 섹션에서 inference-time slicing(이미지 슬라이싱)과 SAHI에 대해 설명한 단락 참조. 출처
- 원문은 RF‑DETR 같은 transformer 기반 탐지기가 밀집·중첩·스케일 변화가 큰 항공 장면에서 앵커 기반 방법보다 유리하다고 주장한다. — 모델 아키텍처 설명에서 transformer detectors(RF‑DETR)와 anchor-based detectors 비교 단락 참조. 출처
def run(self, image, predictions):
classes = ['awning-tricycle','bicycle','bus','car','motor','person','tricycle','truck','van']
vehicles = ['awning-tricycle','bicycle','bus','car','motor','tricycle','truck','van']
names = list(predictions.data.get('class_name', []))
counts = {c: names.count(c) for c in classes}
people = counts['person']
vehicle_total = sum(counts[c] for c in vehicles)
common = max(vehicles, key=lambda c: counts[c]) if vehicle_total else 'none'
summary = {'counts_by_class': counts, 'total_people': people, 'total_vehicles': vehicle_total, 'most_common_vehicle_class': common}
summary_text = f"People: {people} | Vehicles: {vehicle_total} | Most common vehicle: {common}"
arr = image.numpy_image.copy()
lines = [summary_text, ', '.join([f'{k}: {v}' for k, v in counts.items()])]
y = 24
for line in lines:
cv2.rectangle(arr, (6, y-18), (min(arr.shape[1]-1, 16 + 9*len(line)), y+7), (0,0,0), -1)
cv2.putText(arr, line, (10, y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 1, cv2.LINE_AA)
y += 24
out = WorkflowImageData.copy_and_replace(origin_image_data=image, numpy_image=arr)
return {'image': out, 'summary': summary, 'summary_text': summary_text}라벨 시각화 이후 결과를 집계하는 Roboflow Workflow용 Custom Python 블록 코드로, 클래스별 검출 수와 사람·차량 합계, 최빈 차량 클래스를 계산하고 그 요약을 이미지 상단에 그려 반환한다.

용어 해설
- 소형 객체 검출(Small-object detection)
- — 항공 촬영에서 픽셀 수가 매우 적은 대상(보행자, 자전거 등)을 안정적으로 찾아내는 문제 영역으로, 높은 해상도 유지와 타일링, 엄격한 어노테이션 규칙이 성능에 결정적 영향을 미친다.
- 학습 해상도(Training resolution)
- — 모델 학습에 입력하는 이미지 크기이며, 값이 낮아지면 소형 객체가 몇 픽셀로 축소되어 학습 신호가 사라진다; 따라서 해상도는 성능·메모리·시간의 명확한 트레이드오프를 만든다.
- 추론 시 이미지 슬라이싱(Inference-time slicing (SAHI))
- — 고해상도 프레임을 겹치는 타일로 분할해 각 타일에서 검출을 실행한 뒤 결과를 병합하는 기법으로, 리사이즈로 사라질 작은 객체를 복구하지만 추론 횟수와 지연이 증가한다.
- 어노테이션 품질(Annotation quality)
- — 작은 객체에 대한 경계상자 정확성, 일관된 부분·가림 처리 규칙, 애매영역(ignored regions) 관리는 모델이 학습하는 ‘진실’을 결정하므로 전체 성능 상한을 규정한다.
- Image Slicer 블록(Image Slicer)
- — Roboflow Workflows 안의 블록으로, 입력 이미지를 겹치는 타일로 쪼개고 각 타일을 모델에 보내어 소형 객체를 더 높은 세부도로 검출하게 만든다; 실시간 제약이 있는 파이프라인에서 비용을 증가시킨다.
기술
- RF-DETR
- Roboflow Workflows
- Google Gemini 2.5 Pro
- SAHI
- Python
- OpenCV
활용 사례
- 교통량·혼잡 모니터링
- 재난 상황 평가
- 인프라 점검 및 공공 공간 분석
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.