https://github.com/owalid/leaf-valley
[ 🤖🌿 COMPUTER VISION ] Contain AI models and plants images processing. The programs aim to recognize from leaf pictures, the species and the disease if present.
https://github.com/owalid/leaf-valley
cnn-classification cnn-keras computer-vision kubernetes machine-learning nuxt segmentation
Last synced: 6 months ago
JSON representation
[ 🤖🌿 COMPUTER VISION ] Contain AI models and plants images processing. The programs aim to recognize from leaf pictures, the species and the disease if present.
- Host: GitHub
- URL: https://github.com/owalid/leaf-valley
- Owner: owalid
- Created: 2022-02-24T09:46:58.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-01-30T21:48:40.000Z (over 3 years ago)
- Last Synced: 2023-04-08T10:24:38.167Z (about 3 years ago)
- Topics: cnn-classification, cnn-keras, computer-vision, kubernetes, machine-learning, nuxt, segmentation
- Language: Jupyter Notebook
- Homepage: https://leaf-valley.com
- Size: 39.1 MB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://wakatime.com/badge/user/57a746b4-0744-4dc9-a0f3-61d9ea529bde/project/67735737-0382-471e-9fe6-ee5fa60f7536)
## [Report of our project](report.md)
## Directories
```
analysis/ -> data analysis in jupiter notebook
app/ -> web part
api/
client/
data/ -> Data sources
augmentation/ -> Data augmented
no_augmentation/ -> Data not augmented
models_saved/ -> Models and weights saved
microservices/
econome/ -> Micro service which manage api instance (only for production)
preprocess/ -> scripts for preprocessing
process/ -> scripts for training (machine learning and deep learning)
utilities/ -> global utilities functions
```
## Setup and installation
This script installs the dependencies for the project and the [dataset](https://data.mendeley.com/datasets/tywbtsjrjv/1).
```
./setup.sh
```
## Preprocess dataset
This program allows you to preprocess the images, extract data and make a dataset in h5 format.
```
python preprocess/main.py -h
usage: python preprocess/main.py [-h] [-a] [-rmbg] [-src SRC_DIRECTORY] [-wi] [-crop] [-nor] [-nortype NORMALIZE_TYPE] [-c CLASSIFICATION] [-n NUMBER_IMG] [-rt RESULT_TYPE] [-dst DESTINATION] [-f FEATURES] [-s SIZE] [-v]
optional arguments:
-h, --help show this help message and exit
-a, --augmented Use directory augmented
-rmbg, --remove-bg Remove background before preprocess
-src SRC_DIRECTORY, --src-directory SRC_DIRECTORY
Directory source who can find images. default (data/{augmented})
-wi, --write-img Write images (png) in the new directory
-crop, --crop-img Remove padding around leaf
-nor, --normalize-img
Normalize images, you can specify the normalization type with the option -nortype
-nortype NORMALIZE_TYPE, --normalize-type NORMALIZE_TYPE
Normalize images features with cv.normalize (Default: NORM_MINMAX)
Types: https://vovkos.github.io/doxyrest-showcase/opencv/sphinx_rtd_theme/enum_cv_NormTypes.html
-c CLASSIFICATION, --classification CLASSIFICATION
Classification type: HEALTHY_NOT_HEALTHY, ONLY_HEALTHY, NOT_HEALTHY, ALL (default)
-n NUMBER_IMG, --number-img NUMBER_IMG
Number of images to use per class to select maximum of all classes use -1. (default 1000)
-rt RESULT_TYPE, --result-type RESULT_TYPE
Type of result image for DP: GRAY, GABOR, CANNY, RGB. (default: GRAY)
-dst DESTINATION, --destination DESTINATION
Path to save the data. (default: data/preprocess)
-f FEATURES, --features FEATURES
Features to extract separate by ","
Example: -f=graycoprops,lpb_histogram,hue_moment
List of features:
- For DP: rgb,gray,canny,gabor,lab,hsv
- For ML: graycoprops,lpb_histogram,hue_moment,haralick,histogram_hsv,histogram_lab,pyfeats
-s SIZE, --size SIZE Size of images. (default 256x256)
-v, --verbose Verbose
```
## Image augmentation
This program allows you to augment the images, and output this augmented images in the new directory.
```
python preprocess/image_augmentation.py -h
usage: python preprocess/image_augmentation.py [-h] [-src SRC_DIRECTORY] [-dst DST_DIRECTORY] [-ncls NUMBER_IMG_BY_CLASS] [-naug NUMBER_IMG_AUGMENTATION] [-dup] [-v]
optional arguments:
-h, --help show this help message and exit
-src SRC_DIRECTORY, --src-directory SRC_DIRECTORY
Source of the directory where the images to augment are located. default (data/no_augmentation)
-dst DST_DIRECTORY, --dst-directory DST_DIRECTORY
Source of the directory where the images to augment will be stored. default (data/tmp)
-ncls NUMBER_IMG_BY_CLASS, --number-img-by-class NUMBER_IMG_BY_CLASS
Number of images to use per class to select maximum of all classes use -1. (default -1)
-naug NUMBER_IMG_AUGMENTATION, --number-img-augmentation NUMBER_IMG_AUGMENTATION
Total number of augmented images, including original images. (default 3000)
-dup, --remove-duplicate
Remove duplicate images created by the augmentaion process
-v, --verbose Verbose
```
## Deep Learning process
This program allows to train a deep learning model with the data preprocessed
```
python process/deep_learning/main.py -h
usage: process/deep_learning/main.py [-h] [-p PATH_DATASET] [-lt] [-es] [-b BATCH_SIZE] [-lr LEARNING_RATE] [-opt OPTIMIZER] [-e EPOCHS] [-m MODELS] [-s] [-dst-l DEST_LOGS] [-dst-m DEST_MODELS] [-v]
optional arguments:
-h, --help show this help message and exit
-p PATH_DATASET, --path-dataset PATH_DATASET
Path of your dataset (h5 file)
-lt, --launch-tensorboard
Launch tensorboard after fitting
-es, --early-stop Early stop after fitting
-b BATCH_SIZE, --batch-size BATCH_SIZE
Batch size
-lr LEARNING_RATE, --learning-rate LEARNING_RATE
Learning rate (default 0.001)
-opt OPTIMIZER, --optimizer OPTIMIZER
Optimizer (default adam). Available: dict_keys(['ADAM', 'RMSPROP', 'SGD', 'ADADELTA', 'NADAM'])
-e EPOCHS, --epochs EPOCHS
Epoch
-m MODELS, --models MODELS
Select model(s), if grid search is enabled, you can select multiple models separate by ",". example -m=vgg19,resnet50. By default is select all models.
Models availables:
VGG16,VGG16_PRETRAINED,VGG19,VGG19_PRETRAINED,RESNET50,RESNET50_PRETRAINED,CONVNEXTTINY,CONVNEXTTINY_PRETRAINED,CONVNEXTSMALL,CONVNEXTSMALL_PRETRAINED,CONVNEXTBASE,CONVNEXTBASE_PRETRAINED,CONVNEXTLARGE,CONVNEXTLARGE_PRETRAINED,RESNET50V2,RESNET50V2_PRETRAINED,INCEPTIONRESNETV2,INCEPTIONRESNETV2_PRETRAINED,INCEPTIONV3,INCEPTIONV3_PRETRAINED,EFFICIENTNETB0,EFFICIENTNETB0_PRETRAINED,EFFICIENTNETB7,EFFICIENTNETB7_PRETRAINED,XCEPTION,XCEPTION_PRETRAINED,CLASSIC_CNN,ALEXNET,LAB_PROCESS,LAB_INCEPTIONV3_PROCESS,HSV_PROCESS,GOOGLE/VIT-BASE-PATCH16,GOOGLE/VIT-BASE-PATCH32,GOOGLE/VIT-LARGE-PATCH16,GOOGLE/VIT-LARGE-PATCH32,FACEBOOK/CONVNEXT-BASE,FACEBOOK/CONVNEXT-LARGE,FACEBOOK/CONVNEXT-XLARGE.
-s, --save-model Save model
-dst-l DEST_LOGS, --dest-logs DEST_LOGS
Destination for tensorboard logs. (default logs/tensorboard)
-dst-m DEST_MODELS, --dest-models DEST_MODELS
Destination for model if save model is enabled
-v, --verbose Verbose
```
Deep learning models availables:
VGG
- VGG16
- VGG19
ResNet
- RESNET50
Convnext
- CONVNEXTTINY
- CONVNEXTSMALL
- CONVNEXTBASE
- CONVNEXTLARGE
ResNet & Inception & Xception
- RESNET50V2
- INCEPTIONRESNETV2
- INCEPTIONV3
- XCEPTION
EfficientNet
- EFFICIENTNETB0
- EFFICIENTNETB7
Transformers
- GOOGLE/VIT-BASE-PATCH16
- GOOGLE/VIT-BASE-PATCH32
- GOOGLE/VIT-LARGE-PATCH16
- GOOGLE/VIT-LARGE-PATCH32
- FACEBOOK/CONVNEXT-BASE
- FACEBOOK/CONVNEXT-LARGE
- FACEBOOK/CONVNEXT-XLARGE
Homemade models
- CLASSIC_CNN
- ALEXNET
- LAB_PROCESS
- LAB_INCEPTIONV3_PROCESS
- HSV_PROCESS
## ML CLassification process
This program allows you to train a ML classification models with the data preprocessed
```
python process/ml_classification/main.py -h
usage: main.py [-h] [-cs CLASSIFICATION_STEP] -f FILENAME [-dst PROCESS_OUTPUT] [-sd] [-th THRESHOLD] [-nortype NORMALIZE_TYPE] [-cm CLASSIFICATION_MODELS] [-ct CLASSIFICATION_TYPES] [-sm]
[-dms DEST_MODELS_SAVED] [-v]
options:
-h, --help show this help message and exit
-cs CLASSIFICATION_STEP, --classification-step CLASSIFICATION_STEP
Classification step: LOAD_DATA, FIT_MODEL, PREDICT_MODEL, FIT_PREDICT_MODEL, ALL (default)
-f FILENAME, --filename FILENAME
path and file name of the input data
-dst PROCESS_OUTPUT, --process-output PROCESS_OUTPUT
Path to save or to get the preprocessed data, plots and reports. default: data/process/ml_classification
-sd, --save-data Save options_datasets json file and converted data from h5 format to DataFrame one with flag train/test flag, default True
-th THRESHOLD, --threshold THRESHOLD
Threshold used for the filter method to select features
-nortype NORMALIZE_TYPE, --normalize-type NORMALIZE_TYPE
Normalize data (NORM_STANDARSCALER or NORM_MINMAX normalization) (Default: NORM_MINMAX)
-cm CLASSIFICATION_MODELS, --classification-models CLASSIFICATION_MODELS
Classification models: XGC, ETC, RFC, ALL (default). Example -cm=RFC,ETC
-ct CLASSIFICATION_TYPES, --classification-types CLASSIFICATION_TYPES
Classification type: PLANTS, HEALTHY, PLANTS_DESEASES classes, ALL (default)
-sm, --save-model Save model, default True
-dms DEST_MODELS_SAVED, --dest-models-saved DEST_MODELS_SAVED
Path to save models. default: data/models_saved
-v, --verbose Verbose
```
Machine learning models availables:
- XgBoost
- Extra tree classifier
- Random forest
# Web part



## With docker
```
cd app
docker compose up
```
## Manualy
### Start api
```
cd app/api
pip install -r requirements.txt
python main.py
```
### Start client
```
cd app/client/
yarn
yarn dev
```