Skip to content

JiksGit/TomatoSpring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍅 Tomato Disease Classification Web Service

AI 모델을 활용하여 토마토 잎의 질병을 자동 분류하고 정보를 제공하는 Spring 기반 웹서비스


📘 프로젝트 개요

TomatoSpring은 CNN 기반 인공지능 모델을 활용해
토마토 잎의 이미지를 분석하고, 질병 유형 및 해결 방안을 사용자에게 제공합니다.
또한 커뮤니티 기능을 통해 사용자 간 정보 공유가 가능하며,
Docker 기반으로 AWS EC2에 배포된 AI + Spring Boot 통합 서비스입니다.

🎯 목표: 이미지 분석 AI 모델을 실서비스 환경에 통합하고,
사용자가 농작물 질병을 빠르게 진단·대응할 수 있도록 지원하는 플랫폼 구현


⚙️ 기술 스택

🧩 Backend

Java Spring Boot Spring Security JWT MyBatis

🧠 AI Model

Python PyTorch DenseNet161

Kaggle 토마토 질병 이미지 데이터셋을 활용하여 DenseNet161 모델로 전이 학습 (정확도 98%)
Flask REST API를 통해 Spring 서버와 AI 모델을 연동하여 결과 반환

☁️ Infra & DevOps

Docker AWS MySQL Swagger Kakao Map API


🧩 주요 기능

기능 설명
🧠 AI 질병 분석 사용자가 업로드한 잎 이미지를 DenseNet161 모델로 분석하여 질병 유형 및 해결 방안 제시
👥 회원가입 / 로그인 JWT 기반 인증 구조로 세션 부하를 줄이고 보안 강화
💬 게시판 및 댓글 기능 사용자 간 정보 공유를 위한 커뮤니티 구현
🗺️ 주변 마트 검색 Kakao Map API를 통한 주변 농협 마트 검색 기능
⚙️ Swagger 문서화 백엔드 API 명세 자동화로 유지보수성 향상
🚀 Docker + AWS 배포 Docker 컨테이너로 EC2에 배포하여 안정적인 운영 환경 구성

🧾 시스템 구조

  • Spring Boot: 회원, 게시판, 인증, 요청 처리
  • Flask API: 이미지 업로드 → AI 예측 결과 반환
  • AWS EC2 + Docker: 웹·AI 서버 컨테이너화 및 자동 배포
  • MySQL: 사용자 및 질병 데이터 관리

⚡ 트러블슈팅 & 개선

  • 문제: JWT 인증 구조에서 Access Token 만료 시 재인증이 정상적으로 동작하지 않음
    해결: Refresh Token을 Redis에 저장하여 서버에서 유효성 검증 후
    새로운 Access Token을 발급하도록 구조 개선.
    클라이언트 측에서는 Access Token 만료 시 자동 갱신 로직을 추가해
    인증 관련 예외 발생 빈도를 줄였습니다.

  • 문제: Docker 컨테이너 환경에서 Flask(AI 서버)와 Spring Boot 간 통신 오류 발생
    해결: 컨테이너 간 네트워크를 bridge로 통합하고,
    Flask API를 내부 호스트네임(flask:5000)으로 호출하도록 수정.
    Docker Compose를 이용해 Spring-DB-AI 서버 간 통합 배포 구조를 완성했습니다.

✅ 결과: JWT 인증 과정의 신뢰성과 사용자 경험이 개선되었으며,
Docker 기반 컨테이너 환경에서도 Flask ↔ Spring 간 안정적인 통신이 가능해졌습니다.


🧠 배운 점

  • AI 모델을 Flask REST API로 분리해 Spring과 연동하는 구조 이해
  • JWT 인증, 트랜잭션 처리, Docker 배포 자동화 경험
  • 실시간 위치 기반 API(Kakao Map) 및 클라우드 배포의 연계성 학습
  • Spring + AI + Cloud를 연결한 엔드투엔드 백엔드 구조 경험

📫 Contact

📧 Email: yanghyunjik99@gmail.com
🌐 Notion Portfolio: yanghyunjik.notion.site


🍅 TomatoSpring — AI로 농작물 질병을 빠르게 진단하고,
사용자와 정보를 공유하는 스마트 농업 플랫폼

About

토마토 질병 분류 AI 프로젝트 Spring 백엔드 개발

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors