Internal Demo · Unlisted · Updated 2026-05-12 01:10

AquaSmart RAS — 대서양연어 자동급이 AI

2026 제2회 스마트양식 도전해(海) 경진대회 실증분야 응모용. 수질 1,380행 + 영상 120초 데이터로 4-Stage AI (YOLO v8 · Behavior Cluster · LSTM · PPO 강화학습) 통합 파이프라인. ① 급이 시점 · ② 급이량 · ③ 에너지 절감량 자동 산출.
학습 상태 · LSTM ✓ 학습 / PPO ✓ 학습 / Cluster ✓ 마감 · 2026-05-15 18:00 주최 · FIPA · 한국어촌어항공단 작성 · Forta · forta.sh

01 한눈에 보기 모든 결과는 실제 학습/추론에서 자동 산출됨

수질 적합도

94.9%
대서양연어 최적범위 충족 시간 비율

LSTM val MSE

0.0034
50 epoch 학습 · 30x 개선 (vs baseline)

PPO 학습 향상

+190%
평균 reward 593 → 1,716 (128 ep)

행동 5클래스

239프레임
unsupervised KMeans 분류 완료

수온 중앙값

11.8°C
최적 8~14 °C · ✓ in range

pH 중앙값

7.77
최적 7.0~8.0 · ✓ in range

DO 중앙값

8.54
최적 ≥ 8 mg/L · ✓ pass

DO ↔ 수온 상관

+0.565
RAS 인공 산소공급 흔적

02 수질 EDA · 이상치 검출 · 상관 분석

시계열 분포, 최적범위 충족 여부, DO-수온 교호작용 검증. 이상치 12건(0.4%) 자동 제거 후 1,368행 클린.

수질 EDA 4-panel
좌상 수온 · 우상 pH · 좌하 DO · 우하 DO-수온 산점도 (corr +0.565). 녹색 영역 = 대서양연어 최적범위.

03 4-Stage AI 파이프라인

Python · PyTorch · Ultralytics · OpenCV · scikit-learn · Stable-Baselines3 표준 스택. 평가 가중치 ‘라이브러리 호출 적정성’ 최적화.

1

객체 감지 — YOLO v8

FHD 영상 → 개체수·위치·체장 추정. yolov8s 사전학습 + low confidence threshold 0.05.

ultralytics 8.4OpenCV 4.13
2

행동 분류 — Optical Flow + KMeans

5-feature (brightness · std · OF magnitude · OF entropy · density) → KMeans k=5 unsupervised. 5클래스 자동 라벨링.

OpenCV Farnebacksklearn 1.8
3

수질 예측 — Deep LSTM

3-layer LSTM (hidden 128) → 30분 선행 예측. AdamW + CosineLR + Gradient Clip. val MSE 0.00337 수렴.

PyTorch 2.11 MPS
4

의사결정 — PPO 강화학습

State 5-dim → Action 2-dim 정책망. 30,000 step · 128 episodes. Reward 평균 592 → 1,716 (+190% 향상).

Stable-Baselines3 2.8Gymnasium 1.2

04 Stage 3 · Deep LSTM 30분 선행 예측 학습됨 · val MSE 0.00337

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 개선.

LSTM forecast
실측 vs 예측 — 30분 horizon. 3 features (수온·pH·DO) 동시 예측. Val RMSE/MAE 각 변수별 표시.
LSTM history
학습 곡선 (log scale) · Train · Val · Best Val MSE 표시. CosineLR로 부드러운 수렴.

05 Stage 1 · YOLO v8 영상 객체 감지 8 프레임 · yolov8s · conf 0.05

샘플 영상(FHD 30fps · 120초)에서 균일 간격 8프레임 추출 → yolov8s 사전학습 모델 (Ultralytics, COCO) 추론. 프레임당 평균 3개 객체 감지. 본선에서 어류 라벨 데이터로 fine-tune 시 정밀도 ↑.

0s
0.0s · 4 det
17s
17.1s · 4 det
34s
34.3s · 2 det
51s
51.4s · 2 det
68s
68.5s · 2 det
85s
85.7s · 1 det
102s
102.8s · 5 det
120s
120.0s · 6 det

Optical Flow (Farneback) 평균 motion vector 크기를 인접 프레임 간 자동 산출 → Stage 2 행동분류 입력.

