Verion1.0~3.0 Author: ZhaoY
Version | v3.0 20210605 |
---|---|
编程语言 | Python |
Cuda版本 | 10.0 |
库 | requirements |
网络名称 | 原始文章 |
---|---|
|
$U^2$-Net: Going Deeper with Nested U-Structure for Salient Object Detection |
网络代码 |
---|
U2-Net: Going Deeper with Nested U-Structure for Salient Object Detection |
分割网络排行 |
Semantic Segmentation Semantic Segmentation on Cityscapes val |
代码流程图
st=>start: start
rs=>operation: utils/rename_seg_pic
ps=>operation: utils/preprocessSeg
tr=>operation: segTrain
ts=>operation: segTest
vl=>operation: plot_heatmap and visualizeSeg
rc=>operation: utils/rename_clf_pic
pc=>operation: utils/preprocessClf
ic=>operation: infer or infer_multi_process
rd=>operation: Radiomics/exact_radiomics
e=>end: end
st->rs->ps->tr->ts->vl->rc->pc->ic->rd->e
根据test_split_segmentation.txt与train_split_segmentation.txt将图片划分为训练集和测试集
从DATASET.md中可以知道数据掩膜的灰度值代表意义如下
mask中label表示如下(以png文件的灰度值区分)
分类 灰度值
背景(BG) 0
肺野(LF) 1
肺磨玻璃影(GGO) 2
肺实质(CO) 3
我们分割的重点在于病灶,即肺磨玻璃影与肺实质,因此将背景和肺野归为一个总体的背景类
in_dir 数据目录,其有子目录imgs与masks
out_dir 输出npy数组目录,后续生成子目录imgs与masks+str(n_classes)
python ./utils/rename_seg_pic.py
python ./utils/preprocessSeg.py --in_dir data/seg/train/ --n_classes 3 --out_dir data/seg/process/train/
python ./utils/preprocessSeg.py --in_dir data/seg/train/ --n_classes 2 --out_dir data/seg/process/train/
python ./utils/preprocessSeg.py --in_dir data/seg/test/ --n_classes 3 --out_dir data/seg/process/test/
python ./utils/preprocessSeg.py --in_dir data/seg/test/ --n_classes 2 --out_dir data/seg/process/test/
注意!!!如果内存不够不要开z-score!!!分类网络有62000张图,开了z-score需要128G memory
but it can improve perfermance
3-classes Train
python segTrain.py --model_name U2Net_n --num_classes 3 --normalize True --batch_size 4 --train_data_dir ./data/seg/process/train --val_data_dir ./data/seg/process/test --weight 1 20 20 --lrate 3e-4 --num_epochs 200
python segTrain_U2Net.py --model_name U2Net_n --num_classes 3 --normalize True --batch_size 4 --train_data_dir ./data/seg/process/train --val_data_dir ./data/seg/process/test --log_name U2Net_n0528-2050 --pth output/saved_models/U2Net_n/epoch_50_model.pth
3-classes Test
python segTest.py --model_name U2Net_n --num_classes 3 --normalize True --test_data_dir ./data/seg/process/test --pth output_zscore/saved_models/U2Net_n/1_20_20_2/bestSegZcore.pth
2-classes Train
python segTrain.py --model_name U2Net_n_2c --num_classes 2 --normalize True --batch_size 4 --train_data_dir ./data/seg/process/train --val_data_dir ./data/seg/process/test --weight 1 20 --lrate 3e-4 --num_epochs 200
python segTrain.py --model_name U2Net_n_2c --num_classes 2 --normalize True --batch_size 4 --train_data_dir ./data/seg/process/train --val_data_dir ./data/seg/process/test --num_epochs 100 --weight 1 20 --lrate 3e-4 --pth output/saved_models/U2Net_n_2c/epoch_150_model.pth --log_name U2Net_n_2c0529-2000
2-classes Test
python segTest.py --model_name U2Net_n --num_classes 2 --normalize True --test_data_dir ./data/seg/process/test --pth output_zscore/saved_models/U2Net_n/1_20_20_2/bestSegZcore.pth
python plot_heatmap.py --model_name U2Net_n --out_dir output/segResult/ --num_classes 2
python plot_heatmap.py --model_name U2Net_n --out_dir output/segResult/ --num_classes 3
python visualizeSeg.py
pipreqs . --encoding=utf8 --force
python Radiomics/exact_radiomics.py
Name | mAP | mPA | IoU | Mean Dice coff(mDC) | accurcy |
---|---|---|---|---|---|
Our(without z-score,3 classes) | 0.6774 | 0.743 | 0.6346 | 0.7070 | 0.8932 |
Our(z-score,3 classes) | 0.6906 | 0.7573 | 0.6514 | 0.7204 | 0.8941 |
Our(z-score,2 classes) | _ | 0.8842 | _ | _ | _ |
UNet(cell)[1] | _ | 0.652 | _ | 0.547 | _ |
DRUNet(cell)[1] | _ | 0.658 | _ | 0.562 | _ |
FCN(cell)[1] | _ | 0.637 | _ | 0.553 | _ |
SegNet(cell)[1] | _ | 0.610 | _ | 0.555 | _ |
DeepLabv3(cell)[1] | _ | 0.662 | _ | 0.587 | _ |
Mask R-CNN(GGO+CO)[7] | 0.5020 | _ | _ | _ | _ |
Mask R-CNN(Lesion)[7] | 0.6192 | _ | _ | _ | _ |
Mask R-CNN*(z-score, Lesion)[7] | 0.6602 | _ | _ | _ | _ |
z-score
0.998 | 0.200 | 0.077 |
---|---|---|
0.002 | 0.747 | 0.154 |
0.0003 | 0.053 | 0.767 |
without z-score
0.998 | 0.218 | 0.096 |
---|---|---|
0.002 | 0.710 | 0.128 |
0.0002 | 0.072 | 0.776 |
0.996 | 0.115 |
---|---|
0.003 | 0.885 |
python ./utils/preprocessClf.py --in_dir /home/e201cv/Desktop/covid_data/clf/train /home/e201cv/Desktop/covid_data/clf/val /home/e201cv/Desktop/covid_data/clf/test --out_dir /home/e201cv/Desktop/covid_data/process_clf/train /home/e201cv/Desktop/covid_data/process_clf/val /home/e201cv/Desktop/covid_data/process_clf/test
python infer.py --infer_data_dirs /home/e201cv/Desktop/covid_data/process_clf/train /home/e201cv/Desktop/covid_data/process_clf/val /home/e201cv/Desktop/covid_data/process_clf/test --pth output_zscore/saved_models/U2Net_n/1_20_20_2/bestSegZcore.pth --num_classes 3 --device cuda
python Radiomics/exact_radiomics.py --imgs_dir data/clf/train/imgs data/clf/val/imgs data/clf/test/imgs --masks_dir data/clf/train/masks data/clf/val/masks data/clf/test/masks --out_dir data/clf/train/radiomics data/clf/val/radiomics data/clf/test/radiomics