Skip to content

Drone Yield Prediction Closeup Test 2026 05 19

ehdwo0427 edited this page May 27, 2026 · 1 revision

🍇 머루 close-up 측정 — test_data 4장 + 3-Model 비교 (2026-05-19)

이전: Drone-Yield-Prediction-Pipeline-2026-05 (전체 파이프라인 + 121장 batch) 본 페이지: GSD 정상 4장만 분리해서 면적-무게 모델 검증


한 줄 요약

121장 batch에서 GSD 측정 일관성 부족이 발견되어 (보드 mask가 송이에 가려짐), GSD 정상으로 판정된 test_data 4장만 분리 재실험. 면적→무게 모델 비교 결과 w = 11.74 × A^0.78 수식이 4장 합계 오차 ±5% 이내로 SAM3 + 회귀 조합이 최고. 다만 fit에 쓴 4 점으로 evaluate한 결과라 진정한 회귀 아님 — 30-50+ 송이 GT 추가 수집 필요.


1. 실험 구성

입력 (test_data 4장, GSD 정상)

사진 Setup 송이 GSD (mm/px) GT (g, berry-only)
IMG_8106 책상 ABC 합 (한 덩어리) 1 0.182 A+B+C = 931
IMG_8157 나무 AB (세로 매달림) 2 0.338 A=327, B=204
IMG_8159 나무 AB 다른 각도 2 0.342 A=327, B=204
IMG_8170 나무 C 단독 매달림 1 0.423 C=400

공통: 흰 보드 (16×48cm) reference가 송이와 별개 영역에 있어 mask 정상 검출.

산출 흐름 (모든 모델 공통)

[1] Reference 검출
    SAM3 text "white paper card" → mask → minAreaRect → 짧은 변 px

[2] GSD
    GSD (mm/px) = 16cm / short_side_px

[3] 송이 검출 (variant별)
    - SAM3 text "grape bunch" 직접
    - YOLO (yolov8m / yolo11m) bbox → SAM3 box prompt → mask

[4] 면적
    area (cm²) = mask_pixel_count × GSD² / 100

[5] 무게 환산 (두 모델 비교)
    Model A (volume):     w = 0.252 × A^1.5   (구 부피 가정 V = 4/3·π·R³)
    Model B (regression): w = 11.74 × A^0.78  (test_data 4점 fit)

2. 3-Model 검출 결과 (송이 수)

GT 송이 수: IMG_8106 = 1, IMG_8157 = 2, IMG_8159 = 2, IMG_8170 = 1, 합 6

사진 GT N SAM3 N yolov8m N yolo11m N
IMG_8106 ABC합 1 1 1 1
IMG_8157 AB 2 2 3 (+1 오탐) 4 (+2 오탐)
IMG_8159 AB 2 2 3 (+1 오탐) 4 (+2 오탐)
IMG_8170 C 1 1 1 2 (+1 오탐)
6 6 8 (+2) 11 (+5)

YOLO 오탐 패턴: 사람 신발/그림자/잎 어두운 영역을 송이로 잘못 검출 (drone domain 학습 → close-up domain shift).


3. 면적 + 회귀 모델 (B) 적용 결과

회귀: w = 11.74 × A^0.78

사진 GT (g) SAM3 A→g err yolov8m A→g err yolo11m A→g err
IMG_8106 931 270cm² → 925g −0.6% 275 → 939g +0.9% 227 → 809g −13.1%
IMG_8157 531 103 → 506g −4.7% 121 → 613g +15.4% 134 → 702g +32.2%
IMG_8159 531 100 → 497g −6.4% 120 → 610g +14.8% 140 → 731g +37.7%
IMG_8170 400 90 → 392g −2.1% 92 → 400g +0.1% 175 → 766g +91.6%
TOTAL 2393 563 → 2320g −3.1% 609 → 2562g +7.0% 676 → 3008g +25.7%

SAM3 + 회귀 모델 조합이 close-up에서 가장 정확 (총합 −3.1%).


4. 모델 식 비교 (왜 단순 ×2가 아닌가)

가설 4장 합계 오차 설명
단순 면적 (×1) w = k·A^1 +31% 2D ↔ 무게 직접 비례 가정
단순 ×2 w = 2·A +163% "앞뒤 합치면 2배" 가설
부피 비례 w = k·A^1.5 ±5~30% 3D 구 부피 가정
데이터 fit w = 11.74·A^0.78 ±0~10% test_data fit (overfit)

α = 0.78 (1과 1.5 사이, 1보다 작음)

이유 추정: 큰 송이일수록 berry 사이 빈 공간 + 잎/줄기 영역이 mask에 더 많이 포함 → 면적이 무게 대비 조금 부풀려 측정됨. 따라서 면적이 두 배가 되면 무게는 1.72배 (2^0.78), 단순 2배 아님.


5. 회귀 모델 한계 (정직한 평가)

현재 결과를 production 정확도로 보면 안 됨

항목 현 상태
fit 데이터 수 4 송이 (이상적 50-100)
train/test 분리 안 함 (fit한 데이터로 evaluate)
일반화 검증 0
같은 송이 여러 각도 처리 부분 (송이당 1 면적만 사용)
GSD 정확도 의문 (사람이 보드 들고 있음 → 깊이 차이)
품종 다양성 머루 한 종만