06 Stage 2 · 행동 5클래스 unsupervised 분류 KMeans k=5 · 239 프레임

영상 2.0 fps 샘플링 (239 프레임) → 5-feature (brightness · std · OF magnitude · OF direction entropy · density) → StandardScaler 정규화 → KMeans 5 클러스터 → 클러스터 중심 통계 기준 자동 라벨링 (5 행동 클래스).

low_oxygen 28.0%
normal 24.3%
stress 23.8%
feeding 13.8%
disease 10.0%
low_oxygen_surface · 67 frames · 표면 집결 + 중간 활동 normal_school · 58 frames · 일관된 방향성 stress · 57 frames · 빠른 + 무작위 방향 feeding_response · 33 frames · 군집 + 표면 쏠림 disease_low_motion · 24 frames · 낮은 활동
Behavior clusters
상단 · 행동 라벨 시간축 / 중단 좌 · OF magnitude 시계열 / 중단 우 · direction entropy / 하단 · 5 클러스터 중심 비교 (5-feature normalized).

07 통합 출력 3종 대회 공고문 필수 항목

통합 추론 스크립트가 feeding_score 복합지수 + PPO 정책으로 자동 산출. JSON 스키마 + CSV 로그 동시 기록.

① 급이 시점

trigger=true
feeding_score 0.85 이상 → 발사

② 급이량

925.2 g
개체수 × 평균체중 × FCR 1.2 × score

③ 에너지 절감

2.8 kWh
22.6% 절감 · 시간당 ₩392

실제 산출 JSON (live)

"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 }
}

08 Stage 4 · PPO 강화학습 정책망 학습됨 · 30,000 step · 128 ep · +190% reward

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).

총 학습 step

30,000
128 episodes completed

초기 평균 reward

593
학습 초반 10 episode

최종 평균 reward

1,716
학습 후반 10 episode

향상폭

+190%
+1,124 절대 reward
PPO learning curve
에피소드별 return — 파랑 점 = raw, 주황 = moving average (window 10). 명확한 수렴 추세.
PPO learned policy 24h rollout
학습된 deterministic 정책 24시간 시뮬레이션 — 사료(g/min) · 산소가동 강도 · 수질(수온·DO) + feeding_score.

09 평가 항목 대응 매트릭스 공고문 7항목 + 학습 증빙

#평가 항목본 데모 대응증빙
1알고리즘 논리성4-Stage YOLO + Cluster + LSTM + PPO 통합 파이프라인아키텍처 도식 §03
2I/O 정합성 (핵심)JSON 스키마 + pytest E2E + CSV 로그출력 §07
3데이터 활용도수질 1,380행 · 영상 120초 · 239 프레임 행동 분류 실사용EDA §02 · 클러스터 §06
4AI 모델 구조·가중치 적정성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

10 일정 및 단계

2026-05-12
D-3 · 미팅 + 계약 확정 · 본 데모 시연 및 견적 합의
2026-05-13
D-2 · 통합 보고서 + 코드 정리 · 제안서 결과 수치 반영 · 이치훈 교수 통계 검수
2026-05-14
D-1 · 단위테스트 + 보안 audit + 최종 검증
2026-05-15
제출 · 18:00 마감 · fipa-ai.kr 업로드 (3시간 buffer)
2026-05-22
예선 1차 결과 발표 · 고득점 10팀 선발
2026-05-27
예선 2차 발표평가 · 4팀 선발 (Sprint B)
2026-06-08 ~ 10-27
본선 실증 5개월 · 강원 스마트연어연구원 실수조 (Phase 1)
2026-11
최종 시상 · 총 상금 1억원

11 학습 결과 요약 — 한 페이지로

Stage 3 — LSTM

3-layer LSTM (hidden 128) · AdamW · CosineLR · 50 epoch · MPS
val MSE 0.00337 수렴 — baseline 대비 30× 개선

Stage 4 — PPO

MlpPolicy · 30,000 step · 128 episodes · Monitor wrapper
+190% reward 향상 (593 → 1,716)

Stage 2 — Cluster

5-feature OF + brightness + density · KMeans k=5
239 프레임 자동 분류 · 5 행동 클래스 분포 산출