联合车道线分割与车辆检测之Multinet算法训练配置

配置cuda9.0+cudnn7.0+tensorflow-gpu1.9.0+python2.7

非root权限下安装cuda9.0+cudnn7.0

1.根据自己的系统在官网下载cuda9.0

2.进入下载目录,并执行

sh cuda_xxxx_linux.run

 注意:

  1. 在协议中选择同意EULA(accept)
  2. 不安装driver installation (no)
  3. 选择cuda安装目录,如/home/pll/cuda
  4. 不进行软链接

3.下载cudnn7.0

4.解压cudnn7.0

tar -xzvf cudnn-9.0-linux-x64-v7.tgz

5、拷贝cudnn部分文件到cuda

cp cuda/include/cudnn.h cuda9/include/
cp cuda /lib64/libcudnn* cuda9/lib6

6、修改个人用户的环境变量 

vim ~/.bashrc
“export PATH=/home/pll/cuda9/bin:$PATH”
“export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/pll/cuda9/lib64/”
添加到环境变量中
然后保存
source ~/.bashrc

tensorflow-gpu1.9.0+python2.7

2.Anaconda安装:下载对应的Anaconda版本,然后sh Anaconda3-2019.03-Linux-x86_64.sh直接安装

3 python2.7安装

conda create --name py27 python=2.7

4 tensorflow1.9.0安装

conda activate py27 #激活python2.7的虚拟环境
pip install tensorflow_gpu-1.9.0-cp36-cp36m-manylinux1_x86_64.whl#离线安装快
#安装后
python
import tensorflow as tf 
#如果不报错就证明安装成功

MultiNet环境配置

1.下载MultiNet开源代码

git clone https://github.com/MarvinTeichmann/MultiNet.git

2.配置相关环境

pip install numpy scipy pillow matplotlib runcython commentjson

3.初始化所有submodules

git submodule update --init --recursive

4.build cython code

cd submodules/KittiBox/submodules/utils/ && make

5. Download Kitti Road Data

1.Retrieve kitti data url here: http://www.cvlibs.net/download.php?file=data_road.zip
2.Call python download_data.py --kitti_url URL_YOU_RETRIEVED

这里不建议在线下载权重文件和相关数据集,在线下载的速度是慢的要死,而且也不一定能够下载成功,kitti的道路分割数据集和车辆检测数据集可以直接百度kitti官网去下载,权重文件vgg16.npy下载的百度云盘链接为:

链接:https://pan.baidu.com/s/1Wo3s6AysHx_DqQzVdCmLwg 
提取码:mvzz 
下载完成后,在MultiNet下建立一个DATA文件,把相关数据放进去,在DATA/下建立weights把vgg16.npy放至该路径下

6.build the Kitti evaluation code 

cd submodules/KittiBox/submodules/KittiObjective2/ && make

7 训练前设置Kittiseg.json

将resize_image由false改为true

8.GPU设置 

export TV_USE_GPUS=2,3#其中2,3是gpu的序号,根据自己的服务器的GPU序号设置

9.最后训练

python train.py --hypes hypes/multinet2.json

  错误提示1:训练前一定在kittiseg.json中设置 resize_image": true,不然测试的时候会报如下错误,我迭代训练了7万次,后来 网上看到有人训练踩了坑,就去测试了一下,真的是有这种情况出现,真的是虐啊,不开心。在博客中尽量列出完善MultiNet训练步骤,帮助大家少踩坑。

   错误提示2:没有设置GPU会报错,显示内存不够,当时服务器 上有4块gpu,同事当时有在调用第一块,我没有指定gpu,结果总是报错第一块gpu内存资源耗尽,就是 如下错误,去githup上查找相关报错,结果不是说电脑配置不行就是说要调整图像大小或者batch_size,算法中batch_size=1,已经不能在降低了,调整图像大小,对应的标签也需要调整,感觉很麻烦,弄了大半天没有弄好,就去请教同事,需要在运行代码前指定使用的gpu,然后在进行训练,就很正常的在训练了,突然发现自己智商瞬间为0啊,很不开心啊。

 

    

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个使用PyTorch实现二元分类网络和多元分类网络联合训练的示例代码: ```python import torch import torch.nn as nn import torch.optim as optim # 定义二元分类网络模型 class BinaryNet(nn.Module): def __init__(self): super(BinaryNet, self).__init__() self.fc1 = nn.Linear(100, 64) self.fc2 = nn.Linear(64, 32) self.fc3 = nn.Linear(32, 1) self.sigmoid = nn.Sigmoid() def forward(self, x): x = self.fc1(x) x = self.fc2(x) x = self.fc3(x) x = self.sigmoid(x) return x # 定义多元分类网络模型 class MultiNet(nn.Module): def __init__(self): super(MultiNet, self).__init__() self.fc1 = nn.Linear(100, 64) self.fc2 = nn.Linear(64, 32) self.fc3 = nn.Linear(32, 5) self.softmax = nn.Softmax(dim=1) def forward(self, x): x = self.fc1(x) x = self.fc2(x) x = self.fc3(x) x = self.softmax(x) return x # 实例化二元分类网络和多元分类网络模型 binary_net = BinaryNet() multi_net = MultiNet() # 定义损失函数和优化器 criterion = nn.BCELoss() # 二元分类使用BCELoss,多元分类使用CrossEntropyLoss optimizer = optim.SGD(list(binary_net.parameters()) + list(multi_net.parameters()), lr=0.001) # 训练模型 for epoch in range(100): for i, (input_data, binary_label, multi_label) in enumerate(train_loader): optimizer.zero_grad() binary_output = binary_net(input_data) binary_loss = criterion(binary_output, binary_label) multi_output = multi_net(input_data) multi_loss = criterion(multi_output, multi_label) total_loss = binary_loss + multi_loss total_loss.backward() optimizer.step() ``` 在这个示例代码中,我们定义了一个二元分类网络模型和一个多元分类网络模型,并使用SGD优化器和BCELoss(对于二元分类)或CrossEntropyLoss(对于多元分类)损失函数进行训练。在每个训练batch中,我们分别计算二元分类和多元分类的损失,并将二者相加作为总的损失。最后,我们在优化器的step()函数中更新模型的参数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值