한국어 | English

CropDoctor

D8771DDC-42B5-42E6-922B-01C0443DB602

🍀 Introduction

Cropdoctor is a service that diagnosis the disease of your crops and offers solutions that fit your disease.👩🏻‍🌾

📌 System Architecture

MacBook Pro 16_ - 1

📚 TECH STACKS

Frontend Backend Monitoring Database&Storage DevOps AI
























💻 Installation Process

Docker repository clone

git clone --recursive https://github.com/S-V-23-BootCamp-Team-F/docker.git

Set .env in the backend folder

SECRET_KEY = {Django SECRET_KEY}

# AWS S3 connect
AWS_ACCESS_KEY = {AWS_ACCESS_KEY}
AWS_SECRET_KEY = {AWS_SECRET_KEY}
AWS_REGION = {AWS_REGION}

# S3 Storages
S3_BUCKET_NAME = {S3_BUCKET_NAME}

MYSQL_NAME = {MYSQL_NAME}
MYSQL_USER = {MYSQL_USER}
MYSQL_PASSWORD = {MYSQL_PASSWORD}
MYSQL_HOST = {MYSQL_HOST}

Run Docker-compose

docker-compose up —build

🗂 Submodule Directories

FRONTEND
📦frontend
┣ 📂.github
┣ 📂dist
┣ 📂node_modules
┣ 📂public
┣ 📂src
┃ ┣ 📂components
┃ ┃ ┣ 📜Cropchart.tsx
┃ ┃ ┣ 📜DetailModalscreen.tsx
┃ ┃ ┣ 📜Hamnav.tsx
┃ ┃ ┣ 📜Historycard.tsx
┃ ┃ ┣ 📜LoadingPage.tsx
┃ ┃ ┣ 📜LogInPage.tsx
┃ ┃ ┣ 📜Longnav.tsx
┃ ┃ ┣ 📜Navbar.tsx
┃ ┃ ┣ 📜Periodchart.tsx
┃ ┃ ┣ 📜Periodline.tsx
┃ ┃ ┗ 📜SignupPage.tsx
┃ ┣ 📂fonts
┃ ┣ 📂images
┃ ┣ 📂pages
┃ ┃ ┣ 📜AbnomalResultPage.tsx
┃ ┃ ┣ 📜GetStart.tsx
┃ ┃ ┣ 📜HistoryPage.tsx
┃ ┃ ┣ 📜MainPage.tsx
┃ ┃ ┣ 📜NomalResultPage.tsx
┃ ┃ ┗ 📜StasticsPage.tsx
┃ ┣ 📂utils
┃ ┣ 📜App.css
┃ ┣ 📜App.tsx
┃ ┣ 📜Cookie.ts
┃ ┣ 📜index.css
┃ ┣ 📜main.tsx
┃ ┣ 📜media.css
┃ ┗ 📜vite-env.d.ts
┣ 📜.dockerignore
┣ 📜.git
┣ 📜.gitignore
┣ 📜Dockerfile
┣ 📜README.md
┣ 📜index.html
┣ 📜index.tsx
┣ 📜package-lock.json
┣ 📜package.json
┣ 📜postcss.config.cjs
┣ 📜tailwind.config.cjs
┣ 📜tsconfig.json
┣ 📜tsconfig.node.json
┗ 📜vite.config.ts
BACKEND
📦backend
┣ 📂.github
┣ 📂backend
┃ ┣ 📜__init__.py
┃ ┣ 📜asgi.py
┃ ┣ 📜celery.py
┃ ┣ 📜settings.py
┃ ┣ 📜urls.py
┃ ┗ 📜wsgi.py
┣ 📂members
┃ ┣ 📂migrations
┃ ┣ 📜__init__.py
┃ ┣ 📜admin.py
┃ ┣ 📜apps.py
┃ ┣ 📜models.py
┃ ┣ 📜serializer.py
┃ ┣ 📜tests.py
┃ ┣ 📜urls.py
┃ ┗ 📜views.py
┣ 📂plants
┃ ┣ 📂inference
┃ ┃ ┣ 📂models
┃ ┃ ┃ ┣ 📂hub
┃ ┃ ┃ ┣ 📂segment
┃ ┃ ┃ ┣ 📜__init__.py
┃ ┃ ┃ ┣ 📜common.py
┃ ┃ ┃ ┣ 📜experimental.py
┃ ┃ ┃ ┣ 📜tf.py
┃ ┃ ┃ ┣ 📜yolo.py
┃ ┃ ┃ ┣ 📜yolov5l.yaml
┃ ┃ ┃ ┣ 📜yolov5m.yaml
┃ ┃ ┃ ┣ 📜yolov5n.yaml
┃ ┃ ┃ ┣ 📜yolov5s.yaml
┃ ┃ ┃ ┗ 📜yolov5x.yaml
┃ ┃ ┣ 📂utils
┃ ┃ ┃ ┣ 📜__init__.py
┃ ┃ ┃ ┣ 📜activations.py
┃ ┃ ┃ ┣ 📜augmentations.py
┃ ┃ ┃ ┣ 📜autoanchor.py
┃ ┃ ┃ ┣ 📜autobatch.py
┃ ┃ ┃ ┣ 📜callbacks.py
┃ ┃ ┃ ┣ 📜dataloaders.py
┃ ┃ ┃ ┣ 📜downloads.py
┃ ┃ ┃ ┣ 📜general.py
┃ ┃ ┃ ┣ 📜loss.py
┃ ┃ ┃ ┣ 📜metrics.py
┃ ┃ ┃ ┣ 📜plots.py
┃ ┃ ┃ ┣ 📜torch_utils.py
┃ ┃ ┃ ┗ 📜triton.py
┃ ┃ ┣ 📜cucumber.pt
┃ ┃ ┣ 📜detect.py
┃ ┃ ┣ 📜export.py
┃ ┃ ┣ 📜grape.pt
┃ ┃ ┣ 📜paprika.pt
┃ ┃ ┣ 📜pepper.pt
┃ ┃ ┣ 📜strawberry.pt
┃ ┃ ┗ 📜tomato.pt
┃ ┣ 📂migrations
┃ ┣ 📜__init__.py
┃ ┣ 📜admin.py
┃ ┣ 📜apps.py
┃ ┣ 📜models.py
┃ ┣ 📜serializer.py
┃ ┣ 📜storagess.py
┃ ┣ 📜tasks.py
┃ ┣ 📜tests.py
┃ ┣ 📜urls.py
┃ ┗ 📜views.py
┣ 📂static
┣ 📜.env
┣ 📜.git
┣ 📜.gitignore
┣ 📜Dockerfile
┣ 📜README.md
┣ 📜manage.py
┗ 📜requirements.txt

