시계열 분포, 최적범위 충족 여부, DO-수온 교호작용 검증. 이상치 12건(0.4%) 자동 제거 후 1,368행 클린.
Python · PyTorch · Ultralytics · OpenCV · scikit-learn · Stable-Baselines3 표준 스택. 평가 가중치 ‘라이브러리 호출 적정성’ 최적화.
FHD 영상 → 개체수·위치·체장 추정. yolov8s 사전학습 + low confidence threshold 0.05.
5-feature (brightness · std · OF magnitude · OF entropy · density) → KMeans k=5 unsupervised. 5클래스 자동 라벨링.
3-layer LSTM (hidden 128) → 30분 선행 예측. AdamW + CosineLR + Gradient Clip. val MSE 0.00337 수렴.
State 5-dim → Action 2-dim 정책망. 30,000 step · 128 episodes. Reward 평균 592 → 1,716 (+190% 향상).
3-layer LSTM (hidden 128, dropout 0.15) · AdamW lr 1e-3 · CosineAnnealingLR · Gradient Clip 1.0 · 50 epoch · batch 64 · MPS 가속. 1,308 샘플 (1,046 train / 262 val). 최종 val MSE 0.00337 — baseline 대비 30x 개선.
샘플 영상(FHD 30fps · 120초)에서 균일 간격 8프레임 추출 → yolov8s 사전학습 모델 (Ultralytics, COCO) 추론. 프레임당 평균 3개 객체 감지. 본선에서 어류 라벨 데이터로 fine-tune 시 정밀도 ↑.








Optical Flow (Farneback) 평균 motion vector 크기를 인접 프레임 간 자동 산출 → Stage 2 행동분류 입력.
영상 2.0 fps 샘플링 (239 프레임) → 5-feature (brightness · std · OF magnitude · OF direction entropy · density) → StandardScaler 정규화 → KMeans 5 클러스터 → 클러스터 중심 통계 기준 자동 라벨링 (5 행동 클래스).
통합 추론 스크립트가 feeding_score 복합지수 + PPO 정책으로 자동 산출. JSON 스키마 + CSV 로그 동시 기록.
"timestamp": "2026-05-12T00:20:29", "tank_id": 1, "feeding": { "trigger": true, "amount_g": 925.2, "score": 1.0, "score_components": { "temp_score": 1.0, "ph_score": 1.0, "do_score": 1.0, "behavior_correction": 0.05 } }, "energy_saving": { "baseline_kwh": 12.4, "optimized_kwh": 9.6, "saving_kwh": 2.8, "saving_percent": 22.6, "saving_krw": 392.0 }, "context": { "water": { "temp_c": 11.8, "ph": 7.77, "do_mgL": 8.54 }, "fish": { "count": 187, "avg_weight_g": 412.3 } }
Stable-Baselines3 PPO · MlpPolicy · lr 3e-4 · n_steps 2048 · γ 0.99 · GAE λ 0.95 · clip 0.2.
State 5-dim (수온·pH·DO·누적사료·이전급이시각) → Action 2-dim 연속 (사료량 0~1 · 산소가동 0~1).
Reward = 성장률 + (-사료낭비) + (-에너지비) + (-수질패널티). 1 episode = 4시간(240 step).
| # | 평가 항목 | 본 데모 대응 | 증빙 |
|---|---|---|---|
| 1 | 알고리즘 논리성 | 4-Stage YOLO + Cluster + LSTM + PPO 통합 파이프라인 | 아키텍처 도식 §03 |
| 2 | I/O 정합성 (핵심) | JSON 스키마 + pytest E2E + CSV 로그 | 출력 §07 |
| 3 | 데이터 활용도 | 수질 1,380행 · 영상 120초 · 239 프레임 행동 분류 실사용 | EDA §02 · 클러스터 §06 |
| 4 | AI 모델 구조·가중치 적정성 | LSTM 직접 학습 · PPO 30k step 학습 · Optical Flow 통계 분석 | val MSE 0.00337 +190% reward |
| 5 | 라이브러리 호출 적정성 | PyTorch · Ultralytics · OpenCV · sklearn · SB3 · Gymnasium (전부 표준) | requirements 핀 |
| 6 | 코드 보안성 | secrets/.env 분리 · pip-audit · bandit 정적분석 | audit pass |
| 7 | 출력 3종 도출 | 통합 스크립트 자동 JSON + CSV 누적 + 24h rollout 시각화 | live 산출 §07 · §08 |
3-layer LSTM (hidden 128) · AdamW · CosineLR · 50 epoch · MPS
val MSE 0.00337 수렴 — baseline 대비 30× 개선
MlpPolicy · 30,000 step · 128 episodes · Monitor wrapper
+190% reward 향상 (593 → 1,716)
5-feature OF + brightness + density · KMeans k=5
239 프레임 자동 분류 · 5 행동 클래스 분포 산출