Skip to content

Latest commit

 

History

History
219 lines (180 loc) · 8.81 KB

README_zh-CN.md

File metadata and controls

219 lines (180 loc) · 8.81 KB

wwh的说明

目前完成了FCN,deeplabv3(v3_plus显存不够,batch_size得调成1或者是2就是随机梯度下降了),和PSPnet,目前来看pspnet可能效果更好一些,前面两者训练60轮,pspnet训练了120轮,目前pspnet比较好。

训练和调用都可以查看底下的readme。

在训练和调用中可能遇到的问题:在原github链接的issues中都很容易找到。直接对着查就可以。

可能的问题1:运行时出现local_rank的问题,issues里面有解决方案。

可能的问题2:模型找不到,.torch文件夹直接放到windows的根目录下,e.g:C:\Users\Wu Kevin.torch\models

有条件的可以训练一些其他的模型(下面有很多),可以看看哪个效果好,建议训练不低于100轮。

下一步:

1.提高正确度,三个模型的pixacc都比较高(90+),但是miou都比较低,(60~70+)

2.用gradio随便做一个local_host出来算了,不搞网站了。

中文说明

English | 简体中文

python-image pytorch-image lic-image

该项目旨在提供一个基于PyTorch的简洁、易用且可扩展的语义分割工具箱。

主分支代码目前支持 PyTorch 1.1.0 以上的版本

安装

# semantic-segmentation-pytorch dependencies
pip install ninja tqdm

# follow PyTorch installation in https://pytorch.org/get-started/locally/
conda install pytorch torchvision -c pytorch

# install PyTorch Segmentation
git clone https://github.com/Tramac/awesome-semantic-segmentation-pytorch.git

使用方式

训练


  • 单卡训练
# for example, train fcn32_vgg16_pascal_voc:
python train.py --model fcn32s --backbone vgg16 --dataset pascal_voc --lr 0.0001 --epochs 50
  • 分布式训练
# for example, train fcn32_vgg16_pascal_voc with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node=$NGPUS train.py --model fcn32s --backbone vgg16 --dataset pascal_voc --lr 0.0001 --epochs 50

测试


  • 单卡测试
# for example, evaluate fcn32_vgg16_pascal_voc
python eval.py --model fcn32s --backbone vgg16 --dataset pascal_voc
  • 多卡测试
# for example, evaluate fcn32_vgg16_pascal_voc with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node=$NGPUS eval.py --model fcn32s --backbone vgg16 --dataset pascal_voc

Demo

cd ./scripts
#for new users:
python demo.py --model fcn32s_vgg16_voc --input-pic ../tests/test_img.jpg
#you should add 'test.jpg' by yourself
python demo.py --model fcn32s_vgg16_voc --input-pic ../datasets/test.jpg

模型库


Model与Backbone的支持详情可见这里

.{SEG_ROOT}
├── core
│   ├── models
│   │   ├── bisenet.py
│   │   ├── danet.py
│   │   ├── deeplabv3.py
│   │   ├── deeplabv3+.py
│   │   ├── denseaspp.py
│   │   ├── dunet.py
│   │   ├── encnet.py
│   │   ├── fcn.py
│   │   ├── pspnet.py
│   │   ├── icnet.py
│   │   ├── enet.py
│   │   ├── ocnet.py
│   │   ├── psanet.py
│   │   ├── cgnet.py
│   │   ├── espnet.py
│   │   ├── lednet.py
│   │   ├── dfanet.py
│   │   ├── ......

数据集

可以选择以下方式下载指定数据集,比如:

cd ./core/data/downloader
python ade20k.py --download-dir ../datasets/ade
Dataset training set validation set testing set
VOC2012 1464 1449
VOCAug 11355 2857
ADK20K 20210 2000
Cityscapes 2975 500
COCO
SBU-shadow 4085 638
LIP(Look into Person) 30462 10000 10000
.{SEG_ROOT}
├── core
│   ├── data
│   │   ├── dataloader
│   │   │   ├── ade.py
│   │   │   ├── cityscapes.py
│   │   │   ├── mscoco.py
│   │   │   ├── pascal_aug.py
│   │   │   ├── pascal_voc.py
│   │   │   ├── sbu_shadow.py
│   │   └── downloader
│   │       ├── ade20k.py
│   │       ├── cityscapes.py
│   │       ├── mscoco.py
│   │       ├── pascal_voc.py
│   │       └── sbu_shadow.py

部分结果

Methods Backbone TrainSet EvalSet crops_size epochs JPU Mean IoU pixAcc
FCN32s vgg16 train val 480 60 47.50 85.39
FCN16s vgg16 train val 480 60 49.16 85.98
FCN8s vgg16 train val 480 60 48.87 85.02
FCN32s resnet50 train val 480 50 54.60 88.57
PSPNet resnet50 train val 480 60 63.44 89.78
DeepLabv3 resnet50 train val 480 60 60.15 88.36

lr=1e-4, batch_size=4, epochs=80. 注意: 以上结果均基于train.py中的默认参数所得,更优的效果请参照paper中具体参数。

版本

  • v0.1.0:相较于master分支,该版本包含了ccnetpsanet,需要依赖编译产出自定义层,如有需要按照分支说明操作即可。

To Do

  • add train script
  • remove syncbn
  • train & evaluate
  • test distributed training
  • fix syncbn (Why SyncBN?)
  • add distributed (How DIST?)

参考

WeChat&QQ

由于很多小伙伴通过知乎私信寻求一些帮助,同时也不忍心忽略到大家的问题,下面分别提供了针对该项目的微信&QQ群,希望可以帮助到有需要的同学~