README.md 4.35 KB
Newer Older
yongshk's avatar
yongshk committed
1
# UNET
yongshk's avatar
add new  
yongshk committed
2
3
4
5
## 论文
`U-Net: Convolutional Networks for Biomedical Image Segmentation`
- https://arxiv.org/abs/1505.04597

6
7
## 模型结构
UNet(全名 U-Net)是一种用于图像分割的卷积神经网络(CNN)架构,UNet 的结构具有 U 形状,因此得名。
yongshk's avatar
add new  
yongshk committed
8
![img](https://developer.hpccube.com/codes/modelzoo/unet-pytorch/-/raw/main/doc/unet.png)
9

yongshk's avatar
add new  
yongshk committed
10
11
12
13
14
15
## 算法原理
U-Net 的核心原理如下:

1. **编码器(Contracting Path)**:U-Net 的编码器由卷积层和池化层组成,用于捕捉图像的特征信息并逐渐减小分辨率。这一部分的任务是将输入图像缩小到一个低分辨率的特征图,同时保留有关图像内容的关键特征。
2. **中间层(Bottleneck)**:在编码器和解码器之间,U-Net 包括一个中间层,通常由卷积层组成,用于进一步提取特征信息。
3. **解码器(Expansive Path)**:U-Net 的解码器包括上采样层和卷积层,用于将特征图恢复到原始输入图像的分辨率。解码器的任务是将高级特征与低级特征相结合,以便生成分割结果。这一部分的结构与编码器相对称。
yongshk's avatar
add new  
yongshk committed
16
![img](https://developer.hpccube.com/codes/modelzoo/unet-pytorch/-/raw/main/doc/原理.png)
17

yongshk's avatar
add new  
yongshk committed
18
19
20
## 环境配置
### Docker(方法一)
```
dcuai's avatar
dcuai committed
21
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk24.04-py310
yongshk's avatar
add new  
yongshk committed
22

dcuai's avatar
dcuai committed
23
docker run -it --network=host --name=unet --privileged -v /opt/hyhal:/opt/hyhal:ro --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size=32G  --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root --ulimit stack=-1:-1 --ulimit memlock=-1:-1  image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk24.04-py310
24
25
26

cd /path/unet-pytorch
pip install -r requirements.txt
dcuai's avatar
dcuai committed
27
pip install NumPy==1.23.5
yongshk's avatar
add new  
yongshk committed
28
```
Rayyyyy's avatar
Rayyyyy committed
29

yongshk's avatar
yongshk committed
30
31
32
### Dockerfile(方法二)
```
docker build --no-cache -t unet:latest .
dcuai's avatar
dcuai committed
33
docker run -dit --network=host --name=unet --privileged -v /opt/hyhal:/opt/hyhal:ro --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size=16G --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root --ulimit stack=-1:-1 --ulimit memlock=-1:-1 unet:latest
yongshk's avatar
yongshk committed
34
docker exec -it unet /bin/bash
35
36

cd /path/unet-pytorch
yongshk's avatar
yongshk committed
37
pip install -r requirements.txt
dcuai's avatar
dcuai committed
38
pip install NumPy==1.23.5
yongshk's avatar
yongshk committed
39
40
41
```

### Anaconda(方法三)
yongshk's avatar
add new  
yongshk committed
42
43
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```
dcuai's avatar
dcuai committed
44
45
46
47
48
DTK驱动:dtk24.04
python:python3.10
apex:1.1.0+0dd7f68.abi0.dtk2404.torch2.1
torch:2.1.0+git00661e0.abi0.dtk2404
torchvision:0.16.0+gitc9e7141.abi0.dtk2404.torch2.1
yongshk's avatar
add new  
yongshk committed
49
50
51
52
53
54
```
`Tips:以上dtk驱动、python等DCU相关工具版本需要严格一一对应`

其它非深度学习库参照requirements.txt安装:
```
pip install -r requirements.txt
dcuai's avatar
dcuai committed
55
pip install NumPy==1.23.5
yongshk's avatar
add new  
yongshk committed
56
```
57

yongshk's avatar
add new  
yongshk committed
58
59
## 数据集
`Carvana`
Rayyyyy's avatar
Rayyyyy committed
60
- http://113.200.138.88:18080/aidatasets/project-dependency/carvana
yongshk's avatar
add new  
yongshk committed
61

62
下载命令:
Rayyyyy's avatar
Rayyyyy committed
63
```bash
yongshk's avatar
add new  
yongshk committed
64
65
bash scripts/download_data.sh
```
66

yongshk's avatar
add new  
yongshk committed
67
68
项目中已提供用于试验训练的迷你数据集,训练数据目录结构如下,用于正常训练的完整数据集请按此目录结构进行制备:
```
69
│ ── data
yongshk's avatar
add new  
yongshk committed
70
    │   ├── imgs
71
72
    │   ├────── fff9b3a5373f_15.jpg
    │   ├────── fff9b3a5373f_16.jpg
yongshk's avatar
add new  
yongshk committed
73
    │   └── masks
yongshk's avatar
yongshk committed
74
75
    │   ├────── fff9b3a5373f_15.gif
    │   ├────── fff9b3a5373f_16.gif
yongshk's avatar
add new  
yongshk committed
76
```
77

yongshk's avatar
add new  
yongshk committed
78
## 训练
dcuai's avatar
dcuai committed
79
80
81

关闭wandb
wandb disabled
yongshk's avatar
yongshk committed
82
83
84
85
### 单机单卡
```
python train.py
```
86

yongshk's avatar
add new  
yongshk committed
87
88
89
90
91
92
93
### 单机多卡
```
python -m torch.distributed.launch --nproc_per_node 4 train_ddp.py
```

## 推理
```
yongshk's avatar
yongshk committed
94
python predict.py -m model_path -i image.jpg -o output.jpg
yongshk's avatar
add new  
yongshk committed
95
```
Rayyyyy's avatar
Rayyyyy committed
96

yongshk's avatar
add new  
yongshk committed
97
## result
yongshk's avatar
add new  
yongshk committed
98
![rusult](https://developer.hpccube.com/codes/modelzoo/unet-pytorch/-/raw/main/doc/结果.png)
yongshk's avatar
add new  
yongshk committed
99
100

### 精度
Rayyyyy's avatar
Rayyyyy committed
101
测试数据:[test data](http://113.200.138.88:18080/aidatasets/project-dependency/carvana),使用的加速卡:Z100L。(采用iou系数)
yongshk's avatar
add new  
yongshk committed
102
103

根据测试结果情况填写表格:
dcuai's avatar
dcuai committed
104
105
106
| Unet | 精度 |
| :------: | :------: |
| Carvana | 0.976 |
107

yongshk's avatar
add new  
yongshk committed
108
109
## 应用场景
### 算法类别
Rayyyyy's avatar
Rayyyyy committed
110
图像分割
yongshk's avatar
add new  
yongshk committed
111
112

### 热点应用行业
Rayyyyy's avatar
Rayyyyy committed
113
医疗,交通,家居
114
115
116

## 预训练权重
[SCNet AIModels - milesial-pytorch-unet-3.0](http://113.200.138.88:18080/aimodels/findsource-dependency/milesial-pytorch-unet-3.0)
yongshk's avatar
add new  
yongshk committed
117
118
119

## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/unet-pytorch
120

yongshk's avatar
add new  
yongshk committed
121
122
## 参考资料
- https://github.com/milesial/Pytorch-Unet