MultiNet能够同时完成道路分割、汽车检测和道路分类的任务。

MultiNet能够同时完成道路分割、汽车检测和道路分类的任务。MultiNet模型的实时存档速度和分割性能都处于最先进水平。详细的模型描述请查阅我们的论文。
优化后的MultiNet模型在实时速度下表现良好,其要素KittiSeg在道路分割方面设置了一项新的最先进技术,而另一要素KittiBox在推理速度和检测性能上对基线Faster-RCNN进行了改进。
该模型被设计为encoder-decoder架构,在每项任务中使用一个VGG编码器和几个独立解码器。此存储库包括允许在一张网络中将几个tensorflow模型的通用代码组合在一起,不可视任务的代码由KittiSeg、KittiBox和KittiClass存储库提供,这些存储库在该项目中作为子模块。该项目的构建旨在与TensorVision后端兼容,后端能够以十分简洁的方式组织实验。

要求
代码需要Tensorflow 1.0版本以及以下python库:

•matplotlib

•numpy

•Pillow

•scipy

•runcython

这些模块可以通过以下代码进行安装:

pip install numpy scipy pillowmatplotlib runcython or pip install -r requirements.txt。

建立

1、克隆该存储库:https://github.com/MarvinTeichmann/MultiNet.git

2、将所有子模块初始化:git submodule update–init –recursive

3、通过 ‘cd submodules / KittiBox /submodules / utils / && make构建cython代码

4、[可选]下载KittiRoad数据:

ⅰ. 这里检索kitti数据url网址: http://www.cvlibs.net/download.php?file=data_road.zip

ⅱ.指令python download_data.py –kitti_url URL_YOU_RETRIEVED

5、[可选]运行cdsubmodules / KittiBox / submodules / KittiObjective2 / && make构建Kitti评估代码(更多详细信息请参阅子模块/ KittiBox /submodules / KittiObjective2 / README.md)

使用demo.py运行模型只需要完成步骤1至3。只有当您想使用train.py训练模型时,才需要步骤4和5。需要注意的是,我建议使用download_data.py,而不是自行下载数据。该脚本还将提取并准备相应的数据。如果您想控制数据的存储位置,请参阅“管理数据存储”这部分内容。

教程

入门

运行:python demo.py –gpus 0 –inputdata / demo / um_000005.png使用demo.png作为输入指令以获取预测信息。

运行:python evaluate.py对一个训练模型进行评估。

运行:python train.py –hypes hypes /multinet2.json训练一个multinet2模型

如果您想理解这些代码,我建议先查看demo.py。我已经在文件中尽可能地记录下每个步骤。

只有MultiNet3(同时完成检测和分割任务)的训练是开箱即用的。用于训练分类模型的数据是不公开的,不能用于训练完整的MultiNet3(用于检测、分割和分类任务)模式。完整的代码已在此提供,因此,如果您有自己的数据,您仍然可以训练MultiNet3模型。

管理数据存储

MultiNet允许将数据存储与代码分离。这在许多服务器环境中非常受用。默认情况下,数据存储在MultiNet / DATA文件夹和MultiNet / RUNS中运行输出。可以通过设置bash环境变量 TVDIRDATA TV_DIR_RUNS来更改此行为。

在.profile中,包括导出TV_DIR_DATA =“/ MY / LARGE / HDD / DATA”在内,所有数据将被下载到/ MY / LARGE / HDD / DATA /。在您的.profile中包括导出TV_DIR_RUNS =“/ MY / LARGE / HDD / RUNS”,所有运行将保存到/ MY / LARGE / HDD / RUNS / MultiNet

修改模型并在您自己的数据上进行训练

该模型由文件hypes / multinet3.json控制。此文件将代码指向对子模型的实现过程中。使用MultiNet代码,将已提供的所有模型进行加载,并将解码器集成到一个神经元网络中。要在您自己的数据上进行训练,足以修改子模型的hype文件。从KittiSeg入手将是最佳选择,KittiSeg是有据可查的。