→ ±10% 오차는 fit에 잘 맞은 결과 (overfit), 새 송이 일반화 X.


6. 다음 단계 (촬영 가이드 + 추가 데이터)

촬영 SOP

  1. 보드를 송이 옆에 따로 두기 — 위에 올려 가리지 말 것 (SAM3 보드 mask 온전 검출)
  2. 보드와 송이는 같은 평면에 — 깊이 차이 → GSD 오차
  3. 사람이 보드 들지 말기 — 자세/거리 가변
  4. 각 setup마다 단독 보드 사진 1장 추가 — 인접 사진에 GSD propagate

GT 수집 표준

측정 단위
송이 총무게 g
가지/줄기 g
berry-only g
송이 30-50개 / 품종 (이상 100개)

Production 일정 (정직한 timeline)

단계 내용 예상
1. 추가 GT 수집 30-50 송이 + 다양한 크기 1-2개월
2. train/test 분리 검증 ±15% 이내 달성 1-2개월
3. 드론 환경 calibration 기둥(6cm) reference로 GSD 검증 1 시즌
4. 자동 처리 파이프라인 드론 영상 → kg 자동 출력 6-12개월
5. 시범 운용 1-2 농가 1 시즌 1 시즌

7. 결과 사진 (4장 × 3 모델 = 12장)

각 사진 상단에 산출식 + 두 모델 (부피 vs 회귀) 예측 + GT 비교 표시.

IMG_8106 — 책상 ABC 한 덩어리

SAM3 text

yolov8m + SAM3 mask

yolo11m + SAM3 mask


IMG_8157 — 나무 AB (세로 매달림)

SAM3 text

yolov8m + SAM3 mask

yolo11m + SAM3 mask


IMG_8159 — 나무 AB 다른 각도

SAM3 text

yolov8m + SAM3 mask

yolo11m + SAM3 mask


IMG_8170 — 나무 C 단독

SAM3 text

yolov8m + SAM3 mask

yolo11m + SAM3 mask


8. 산출물 및 코드

산출물

/mnt/nas3/.../20260518_머루_측정데이터/test_data/
├── IMG_8106.JPG, IMG_8157.JPG, IMG_8159.JPG, IMG_8170.JPG
└── results/
    ├── sam3_text/  (overlay ×4 + json + csv)
    ├── yolov8m/    (overlay ×4 + json + csv)
    └── yolo11m/    (overlay ×4 + json + csv)

코드

  • src/segmentation/bunch_measure_closeup_batch.py — VARIANT 옵션으로 3 모델 지원
  • src/segmentation/closeup_overlay_yield.py — 두 모델 (부피 + 회귀) overlay
  • src/calibration/board_rectify.py — 보드 aspect ratio 검증

실행

# Batch (각 모델)
for v in sam3_text yolov8m yolo11m; do
  IMG_DIR="/mnt/nas3/.../test_data" VARIANT=$v DEVICE=0 \
    python src/segmentation/bunch_measure_closeup_batch.py
done

# Overlay (두 모델 비교 + GT)
for v in sam3_text yolov8m yolo11m; do
  RESULTS_DIR="/mnt/nas3/.../test_data/results/$v" \
    K_VOL_DESK=0.252 K_VOL_WIN=0.252 K_VOL_TREE=0.252 \
    python src/segmentation/closeup_overlay_yield.py
done

9. 핵심 take-away

  1. close-up에선 SAM3 text가 압도적 — 검출률/오탐/정확도 모두 우세. YOLO는 drone domain 전용.
  2. 단순 ×2 아님 — 실측 fit α=0.78. 면적이 무게에 정비례하지 않음.
  3. 현재 회귀는 PoC 수준 — 4 점 fit, 일반화 보장 X. 50+ GT 추가가 진정한 모델.
  4. GSD 일관성이 가장 큰 에러 원인 — 보드 mask 가려짐, 평면 차이가 모델 오류보다 큰 영향.
  5. 드론 적용 시엔 별도 calibration 필수 — 기둥(6cm) reference로 동일 알고리즘 검증 필요.

Woody's AI Backend Engineering Log


💼 About

Deepvisions | AI Engineer 2026.03 ~ 재직중


🚀 Projects (최신순)

CCTV 자전거 경로 & 공회전 탐지 — 한동대학교 리빙랩

2026.05 ~ | @ Deepvisions 캠퍼스 CCTV 4대 · 자전거 OCR + 차량 공회전 다중 신호

야생동물 탐지 — RPi 엣지 배포

2026.04 ~ | @ Deepvisions 포도밭 침입 탐지 (5종 multi-class · 라즈베리파이 4 실시간)

포도밭 병해충 탐지 및 수확량 예측

2026.03 ~ | @ Deepvisions 드론 이미지 기반 객체 탐지 + GSD calibration + 수확량 예측


📦 종료된 프로젝트

OnTheTop

2025.03 ~ 2025.08 | 카카오테크부트캠프 | ✅ 종료 AI 기반 데스크테리어 추천 서비스


AI Notes


About

Clone this wiki locally