| ## CVRP: A Rice Image Dataset with High-Quality Annotations for Image Segmentation and Plant Phenomics Research | |
| ##### Multi-cultivar and multi-view rice plant image dataset (CVRP) consists of 2,303 field images with their annotated masks and 123 indoor images of individual panicles. | |
| ### Annotation Workflow | |
| ##### To optimize the process of annotation, we combine deep learning methods with manual curation. The workflow comprises two stages: manual annotation and model-based prediction followed by manual curation. | |
|  | |
| ### Getting Started | |
| ##### Recommend python 3.7, CUDA v11.3 and Pytorch 1.10.0. | |
| ***Clone*** | |
| ```bash | |
| pip install huggingface_hub | |
| huggingface-cli download CVRPDataset/Model --local-dir /your/path/to/save/Model | |
| cd Model | |
| git clone https://github.com/open-mmlab/mmsegmentation.git -b v1.1.2 mmsegmentation | |
| pip install -U openmim | |
| mim install mmengine | |
| mim install mmcv==2.0.0 | |
| cd mmsegmentation | |
| pip install -v -e . | |
| pip install "mmdet>=3.0.0rc4" | |
| ``` | |
| ***UI*** | |
| ##### We create a web user interface for annotation based on gradio. | |
| ```bash | |
| pip install gradio | |
| python app.py | |
| ``` | |
| ##### The UI : | |
| 1. Users can upload an image or use a sample image at β .Then, they can select one of four models at β‘. We recommend **Mask2Former**. After that, click *Run*. | |
| 2. We provide two forms of segmentation results for download at β’. | |
|  | |
| ***Train and Test*** | |
| 1. ***Creating a Dataset*** | |
| Here is an example if you want to make own dataset. | |
| β Directory structure of the dataset: | |
| <pre> | |
| π CVRPDataset/ | |
| ββπ images/ | |
| ββπ labelme_jsons/ | |
| </pre> | |
| β‘ Convert labelme files to mask: | |
| ```bash | |
| python run/labelme2mask.py | |
| ``` | |
| now, the structure looks like: | |
| <pre> | |
| π CVRPDataset/ | |
| ββπ img_dir/ | |
| ββπ ann_dir/ | |
| </pre> | |
| β’ Split the training set and test set. | |
| ```bash | |
| python run/split_dataset.py | |
| ``` | |
| now, the structure looks like: | |
| <pre> | |
| π CVRPDataset/ | |
| ββπ img_dir/ | |
| β ββπ train/ | |
| β ββπ val/ | |
| ββπ ann_dir/ | |
| ββπ train/ | |
| ββπ val/ | |
| </pre> | |
| If you have annotations in RGB format, you need | |
| ```bash | |
| python run/transform.py | |
| ``` | |
| and then follow split the train set and evaluation set according to the format in β’. | |
| You can also download our training set and validation set [here](http://61.155.111.202:18080/cvrp). | |
| 2. ***Dataset Configs*** | |
| ```bash | |
| cd mmsegmentation/mmseg/datasets | |
| rm -rf __init__.py # delete original file | |
| wget https://huggingface.co/CVRPDataset/Model/resolve/main/dataset_configs/CVRP.py | |
| wget https://huggingface.co/CVRPDataset/Model/resolve/main/dataset_configs/__init__.py | |
| cd ../../configs/_base_/datasets | |
| wget https://huggingface.co/CVRPDataset/Model/resolve/main/dataset_configs/CVRP_pipeline.py | |
| ``` | |
| β If you want to register your own dataset, import and register datasets in `mmseg/datasets/__init__.py` | |
| ```python | |
| from .CVRP import CVRPDataset | |
| ``` | |
| Add, | |
| ```python | |
| # other datasets | |
| __all__ = ['CVRPDataset'] | |
| ``` | |
| β‘ Register dataset class in `mmseg/datasets/CVRP.py' | |
| ```python | |
| class CVRPDataset(BaseSegDataset): | |
| METAINFO = { | |
| 'classes':['background','panicle'], | |
| 'palette':[[127,127,127],[200,0,0]] | |
| } | |
| ``` | |
| β’ Modify pipeline of data process in `config/_base_/datasets/CVRP_pipeline.py` | |
| ```python | |
| dataset_type = 'CVRPDataset' | |
| data_root = 'CVRPDataset/' | |
| ``` | |
| you'll need to specify the paths for the train and evalution data directories. | |
| ```python | |
| # train_dataloader: | |
| data_prefix=dict(img_path='img_dir/train', seg_map_path='ann_dir/train') | |
| # val_dataloader: | |
| data_prefix=dict(img_path='img_dir/val', seg_map_path='ann_dir/val') | |
| ``` | |
| 3. ***Model Configs*** | |
| You can generate model config files using *run_configs.py* | |
| ```bash | |
| cd mmsegmentation | |
| mkdir 'work_dirs' 'CVRP_configs' 'outputs' 'CVRPDataset' | |
| python ../run/run_configs.py --model_name deeplabv3plus -m configs/deeplabv3plus/deeplabv3plus_r101-d8_4xb4-160k_ade20k-512x512.py -d configs/_base_/datasets/CVRP_pipeline.py -c 2 -w work_dirs -s CVRP_configs | |
| python ../run/run_configs.py --model_name knet -m configs/knet/knet-s3_swin-l_upernet_8xb2-adamw-80k_ade20k-512x512.py -d configs/_base_/datasets/CVRP_pipeline.py -c 2 -w work_dirs -s CVRP_configs | |
| python ../run/run_configs.py --model_name mask2former -m configs/mask2former/mask2former_swin-l-in22k-384x384-pre_8xb2-160k_ade20k-640x640.py -d configs/_base_/datasets/CVRP_pipeline.py -c 2 -w work_dirs -s CVRP_configs | |
| python ../run/run_configs.py --model_name segformer -m configs/segformer/segformer_mit-b5_8xb2-160k_ade20k-512x512.py -d configs/_base_/datasets/CVRP_pipeline.py -c 2 -w work_dirs -s CVRP_configs | |
| ``` | |
| Also, you can download model config files [here](https://huggingface.co/CVRPDataset/Model/tree/main/model_configs). | |
| ```bash | |
| cd CVRP_configs | |
| wget https://huggingface.co/CVRPDataset/Model/resolve/main/model_configs/CVRP_mask2former.py | |
| ``` | |
| 4. ***Train*** | |
| ```bash | |
| cd mmsegmentation | |
| python tools/train.py CVRP_configs/CVRP_mask2former.py | |
| ``` | |
| Also, you can download checkpoint [here](https://huggingface.co/CVRPDataset/Model/tree/main/checkpoint). | |
| ```bash | |
| cd work_dirs | |
| mkdir CVRP_mask2former | |
| cd CVRP_mask2former | |
| wget https://huggingface.co/CVRPDataset/Model/resolve/main/checkpoint/Mask2Former.pth | |
| ``` | |
| 5. ***Test*** | |
| ```bash | |
| python ../run/test.py -d CVRPDataset/val -m CVRP_configs/CVRP_mask2former.py -pth work_dirs/CVRP_mask2former/Mask2Former.pth -o outputs/CVRP_mask2former | |
| ``` | |
| ### LabelMe | |
| ##### If you need to manually adjust the annotation, you can use LabelMe. | |
| ```bash | |
| python run/mask2json.py | |
| pip install labelme==3.16.7 | |
| labelme | |
| ``` | |
| ```bash | |
| python run/json2png.py | |
| ``` | |
| ### Data and Code Availability | |
| The CVRP dataset and accompanying codes are publicly available from Hugging Face at https://huggingface.co/datasets/CVRPDataset/CVRP & https://huggingface.co/CVRPDataset/Model, | |
| and Bioinformatics service in Nanjing Agricultural University at http://bic.njau.edu.cn/CVRP.html. | |
| ### Acknowledgements | |
| We thank Mr.Zhitao Zhu, Dr. Weijie Tang, and Dr. Yunhui Zhang for their technical support. | |