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

No packages published

Contributors 2

  •  
  •