Flowchart

flowchart_en drawio

🔍 Features

SignUp / Login page

  • This is a SignUp / Login page using JWT token.


Diagnostic/Diagnostic Results Page

  • It is a page that selects an image of a disease crop and diagnoses it with AI, and if it is a disease crop, it provides causes and solutions together.

history / history delete

  • With a function that is only available when logging in, you can collect crops that you have diagnosed by category.
  • You can check the detailed information of the selected crop and delete it.

Staticstics Page

2A005C2A-E092-4315-8DE9-7F42D3C72641

  • Statistics are shown based on Cropdoctor diagnostic data.
  • Statistics on the number of diseases by crop
    • It provides information on which diseases each crop has a lot in the form of a bar chart.
  • Monthly Disease Count Statistics
    • The crops selected in the category are provided in the form of a line graph of how the disease flows per month.

Responsive Web Pages

반응형

AI

AI used YoloV5, and the Precision-Confidence Curve and learning process and performance are as follows. 그림1

results (1)

The following photos are actually analyzed by AI. Group 101111

🖥️ Moniterings


Kibana Dashboard


Grafana Dashboard & Slack Alert


If the storage capacity exceeds 85%, Grafana sends an alarm to Slack.


Swagger

The use of Swagger for API documentation for Frontend and Backend communication. 스크린샷 2023-02-01 오후 6 03 44 (1)

👥 Our Team

Pictures
Name 강용민 이지윤 백동열 김유라 권찬영 황현성 이규현
Position Backend
DevOps
Frontend
Backend
DevOps
Frontend
Backend
Frontend
Backend
DevOps
AI
Backend
DevOps
Frontend
GitHub