플랜트 닥터(Plant Doctor): AI 식물 진단을 실제 식물 관리로 연결하기
요약
Plant Doctor는 AI를 활용하여 사용자가 식물 사진을 업로드하고 진단 및 관리 추천을 받을 수 있는 애플리케이션입니다. 단순한 텍스트 생성을 넘어, 실제 행동(잎사귀 검사, 토양 습도 확인 등)으로 이어지도록 설계되었습니다. React와 FastAPI 기반의 이 앱은 Gemini Vision API를 사용하여 식물 종류 식별, 증상 분석, 실용적인 관리 추천을 제공하며 개인 일지를 통해 추적 관리가 가능합니다.
핵심 포인트
- AI 진단을 실제 행동과 연결하는 것이 핵심 목표입니다.
- Gemini Vision API와 FastAPI 백엔드를 활용하여 구현되었습니다.
- 개인 식물 일지 기능을 통해 지속적인 관리가 가능합니다.
- 초보자도 쉽게 사용할 수 있도록 설계된 실용적 도구입니다.
이것은 Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass에 제출하는 작품입니다.
제가 만든 것 (What I Built)
저는 Plant Doctor라는 AI 기반의 식물 관리 도우미를 만들었습니다. 이 앱은 사용자가 사진을 찍어 자신의 식물에게 무슨 문제가 발생했을지 이해하는 데 도움을 줍니다.
이 프로젝트의 아이디어는 간단합니다. AI를 단순히 텍스트를 생성하거나 질문에 답하는 용도로 사용하는 대신, 사람들이 실제 세상에서 행동으로 옮길 수 있도록 사용하는 것이 어떨까 하는 것입니다.
Plant Doctor를 사용하면 사용자가 식물 사진을 업로드하고 다음과 같은 내용을 포함한 평가(assessment)를 받을 수 있습니다:
🌿 가능한 경우의 식물 종류 식별 (Plant identification)
🔍 육안으로 보이는 증상 및 가능한 문제점 (Visible symptoms and possible issues)
🪴 실용적인 관리 추천 사항 (Practical care recommendations)
📊 모델이 생성한 신뢰도 추정치 (A model-generated confidence estimate)
📅 다시 확인해야 할 식물 재검사 시기 (A suggested time to check the plant again)
사용자는 계정을 만들고 개인 식물 일지(personal plant journal)를 통해 이전 평가들을 다시 확인할 수 있습니다.
Plant Doctor는 초보자, 실내 식물 소유자, 그리고 사전에 식물 질병에 대해 이해할 필요 없이 자신의 식물을 관리하기 위한 시작점을 원하는 모든 사람을 위해 설계되었습니다.
이 목표는 숙련된 원예사나 식물학자를 대체하는 것이 아닙니다. 사진만으로는 식물의 증상에 대한 정확한 원인을 항상 밝혀낼 수 없기 때문에, 이 애플리케이션은 모든 AI 제안을 확정 진단으로 제시하기보다는 불확실성을 전달해야 합니다.
가장 중요한 것은, 평가 결과가 화면 밖의 무언가로 이어져야 한다는 것입니다. 즉, 잎사귀를 검사하고, 토양 습도를 확인하며, 식물 관리를 개선하고, 식물이 어떻게 반응하는지 관찰하는 등의 행동으로 이어져야 합니다.
데모 (Demo)
🌱 라이브 애플리케이션: https://plant-doctor-1-g8ic.onrender.com
계정을 만들고, 식물 사진을 업로드하고, 평가를 확인하며, 저장된 진단을 다시 확인할 수 있습니다.
이 애플리케이션은 Render에 배포되었으며, FastAPI 백엔드와 MongoDB Atlas 데이터베이스를 사용합니다.
코드 (Code)
💻 GitHub 리포지토리: https://github.com/meetrathod0729-hub/Plant-Doctor
이 리포지토리에는 프론트엔드, 백엔드, AI 제공업체 통합(AI provider integrations), 그리고 지원 평가 코드가 포함되어 있습니다.
구현을 자유롭게 탐색하고 제안이나 개선 사항을 공유해 주세요!
구축 과정 (How I Built It)
저는 독립적인 AI 모델 데모에 그치지 않고 완전한 애플리케이션을 구축하고 싶었습니다.
기술 스택:
프론트엔드: React, Vite, Tailwind CSS
백엔드: Python 및 FastAPI
AI: 배포된 애플리케이션용 Gemini Vision API
로컬 AI 탐색: Qwen2.5-VL을 사용한 Ollama
데이터베이스: MongoDB Atlas
배포: Render
진단 파이프라인은 다음과 같이 작동합니다:
-
사용자가 식물 이미지를 업로드합니다.
-
백엔드가 업로드된 파일을 검증하고, 방향을 수정하며, 크기를 조정합니다.
-
이미지가 설정된 비전 모델로 전송됩니다.
-
모델은 관찰 내용, 가능한 문제점, 권장 사항 및 제안된 후속 조치 간격이 포함된 구조화된 평가를 반환합니다.
-
백엔드가 응답을 검증하고 인증된 사용자에게 진단을 저장합니다.
-
프론트엔드는 평가를 표시하고 이를 식물 일지에 추가합니다.
한 가지 중요한 설계 고려 사항은 불확실성을 처리하는 것이었습니다. 갈색 반점, 노랗게 변하는 잎 등 눈에 보이는 증상은 여러 원인을 가질 수 있습니다. 따라서 Plant Doctor는 관찰 가능한 증상과 가능한 설명을 구별하고, 모델이 생성한 신뢰도 추정치를 보정된 확률로 제시하는 것을 피해야 합니다.
배포를 위해 Gemini Vision을 사용했기 때문에 방문자가 로컬에 모델을 설치할 필요 없이 애플리케이션을 실행할 수 있었습니다. 또한 Ollama를 통해 Qwen2.5-VL을 로컬에서 실행해 보았는데, 이는 로컬 비전 추론으로 실험할 방법을 제공했습니다.
오픈 혁신이 중요한 이유 (Why Does Open Innovation Matter?)
오픈 혁신은 개발자들에게 모든 구성 요소를 처음부터 만들 필요 없이 기존 작업에 대해 실험하고, 배우고, 구축할 기회를 주기 때문에 중요합니다.
Plant Doctor를 개발하는 동안 저는 Ollama와 Qwen2.5-VL을 사용한 로컬 추론을 탐색했습니다. 비전 모델을 로컬에서 실행해 본 것은 이미지 입력, 하드웨어 제약 조건, 모델 응답 및 구조화된 출력으로 작업할 때의 실제적인 어려움을 이해하는 데 도움이 되었습니다.
현재 배포된 애플리케이션은 Gemini Vision을 사용하기 때문에, 프로덕션 추론 파이프라인 전체를 완전히 오픈 웨이트(open-weight)라고 설명할 수는 없습니다. 하지만 오픈 웨이트 모델로 실험해 본 경험은 제가 조사하고 비교할 수 있는 또 다른 접근 방식을 제공했습니다.
이러한 유연성은 중요합니다. 개발자들은 로컬 모델을 탐색하고, 다양한 접근 방식을 비교하며, 리소스 요구 사항에 대해 학습하고, 자신들의 사용 사례에 가장 적합한 솔루션을 결정할 수 있습니다.
오픈 혁신(Open innovation)은 또한 사람들이 구현 내용을 검사하고, 개선 사항을 공유하며, 서로에게서 배울 수 있도록 더 쉽게 만듭니다. Plant Doctor와 같은 프로젝트는 고립된 데모가 아니라 추가적인 실험의 출발점이 될 수 있습니다.
나의 에이전트 세션(My Agent Session)
이번 제출물에는 DevRelay 에이전트 세션을 포함하지 않았습니다. 만약 녹화하게 되면 여기에 추가하겠습니다.
수상 부문(Prize Categories)
주요 과제: Hacktoberfest 오픈 소스 AI 챌린지 주차 1 — 풀밭에 발을 디디기(Touch Grass).
저는 Plant Doctor를, AI를 사용하여 실질적이고 실제 세계의 활동, 즉 식물 돌보기 활동을 장려하는 프로젝트로 제출합니다.
마지막 생각 🌱
Plant Doctor를 구축하면서, AI 애플리케이션이 유용하기 위해 누군가 모델과 계속 채팅하고 있을 필요는 없다는 것을 배웠습니다.
때로는 좋은 AI 상호작용이 누군가가 휴대폰을 내려놓고, 식물 쪽으로 걸어가 잎사귀를 살펴보고, 성장시키는 데 작은 도움을 주는 것으로 끝나는 것이어야 합니다.
그것이 제가 Plant Doctor로 만들고자 했던 경험입니다.
데모 체험: https://plant-doctor-1-g8ic.onrender.com
코드 탐색: https://github.com/meetrathod0729-hub/Plant-Doctor
식물 주인들에게 이 프로젝트를 더 유용하게 만들거나 개선할 수 있는 기능에 대해 듣고 싶습니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기