RUNDIR和实验组织

MultiNet可帮助您组织大量实验。为此,每次运行的输出都存储在MultiNet的rundir中。每个rundir包含:

•output.log 打印到屏幕上的一个训练输出副本

•tensorflowevents可在rundir中运行

•tensorflow checkpoints,训练模型可从rundir中加载

•[dir]images一个包含示例输出图像的文件夹。 image_iter控制整个验证集的转储频率

•[dir] model_files为构建模型所需的所有源代码的副本。如您有很多版本的模型,此项操作对您是很有帮助的。

为跟踪所有实验,您可以以—name为flag,为每个rundir建立独特的名称。–project flag将运行存储在单独的子文件夹中,可以运行不同系列的实验。例如,运行python train.py –project batch_size_bench –name size_5将使用dir作为rundir:$ TV_DIR_RUNS/ KittiSeg / batch_size_bench / size_5_KittiSeg_2017_02_08_13.12。

使用flag–nosave非常有用,而非在rundir中插入垃圾信息。

有用的Flag&Variabels

以下Flag在使用KittiSeg和TensorVision时将会起到帮助,所有Flag可用于所有脚本。

–hypes:指定hype文件的使用

–logdir:指定logdir的使用

–gpus:指定在哪些GPU上运行代码

–name:为运行程序分配一个名称

–project:将项目分配给运行程序

–nosave:调试运行,logdir将被设置为debug

此外,以下TensorVision环境中的Variables将非常有用:

$ TV_DIR_DATA:指定数据的元目录

$ TV_DIR_RUNS:指定输出的元目录

$ TV_USE_GPUS:指定默认GPU行为

在集群上,设置$ TV_USE_GPUS = force是有用的。这将使flag—gpus变为强制性操作,并确保在正确的GPU上运行。

论文地址:https://arxiv.org/pdf/1612.07695.pdf

GitHub资源:https://github.com/MarvinTeichmann/MultiNet

MultiNet能够同时完成道路分割、汽车检测和道路分类的任务。MultiNet模型的实时存档速度和分割性能都处于最先进水平。详细的模型描述请查阅我们的论文。

优化后的MultiNet模型在实时速度下表现良好,其要素KittiSeg在道路分割方面设置了一项新的最先进技术,而另一要素KittiBox在推理速度和检测性能上对基线Faster-RCNN进行了改进。

该模型被设计为encoder-decoder架构,在每项任务中使用一个VGG编码器和几个独立解码器。此存储库包括允许在一张网络中将几个tensorflow模型的通用代码组合在一起,不可视任务的代码由KittiSeg、KittiBox和KittiClass存储库提供,这些存储库在该项目中作为子模块。该项目的构建旨在与TensorVision后端兼容,后端能够以十分简洁的方式组织实验。

要求

代码需要Tensorflow 1.0版本以及以下python库:

•matplotlib

•numpy

•Pillow

•scipy

•runcython

这些模块可以通过以下代码进行安装:

pip install numpy scipy pillowmatplotlib runcython or pip install -r requirements.txt。

建立

1、克隆该存储库:https://github.com/MarvinTeichmann/MultiNet.git

2、将所有子模块初始化:git submodule update–init –recursive

3、通过 ‘cd submodules / KittiBox /submodules / utils / && make构建cython代码

4、[可选]下载KittiRoad数据:

ⅰ. 这里检索 kitti 数据url网址: http://www.cvlibs.net/download.php?file=data_road.zip

ⅱ.指令python download_data.py –kitti_url URL_YOU_RETRIEVED

5、[可选]运行cdsubmodules / KittiBox / submodules / KittiObjective2 / && make构建Kitti评估代码(更多详细信息请参阅子模块/ KittiBox /submodules / KittiObjective2 / README.md)

