-
Notifications
You must be signed in to change notification settings - Fork 0
Drone Yield Prediction Pipeline 2026 05
작성일: 2026-05-08
드론 이미지 → 송이별 무게 추정 → 밭 단위 수확량(kg) 예측. detection plateau에서 segmentation·합성·GSD 환산 axis로 전환한 변천사.
| 순서 | 문서 | 가져오는 것 |
|---|---|---|
| 1 | 포도밭 병해충 탐지 및 수확량 예측 | 프로젝트 동기 |
| 2 | Drone Detection Progression 2026-04 | detection plateau 결론 |
| 3 | 이 문서 (Yield Pipeline) | detection 이후 → 수확량 예측 end-to-end |
| 항목 | 값 |
|---|---|
| 출발점 | detection mAP50-95 = 0.286 plateau (4-way fair chain 검증 완료) |
| 목적 | bbox만으론 무게 추정 불가 → segmentation + 면적 + GSD → kg |
| 현재 단계 | end-to-end PoC 완료, 무게 GT calibration 대기 |
| 검증 이미지 | Gemini AI 측면 시점 + drone test 29장 |
| 주요 axis | YOLO det / SAM3 mask / wire/post 검출 / 합성 데이터 / HSV color filter |
drone img
├─ Post detector (SAM3 text) → 기둥 픽셀 길이
│ └─→ 알려진 실측 (3m, 1.5m) → GSD (mm/px)
│
├─ Bunch detector (YOLO + SAM3 mask) → 송이 bbox + mask
│ └─→ mask area (px²) × GSD² → 실측 면적 (cm²)
│
├─ HSV color filter → grape vs leaf 분류
│
└─→ Weight estimator (면적 → g) → 합산 → 이미지 yield (kg)
YOLO mixed-best detection → SAM3 box prompt → mask. 후처리 4단계 누적:
- bbox NMS (IoU 0.5)
- Mask clip to bbox + 20% margin — SAM3 leak 방지
- Mask-IoU NMS (IoU 0.5) — 모양 기반 dupe
- Pixel-argmax overlap resolve — 인접 송이 픽셀 분배
| 단계 | total bunches | median area |
|---|---|---|
| YOLO 원본 | 395 | — |
| + bbox NMS | 335 | 2233 px² |
| + mask NMS + clip | 325 | 2433 px² |
| Before | After |
|---|---|
| random color, alpha edge 어색 | distinct color (golden HSV) + boundary contour + #id 라벨 |
32 송이 밀집 케이스 — bunch별 distinct color + boundary contour로 인접 송이 분리
| 시도 | drone test 29장 합격률 (CV<10%) |
|---|---|
| (a) Hough 기본 | 0/18 (0%) |
| (b) LSD only | 8/20 (40%) |
| (c) LSD + RANSAC spacing filter | 9/20 (45%) |
→ 영상처리 단독으론 한계. Wire는 fallback 위치, post가 primary.
SAM3.set_text_prompt("wooden post") zero-shot. 좌·우 기둥 자동 검출 + fragment 합치기. 학습 없이 안정적.
테스트: Gemini AI vineyard (3m × 1.5m 가정)
| Step | 결과 |
|---|---|
| Post detection | 좌·우 기둥 2개 자동 |
| GSD 수평 | 3000mm / 2104px = 1.43 mm/px |
| GSD 수직 | 1500mm / 1426px = 1.05 mm/px |
| Perspective ratio | 0.74 (수직 26% 압축) |
| Bunch detection | 79 raw → 53 (NMS·argmax 후) |
| HSV 분류 | grape 34 / leaf 18 / unc 1 |
| Yield (grape only) | 2.26 kg (avg 67 g/송이) |
| Before (conf 0.20, no HSV) | After (conf 0.05 + HSV) |
|---|---|
| 31 detection 모두 합산 (잎 outlier 포함) | grape만 합산, leaf 자동 제외 |
| 3.91 kg (잎 outlier로 부풀림) | 2.26 kg (정상 wine grape avg) |
| 뒷 라인 송이 누락 | conf 낮춰 catch |
| Variant | 학습 도메인 |
|---|---|
| (a) yolov8m mixed-best | drone top-down (학습) |
| (b) yolo11m fair-chain | 동상 |
| (c) SAM3 text "grape bunch" | 일반 web (CLIP 학습) |
| Variant | grape | leaf | leaf% |
|---|---|---|---|
| yolov8m | 34 | 18 | 34% |
| yolo11m | 49 | 21 | 28% |
| SAM3 text ⭐ | 39 | 1 | 2.5% |
| Variant | grape | leaf | leaf% |
|---|---|---|---|
| yolov8m ⭐ | 38 | 4 | 9% |
| yolo11m | 34 | 4 | 10% |
| SAM3 text | 20 | 3 | 13% |
| Image type | 최적 detector | 이유 |
|---|---|---|
| 측면 / ground-level | SAM3 text | 송이 전체 모양 보임 → CLIP 학습 분포 (web) 에 가까움 |
| 드론 top-down | YOLO (학습한 거) | drone domain specialized |
→ 시점·도메인이 결정 요인. 학습 도메인 = inference 도메인이어야 정확.
AI 측면 시점에서 SAM3 text가 leaf 거의 없음 (1/40, 2.5%) — winner는 SAM3 text
같은 3 variants가 drone top-down에서는 winner 뒤집힘 — yolov8m이 송이 가장 많이 잡음 (38), SAM3 text는 절반만 catch (20)
빈 vineyard tile (40장, 8K → 4분할) + 송이 RGBA library (drone 추출 328개) → 합성.
| 항목 | v1 (random + alpha) | v2 (wire-aware + Poisson) |
|---|---|---|
| 위치 | 완전 random (하늘/땅에도) | wire 위 매달림 (LSD 활용) |
| Blending | alpha (가장자리 도드라짐) | Poisson seamlessClone (색·톤 자연) |
| 합성 이미지 | 120 | 120 |
| 총 송이 paste | 912 | 944 |
송이가 하늘·땅에도 random 출현, alpha 가장자리 도드라짐
송이가 wire 라인 (노랑) 근처에 매달림, Poisson으로 색·톤 자연
Paint by Example (SD v1.4 기반) PoC. 결론: 수확량 예측 paradigm에선 copy-paste가 더 적합.
이유:
- size/품종 통제가 photo-realism보다 결정적
- copy-paste는 GSD 검증 가능 (size 우리가 알고 있음)
- detection 학습엔 다양성이 photo-realism보다 critical
- Diffusion은 demo / Phase 3 production polish 단계에
+0.005 짜내는 것보다 segmentation·면적·무게 회귀 axis 진입이 본질에 가까움.
- YOLO ⭐ drone top-down (specialized)
- SAM3 ⭐ ground-level 측면 (web 학습 분포)
- 어느 게 좋냐 X, 어느 시점이냐가 답
단일 NMS로 안 됨. bbox NMS · mask-IoU NMS · clip · pixel-argmax 모두 다른 종류 문제.
AI 깨끗함이 detection 정확도를 inflate. 진짜 production 데이터로 cross-check 필수.
수확량 paradigm엔 copy-paste 적합 (size 통제 + GSD 검증). Diffusion은 demo 단계에.
YOLO/SAM3 false positive (잎/배경)를 색 분포로 reject. 학습 비용 0.
| 항목 | 상태 |
|---|---|
| 무게 회귀 모델 학습 | ❌ 농가 측정 GT 50-100쌍 필요 (Phase 2) |
| Bucket classifier (S/M/L/XL) | scaffold만, GT 도착 후 학습 |
| Berry counting | Phase 1 보류, Phase 2 ablation |
| 단일 시점 occlusion 보정 | 가시 비율 (50-70%) 추정 → ×1.5-2 곱셈 |
| 다른 품종 일반화 | calibration 별도 필요 |
- Detection plateau 인정하고 axis 전환
- 후처리 4단계 누적 — 단일 fix로 안 풀림 인정
- crop variant 도입 — full image SAM3 leak trade-off 받아들임
- 3 variant 비교 — 한 모델에 매몰되지 않음
- AI + drone 둘 다 검증 — AI만으로 결론 내릴 함정 회피
- Wire detection에 시간 너무 투자 (45% 합격률에서 일찍 학습형 결정)
- SAM3 box format 가정 (실제
[x1,y1,x2,y2]pixel, 디버깅에 시간 소비) - AI 이미지 결과만으로 SAM3 text가 best라고 결론 낼 뻔 — drone에서 정반대
다음에 비슷한 vision pipeline 구축한다면:
- 학습 도메인 = inference 도메인 일치 확인
- 항상 2-3개 variant 비교 (도메인별 winner 다름)
- Foundation model zero-shot baseline 먼저
- Metric plateau에서 axis 전환 가능성 항상 검토
- Synthetic data: copy-paste 먼저, diffusion 나중
- NMS는 단일이 아니라 단계 누적
- Color/HSV 후처리는 final layer
- Hyperparameter sweep + 시각화 grid (한 페이지 비교)
Deepvisions | AI Engineer 2026.03 ~ 재직중
2026.05 ~ | @ Deepvisions 캠퍼스 CCTV 4대 · 자전거 OCR + 차량 공회전 다중 신호
2026.04 ~ | @ Deepvisions 포도밭 침입 탐지 (5종 multi-class · 라즈베리파이 4 실시간)
2026.03 ~ | @ Deepvisions 드론 이미지 기반 객체 탐지 + GSD calibration + 수확량 예측
- 프로젝트 메인
- 관련 연구 종합 + 한계 (2026-05) ← 최신
- 수확량 close-up 4장 + 3-Model (2026-05-19)
- 드론 포도 수확량 예측 — 파이프라인 (2026-05)
- 드론 포도송이 탐지 — 학습 변천사 (2026-04)
- SAM3 vs Fine-tuned YOLO
- Grounding DINO vs YOLO Top3 비교 요약
- YOLO Baseline Top3 비교 요약
- YOLO Model Comparison Summary
- 포도 탐지를 위한 데이터 수집
- 포도 수확량 측정을 위한 Object Detection
2025.03 ~ 2025.08 | 카카오테크부트캠프 | ✅ 종료 AI 기반 데스크테리어 추천 서비스
- Name: Woody (이동재)
- Focus: Vision AI, LLM Integration, Backend Engineering
- GitHub: @ehdwo0427
- Email: ehdwo0427@naver.com
- 포트폴리오 : 포트폴리오