2024 부산 해양데이터 해커톤
개발기간: 2024.10 ~ 2024.11
- 양식등대는 2024년 부산 해양데이터 해커톤 본선 진출 및 장려상 수상 작품으로, 해양과 빅데이터의 융합을 기반으로 해양의 디지털 전환과 기후 변화에 대응하는 서비스를 개발하였습니다.
- 저희 등대지기 팀의 출품작은 '내 손 안에 들어오는 양식업 도우미' 로, 양식업을 배우고자 하는 청년 어민들을 대상으로 한 RAG 기반 챗봇 서비스 및 다양한 해양 데이터를 제공하는 웹 서비스입니다.
| 김명석 | 정지윤 | 이승재 | 김민경 |
|---|---|---|---|
| ML/Frontend | ML/DL | Backend | Frontend |
| @mangsgi | @enchantee00 | @Ea3124 | @kim-minkyoung |
| 부산대학교 정보컴퓨터공학부 3학년 | 부산대학교 정보컴퓨터공학부 3학년 | 부산대학교 정보컴퓨터공학부 3학년 | 부산대학교 정보컴퓨터공학부 3학년 |
C:.
│ app.py # Streamlit 메인 앱 파일 (사이드 바 네비게이션 포함)
│ llm.py # LLM 관련 유틸리티 및 처리 함수
│ requirements.txt # 필요한 Python 패키지 목록
│ server.py # 백엔드 서버 실행 스크립트 (Flask API)
│
├─.streamlit
│ config.toml # Streamlit 설정
│ secrets.toml # API 키 및 IP 저장 (e.g., ServiceKey)
│
├─components # page 구성 파일
│ │ home.py # 홈 페이지 (Streamlit 랜딩 페이지)
│ │ chat.py # Chat 페이지 구성 (LLM 응답 등)
│ │ ocean.py # 실시간 수온 데이터 및 예측 시각화
│ │
│ ├─model
│ │ lstm_model_2012_2024.h5 # 학습된 수온 예측 LSTM 모델
│ │ model.py # 수온 예측 모델 로직
│ │
│ └─wiki
│ │ wiki.py # 위키 메인 페이지 (생물 목록 표시)
│ └─ wiki_detail.py # 생물 상세 페이지 (종별 특성 표시)
|
├─data
│ │ daily_average_water_bui.csv # 관측소 별 일평균 부이 수온 데이터 2024.10.06 ~ 2024.11.4
│ │ daily_average_water_temp.csv # 관측소 별 일평균 수온 평균 데이터 2024.10.06 ~ 2024.11.4
│ │ observation_stations.csv # 수온 관측소 정보
│ │ optimal_rearing_temperature.csv # 종별 적정 사육 수온
│ │ question.csv # 챗봇 모델 파인튜닝을 위한 사용자 질문 데이터
│ │ wiki_data.csv # 해양 생물 종 정보 데이터
│ │ yearly_temperature.csv # 2024년 특정 일별 수온 데이터
│ │
│ └─images # Wiki 페이지에 사용되는 이미지 모음
│
└─faiss # FAISS DB
├─etc # 기타 생물 종에 대한 벡터 인덱스
│ *.pkl, *.index
│
├─fish # 어류 관련 벡터 인덱스
│ *.pkl, *.index
│
├─seaweed # 해조류 관련 벡터 인덱스
│ *.pkl, *.index
│
└─shellfish # 패류 관련 벡터 인덱스
*.pkl, *.index
git clone https://github.com/mangsgi/Ocean-Data.git- 파이썬 버전 3.9.21
- CUDA 버전 11.8
pip install -r requirements.txt.streamlit폴더 내secrets.toml파일을 생성한 후 아래와 같이 설정합니다:
# 반드시 KEY는 문자열로 지정
BACKEND_IP="<your-backend-ip>"
ServiceKey="<your-service-key>" # 해양수산부 바다누리 해양정보서비스 API
LOCATION_API_KEY="<your-api-key>" # Google Geolocation API# Flask 서버 실행
python server.py
# 웹 페이지 실행
streamlit run app.py- RAG 모델 경량화 및 성능 향상을 통해 언제 어디서나 사용가능하도록 로컬에 설치가능한 챗봇 구현
- API 제한이 없는 GPS를 통한 제한없는 정보 불러오기
- 현재 Geolocation API 제한으로 인해 위도와 경도를 고정하고 API 사용은 주석 처리한 상태
- 깃허브 Action를 통한 관측소 수온 정보 실시간 업데이트 및 CI/CD 구현
- 현재는 프로젝트 당시를 기준으로 관측소별 데이터가 존재