使用demo.py运行模型只需要完成步骤1至3。只有当您想使用train.py训练模型时,才需要步骤4和5。需要注意的是,我建议使用download_data.py,而不是自行下载数据。该脚本还将提取并准备相应的数据。如果您想控制数据的存储位置,请参阅“管理数据存储”这部分内容。

教程

入门

运行:python demo.py –gpus 0 –inputdata / demo / um_000005.png使用demo.png作为输入指令以获取预测信息。

运行:python evaluate.py对一个训练模型进行评估。

运行:python train.py –hypes hypes /multinet2.json训练一个multinet2模型

如果您想理解这些代码,我建议先查看demo.py。我已经在文件中尽可能地记录下每个步骤。

只有MultiNet3(同时完成检测和分割任务)的训练是开箱即用的。用于训练分类模型的数据是不公开的,不能用于训练完整的MultiNet3(用于检测、分割和分类任务)模式。完整的代码已在此提供,因此,如果您有自己的数据,您仍然可以训练MultiNet3模型。

管理数据存储

MultiNet允许将数据存储与代码分离。这在许多服务器环境中非常受用。默认情况下,数据存储在MultiNet / DATA文件夹和MultiNet / RUNS中运行输出。可以通过设置bash环境变量 TVDIRDATA TV_DIR_RUNS来更改此行为。

在.profile中,包括导出TV_DIR_DATA =“/ MY / LARGE / HDD / DATA”在内,所有数据将被下载到/ MY / LARGE / HDD / DATA /。在您的.profile中包括导出TV_DIR_RUNS =“/ MY / LARGE / HDD / RUNS”,所有运行将保存到/ MY / LARGE / HDD / RUNS / MultiNet

修改模型并在您自己的数据上进行训练

该模型由文件hypes / multinet3.json控制。此文件将代码指向对子模型的实现过程中。使用MultiNet代码,将已提供的所有模型进行加载,并将解码器集成到一个神经元网络中。要在您自己的数据上进行训练,足以修改子模型的hype文件。从KittiSeg入手将是最佳选择,KittiSeg是有据可查的。

RUNDIR和实验组织

MultiNet可帮助您组织大量实验。为此,每次运行的输出都存储在MultiNet的rundir中。每个rundir包含:

•output.log 打印到屏幕上的一个训练输出副本

•tensorflowevents可在rundir中运行

•tensorflow checkpoints,训练模型可从rundir中加载

•[dir]images一个包含示例输出图像的文件夹。 image_iter控制整个验证集的转储频率

•[dir] model_files为构建模型所需的所有源代码的副本。如您有很多版本的模型,此项操作对您是很有帮助的。

为跟踪所有实验,您可以以—name为flag,为每个rundir建立独特的名称。–project flag将运行存储在单独的子文件夹中,可以运行不同系列的实验。例如,运行python train.py –project batch_size_bench –name size_5将使用dir作为rundir:$ TV_DIR_RUNS/ KittiSeg / batch_size_bench / size_5_KittiSeg_2017_02_08_13.12。

使用flag–nosave非常有用,而非在rundir中插入垃圾信息。

有用的Flag&Variabels

以下Flag在使用KittiSeg和TensorVision时将会起到帮助,所有Flag可用于所有脚本。

–hypes:指定hype文件的使用

–logdir:指定logdir的使用

–gpus:指定在哪些GPU上运行代码

–name:为运行程序分配一个名称

–project:将项目分配给运行程序

–nosave:调试运行,logdir将被设置为debug

此外,以下TensorVision环境中的Variables将非常有用:

$ TV_DIR_DATA:指定数据的元目录

$ TV_DIR_RUNS:指定输出的元目录

$ TV_USE_GPUS:指定默认GPU行为

在集群上,设置$ TV_USE_GPUS = force是有用的。这将使flag—gpus变为强制性操作,并确保在正确的GPU上运行。

论文地址:https://arxiv.org/pdf/1612.07695.pdf

GitHub资源:https://github.com/MarvinTeichmann/MultiNet

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用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()函数中更新模型的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值