|
## 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. |
|
|