Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 38e2e34

Browse files
author
xyliao
committed
update
1 parent 3a9d4f4 commit 38e2e34

File tree

9 files changed

+407
-25
lines changed

9 files changed

+407
-25
lines changed

‎aws.md

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010

1111
然后我们进入到控制面板,可以看到下面的图片,点击"EC2"
1212

13-
![1.png](http://upload-images.jianshu.io/upload_images/3623720-431f9b7b52bbbb20.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
13+
![](https://ws1.sinaimg.cn/large/006tNc79gy1fo7xn33e4cj31kw0wo11u.jpg)
1414

1515

1616
然后我们就能够进入到下一个界面
1717

1818

19-
![2.png](http://upload-images.jianshu.io/upload_images/3623720-0fca7afcf3c0508e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
19+
![](https://ws1.sinaimg.cn/large/006tNc79gy1fo7xoznbz3j31kw0j7dmu.jpg)
2020

2121

2222
这个界面只需要注意三个地方,一个是右上角的地区,需要选择一个离你比较近的地区,整个亚太地区可以选择韩国,日本,新加坡和孟买,需要注意的是不同的地区实例价格是不同的,如果你有vpn,那么推荐选择俄勒冈,因为这个地区最便宜,比亚太地区便宜了4到5倍。然后是左边的一个方框"限制",如果你申请CPU的计算实例,那么不用管,如果你要申请GPU计算实例,就需要点击"限制"进行申请,因为GPU实例会产生费用,亚马逊需要和你确认这个事情,一般需要两到三个工作日。
@@ -27,7 +27,7 @@
2727
### 申请实例并启动
2828

2929

30-
![3.png](http://upload-images.jianshu.io/upload_images/3623720-bcaa9e8aad06af58.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
30+
![](https://ws2.sinaimg.cn/large/006tNc79gy1fo7xpjsxwlj31kw0q8dp2.jpg)
3131

3232

3333
进入上面的界面之后,需要选择操作系统,这里我们一般都选择linux系统,当然还有很多社区AMI,也就是别人配置好的系统,这里先暂时不用管,我们一般就在上面两个红框中选择一个,第一个是一个空的系统,什么都没有,第二个是一个深度学习的系统,装好了CUDA以及很多框架,可以选择这一个,如果选择这个,那么需要的磁盘空间可能更大。
@@ -36,18 +36,18 @@
3636

3737
点击选择之后便可以进入下面的界面。
3838

39-
![4.png](http://upload-images.jianshu.io/upload_images/3623720-ee3c89189a125813.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
39+
![](https://ws4.sinaimg.cn/large/006tNc79gy1fo7xqq958cj31kw0ki112.jpg)
4040

4141

4242
这里需要选择实例类型,如果新注册的用户可以免费使用一年的t2.mirco实例,这个实例是没有GPU的,如果要使用GPU的实例,那么从上面的实例类型中选择GPU计算,便可以快速跳转到下面这里。
4343

4444

45-
![5.png](http://upload-images.jianshu.io/upload_images/3623720-81cf1fa5b999752a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
45+
![](https://ws4.sinaimg.cn/large/006tNc79gy1fo7xr45wmkj31kw0nktgt.jpg)
4646

47-
这里有很多个实例,一般我们就选第一个p2.xlarge,这个实例包含一个Nvidia k40GPU,后面有8块GPU和16块GPU的版本,当然费用也更高。选择完成之后我们可以进入下一步配置实例信息。
47+
这里有很多个实例,一般我们就选第一个p2.xlarge,这个实例包含一个Nvidia k40GPU,后面有8块GPU和16块GPU的版本,当然费用也更高。除此之外,下面还有 p3.2xlarge,这里面包含更新的 GPU,速度也会快很多,当然价格也会贵一些,有一点需要注意,选择 p2.xlarge 只能安装 cuda8,而选择 p3.2xlarge 则可以安装 cuda9。选择完成之后我们可以进入下一步配置实例信息。
4848

4949

50-
![6.png](http://upload-images.jianshu.io/upload_images/3623720-56c4ead3a85dfbba.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
50+
![](https://ws2.sinaimg.cn/large/006tNc79gy1fo7xrl5bi9j31kw08j77v.jpg)
5151

5252
这里我们只需要关注根目录的大小,也就是云端计算平台的硬盘大小,因为我们需要存放数据集,需要安装框架,所以需要大一点,新注册的用户可以免费试用30G的存储,我们可以设置为40G,一般费用比较便宜。然后点击审核和启动实例。
5353

@@ -56,7 +56,7 @@
5656
接着进入到下面这个界面,我们可以点击右下角的启动来启动实例了。
5757

5858

59-
![7.png](http://upload-images.jianshu.io/upload_images/3623720-094dec03bf58c6c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
59+
![](https://ws1.sinaimg.cn/large/006tNc79gy1fo7xs8wl8hj31kw0sp13n.jpg)
6060

6161

6262

@@ -74,13 +74,13 @@
7474
然后你就可以看到你的实例正在启动,点击下图红框的地方进入具体的实例位置。
7575

7676

77-
![10.png](http://upload-images.jianshu.io/upload_images/3623720-f7bcd437c5dd904c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
77+
![](https://ws3.sinaimg.cn/large/006tNc79gy1fo7xtcjn2fj31kw0c177o.jpg)
7878

7979

8080

8181
然后可以进入到下面的界面,可以看到实例正在启动,右键点击实例这一栏,然后点击连接。
8282

83-
![11.png](http://upload-images.jianshu.io/upload_images/3623720-8c7b5be786db6e50.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
83+
![](https://ws1.sinaimg.cn/large/006tNc79gy1fo7xtys9mej31kw0iu422.jpg)
8484

8585

8686

@@ -147,15 +147,21 @@ source ~/.bashrc
147147

148148
我们去Nvidia官网下载CUDA并安装。选择正确的版本并获取下载地址。
149149

150-
【注意】目前CUDA默认下载9.0版,但`mxnet-cu90`的daily build还不完善。建议使用下面命令安装8.0版。
150+
【注意】目前官方默认是 cuda9,如果选择的是 p2.xlarge,则需要安装 cuda8,可以使用下面的命令来下载并安装 cuda8
151+
152+
```bash
153+
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
154+
sudo sh cuda_8.0.61_375.26_linux-run
155+
```
156+
157+
151158

152159
![](https://github.com/mli/gluon-tutorials-zh/blob/master/img/cuda.png?raw=true)
153160

154-
然后使用`wget`下载并且安装
161+
然后使用`wget`下载并且安装 cuda9
155162

156163
```bash
157-
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
158-
sudo sh cuda_8.0.61_375.26_linux-run
164+
wget https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_387.26_linux
159165
```
160166

161167
这里需要回答几个问题。
@@ -186,10 +192,18 @@ nvidia-smi
186192

187193
就可以看到这个实例的GPU了。最后将CUDA加入到library path方便之后安装的库找到它。
188194

195+
cuda 8
196+
189197
```bash
190198
echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/usr/local/cuda-8.0/lib64" >>.bashrc
191199
```
192200

201+
cuda 9
202+
203+
```bash
204+
echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/usr/local/cuda-9.1/lib64" >>.bashrc
205+
```
206+
193207

194208

195209
### 运行Jupyter notebook

‎chapter9_Computer-Vision/fine_tune/main.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,9 @@ def __init__(self):
7474
self.metric_meter['loss'] = meter.AverageValueMeter()
7575
self.metric_meter['acc'] = meter.AverageValueMeter()
7676

77-
def train(self, train_data):
77+
def train(self, kwargs):
7878
self.model.train()
79+
train_data = kwargs['train_data']
7980
for data in tqdm(train_data):
8081
img, label = data
8182
if opt.use_gpu:
@@ -99,18 +100,19 @@ def train(self, train_data):
99100
self.metric_meter['acc'].add(acc.data[0])
100101

101102
# Update to tensorboard.
102-
# if (self.n_iter + 1) % opt.plot_freq == 0:
103-
# self.writer.add_scalars('loss', {'train': self.metric_meter['loss'].value()[0]}, self.n_plot)
104-
# self.writer.add_scalars('acc', {'train': self.metric_meter['acc'].value()[0], self.n_plot})
105-
# self.n_plot += 1
103+
if (self.n_iter + 1) % opt.plot_freq == 0:
104+
self.writer.add_scalars('loss', {'train': self.metric_meter['loss'].value()[0]}, self.n_plot)
105+
self.writer.add_scalars('acc', {'train': self.metric_meter['acc'].value()[0]}, self.n_plot)
106+
self.n_plot += 1
106107
self.n_iter += 1
107108

108109
# Log the train metric dict to print result.
109110
self.metric_log['train loss'] = self.metric_meter['loss'].value()[0]
110111
self.metric_log['train acc'] = self.metric_meter['acc'].value()[0]
111112

112-
def test(self, test_data):
113+
def test(self, kwargs):
113114
self.model.eval()
115+
test_data = kwargs['test_data']
114116
for data in tqdm(test_data):
115117
img, label = data
116118
if opt.use_gpu:
@@ -127,9 +129,9 @@ def test(self, test_data):
127129
self.metric_meter['acc'].add(acc.data[0])
128130

129131
# Update to tensorboard.
130-
# self.writer.add_scalars('loss', {'test': self.metric_meter['loss'].value()[0]}, self.n_plot)
131-
# self.writer.add_scalars('acc', {'test': self.metric_meter['acc'].value()[0]}, self.n_plot)
132-
# self.n_plot += 1
132+
self.writer.add_scalars('loss', {'test': self.metric_meter['loss'].value()[0]}, self.n_plot)
133+
self.writer.add_scalars('acc', {'test': self.metric_meter['acc'].value()[0]}, self.n_plot)
134+
self.n_plot += 1
133135

134136
# Log the test metric to dict.
135137
self.metric_log['test loss'] = self.metric_meter['loss'].value()[0]
@@ -148,7 +150,7 @@ def train(**kwargs):
148150
test_data = get_test_data()
149151

150152
fine_tune_trainer = FineTuneTrainer()
151-
fine_tune_trainer.fit(train_data, test_data)
153+
fine_tune_trainer.fit(train_data=train_data, test_data=test_data)
152154

153155

154156
if __name__ == '__main__':
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## 语意分割教程
2+
3+
### 下载数据
4+
5+
打开终端,运行 bash 脚本来获取数据
6+
7+
```bash
8+
bash get_data.sh
9+
```
10+
11+
12+
13+
### 训练模型
14+
15+
所有的配置文件都放在 config.py 里面,通过下面的代码来训练模型
16+
17+
```python
18+
python main.py train
19+
```
20+
21+
22+
23+
也可以在终端修改配置,比如改变 epochs 和 batch_size
24+
25+
```python
26+
python main.py train \
27+
--max_epochs=100 \
28+
--batch_size=16
29+
```
30+
31+
32+
33+
### 训练效果
34+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# encoding: utf-8
2+
"""
3+
@author: xyliao
4+
@contact: xyliao1993@qq.com
5+
"""
6+
import warnings
7+
from pprint import pprint
8+
9+
10+
class DefaultConfig(object):
11+
model = 'FcnResNet'
12+
13+
# Dataset.
14+
voc_root = './dataset/VOCdevkit/VOC2012/'
15+
crop_size = (320, 480)
16+
num_classes = 21
17+
18+
# Store result and save models.
19+
result_file = 'result.txt'
20+
save_file = './checkpoints/'
21+
save_freq = 20 # save model every N epochs
22+
save_best = True # If save best test metric model.
23+
24+
# Visualization parameters.
25+
vis_dir = './vis/'
26+
plot_freq = 30 # plot in tensorboard every N iterations
27+
28+
# Model hyperparameters.
29+
use_gpu = True # use GPU or not
30+
ctx = 0 # running on which cuda device
31+
batch_size = 32 # batch size
32+
num_workers = 4 # how many workers for loading data
33+
max_epoch = 80
34+
lr = 1e-2 # initial learning rate
35+
lr_decay = 0.1
36+
lr_decay_freq = 50
37+
weight_decay = 1e-4
38+
39+
def _parse(self, kwargs):
40+
for k, v in kwargs.items():
41+
if not hasattr(self, k):
42+
warnings.warn("Warning: opt has not attribute %s" % k)
43+
setattr(self, k, v)
44+
45+
print('=========user config==========')
46+
pprint(self._state_dict())
47+
print('============end===============')
48+
49+
def _state_dict(self):
50+
return {k: getattr(self, k) for k, _ in DefaultConfig.__dict__.items()
51+
if not k.startswith('_')}
52+
53+
54+
opt = DefaultConfig()

‎chapter9_Computer-Vision/segmentation/fcn.ipynb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1020,7 +1020,6 @@
10201020
"outputs": [],
10211021
"source": [
10221022
"net = fcn(num_classes)\n",
1023-
"net = nn.DataParallel(net, [0, 1])\n",
10241023
"net = net.cuda()"
10251024
]
10261025
},
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env bash
2+
3+
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
4+
5+
if [ ! -e ./dataset ]; then
6+
mkdir ./dataset
7+
fi
8+
9+
tar -xf VOCtrainval_11-May-2012.tar -C ./dataset
10+
rm VOCtrainval_11-May-2012.tar

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /