3DTrans: 首个支持自动驾驶室外点云迁移学习的代码库

保姆级教程:在阿里云ECS上用Docker一键部署EMQX MQTT服务器(Ubuntu 20.04) 本文提供在阿里云ECS上使用Docker一键部署EMQX MQTT服务器的详细教程,涵盖从实例创建、Docker环境配置到EMQX部署与优化的全流程。适合物联网开发者快速搭建高效、安全的MQTT消息服务器,适用于智能家居、工业物联网等场景。 阅读详情

本文将为大家介绍上海人工智能实验室交通平台组ADLab的3DTrans代码库–首个自动驾驶室外3D点云迁移学习的代码库。此外3DTrans代码库还是Uni3D(CVPR-2023)和Bi3D(CVPR-2023)的官方实现代码库。

Code Link: https://github.com/PJLab-ADG/3DTranshttps://github.com/PJLab-ADG/3DTrans

一、3DTrans–首个支持多种迁移学习任务的3D室外点云代码库

1.1 3DTrans可以做什么?

快速目标域自适应:

3DTrans可以仅使用无标注数据来提高3D感知模型对unseen domains的适应性。例如,3DTrans代码库支持ST3D[1]等多个无监督领域适配(UDA)方法。此外,3DTrans开发了许多新的UDA技术来解决不同类型的域偏移(如激光雷达引起的域差异以及物体大小引起的域差异),其中包括Post-SN、Pre-SN和Range-map Down-sampling/retraining操作。

低成本目标域适应:

3DTrans可以从unseen domains中选择出信息量最大的子集样本,并以最小的成本为其进行标注。例如,3DTrans开发了Bi3D,它选择部分但重要的目标数据并以最小的成本对其进行人工标注,在高性能和低标注成本之间实现了良好的平衡。此外,3DTrans已经将几种典型的迁移学习技术集成到3D目标检测框架中。例如,3DTrans集成了TQS[2]、CLUE[3]、SN[4]、ST3D[1]、伪标注[1]、SESS[5]和Mean Teacher[6]等方法,以支持自动驾驶相关的模型跨传感器、跨场景的迁移。

多数据集的联合训练:

3DTrans可以执行多数据集的3D目标检测任务。例如,3DTrans首次研发了多数据集3D目标检测框架–Uni3D,使当前的3D基线模型能够有效地从多个公开3D数据集中进行学习,提高了不同自动驾驶厂商、传感器、不同地点数据之间的复用性。

多数据集支持:

3DTrans为Waymo、nuScenes、ONCE、Lyft和KITTI等多个公开数据集提供了统一的数据加载接口和数据增强方式,有利于研究跨数据集的3D感知任务。此外,为了消除3D室外点云数据的域差异,并获得可泛化的表示,3DTrans集成了一些经典的无标注预训练技术,来为目前3D基线检测模型提供更好的参数初始化。例如,我们集成了PointContrast[7]和SESS[5]来支持基于室外点云的预训练任务。

多模型的可扩展性:

3DTrans可以快速完成新基线检测模型的UDA、ADA、SSDA、MDF等任务的支持。在不对代码和新基线检测模型结构进行重大更改的情况下,通过使用3DTrans,单数据集3D基线检测模型可以成功地迁移到带有域差异的新领域。


*3DTrans代码库不同模块输入输出关系图

1.2 3DTrans的每个模块介绍

3DTrans是一个轻量级、简单、自包含的开源代码库,用于探索面向自动驾驶的迁移学习技术,目前主要由四个功能组成:

  1. Unsupervised Domain Adaptation (UDA) for 3D Point Clouds
  2. Active Domain Adaptation (ADA) for 3D Point Clouds
  3. Semi-Supervised Domain Adaptation (SSDA) for 3D Point Clouds
  4. Multi-dateset Domain Fusion (MDF) for 3D Point Clouds

接下来,给大家详细介绍一下每个模块:

1.2.1 3DTrans@UDA

● 入口链接:
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_UDA.md

● 3DTrans代码库UDA基线算法的构建:

3DTrans是面向自动驾驶场景迁移学习的代码库,最常见的迁移学习任务是UDA任务。其假设:模型可以接触到全量带标注的源域数据和全量无标注的目标域数据。3DTrans支持了ST3D[1]等最新的UDA 3D方法。同样,我们针对在3D自动驾驶场景下常见的两种领域差异,即LiDAR-beam variation和Object-size change,给出了LiDAR down-sampling retraining和Post/Pre-SN实现,来针对特定域差异来迁移3D感知模型。

*详情见:https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_UDA.md

● 3DTrans@UDA实验结果

Waymo->KITTI:

1.2.2 3DTrans@ADA

● 入口链接:

https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_ADA.md

● 3DTrans代码库ADA基线算法的构建:

3DTrans代码库首次支持了多种经典的ADA算法,包括TQS[2],CLUE[3]以及我们的Bi3D,同时,利用TQS中的代码,可以轻易地实现query-by-committee、query-by-uncertainty等方法。

TQS[2]由transferable committee、transferable uncertainty和基于图像级特征的transferable domainness组成。在我们的复现中,我们使用CNN从BEV特征中提取场景级特征描述,并使用三个分类器头来构建committees。不同于以往使用熵来评估不确定度的工作,我们计算了客观分数和0.5的标记,这种打分方式不同于原来的TQS[2],这是因为我们只关注单一类别,不能使用最高分和第二高分的差。此外,我们通过域鉴别器计算域得分,并设置为 =0.75, =0.4,这与TQS相同。为了与TQS保持一致,我们使用源域数据和选择的目标数据来微调在源域上训练的检测器。

CLUE[3]使用不确定性加权聚类来选择目标数据。按照这个思路,我们首先通过计算NMS后的预测熵来获得每帧的不确定性,然后用熵的平均值来表示帧级的不确定性。此外,利用CLUE[3]提出的加权K-Means和K个中心进行聚类,其中K表示当前采样时刻的标注预算。

● 3DTrans@ADA实验结果
Waymo->KITTI:

1.2.3 3DTrans@SSDA

● 入口链接:
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_SSDA.md

● 3DTrans代码库SSDA基线算法的构建:

3DTrans代码库同样支持了多种半监督算法,包括经典的SESS[5]和Pseudo-Label[5]算法。并且我们给出了在Domain Shifts的情况下,该如何使用上述半监督方法来部署模型到目标域。SSDA的技术路线是:源域预训练模型->在1%/5%的带标注目标域数据下微调->在半监督目标域数据下进行重训练。3DTrans支持的半监督算法如下:

SESS[5]是一种在Mean Teacher范式下,引导教师模型和学生模型对于输入数据的随机扰动来保持预测一致性的算法。它设计了一个特定的基于点的数据扰动方案和三种一致性损失,能够使网络生成更准确的进行检测。我们已经在代码库中复现了SESS并将其应用在了跨域检测中。

Pseudo-Label[5]是针对无标签数据非常经典的一种方法,即由初始模型推理无标注数据,从而产生大量伪标签,通过设计的阈值过滤,最终的伪标注数据与带标注数据共同监督网络的训练。我们在代码库中复现Pseudo-Label方法并将其与Mean Teacher框架结合,应用在跨域检测中。

● 3DTrans@SSDA实验结果
Waymo->nuScenes:

1.2.4 3DTrans@MDF

● 入口链接:
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_MDF.md

● 3DTrans代码库MDF基线算法的构建:

3DTrans代码首次支持的3D场景下的MDF任务设定。MDF多域融合是指3D目标检测器在多个数据集上进行联合训练,并且需要尽可能同时在多个数据集实现较高的检测精度。需要注意,相比于Domain Adaptation(DA)领域中的Multi-source Domain Adaptation, 这里所提出的MDF任务不要求不同域之间是close-set闭集关系,即来自于不同域(或数据集)的类别分布式是可以不一致的。相比于Multi-source Domain Adaptation,MDF任务设定弱化了对于不同域之间的数据分布和类别分布的条件限制。

在3DTrans代码库中,我们构建了几种典型的MDF基线模型:

1)Single-dataset training:单数据集训练策略,难以部署到另外的数据集下。

2)Direct Merging:将不同数据集的数据直接合并,并且采用PV-RCNN or Voxel-RCNN等基线模型进行训练,见脚本:slurm_train_multi_db_merge_loss.sh

3)Uni3D训练:将不同数据集的数据直接合并,并采用Dataset-shared Backbones + Dataset-specific Heads的方式进行训练,见脚本:slurm_train_multi_db.sh

● 3DTrans@MDF实验结果(更多结果请参见代码库)
Waymo+nuScenes:

1.2.5 3DTrans@可视化介绍

● 入口链接:
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/QUICK_SEQUENCE_DEMO.md

● 3DTrans代码库UDA基线算法的构建:

目前现有的一些3D点云代码库的可视化模块都是单帧可视化,缺乏针对时序数据的处理。为此,我们在3DTrans代码库中增加了Sequence-level时序级别的可视化UI工具,可视化效果非常直观。目前主要支持对Waymo,ONCE和nuScenes数据集的时序检测结果的可视化。用户可以给定的一个序列ID,来产生对应的可视化内容。

二、Uni3D和Bi3D简要介绍

2.1 Uni3D: CVPR-2023收录

Uni3D是我们针对MDF任务设定,提出的一个通用的解决方案。其可以容易地部署到PV-RCNN、Voxel-RCNN等模型中。另外,我们近期发现其对PV-RCNN++、Centerpoint等基线模型同样有明显提升。详情参考:Uni3D: 首个多数据集3D目标检测框架(已开源)

2.2 Bi3D:CVPR-2023收录

Bi3D是针对ADA任务设定,首次提出的在自动驾驶场景下主动学习解决方案。同样其可以以较低的标注代价来让自动驾驶感知模型适配的没有见过的目标域下。详情参考:Bi3D: 首个主动领域适配3D目标检测算法(已开源)

三、3DTrans正在做什么?

最近火热的ChatGPT/GPT-4等大模型引发了我们对自动驾驶大模型的思考。众所周知,全面、多样的语料库是构建强大、通用的NLP或者跨模态大模型的基石。一些研究表明,如果可以获取到代表力强、差异性强的预训练数据,基础模型的参数量的增加是可以带来预训练性能的提升。

然而,在3D LiDAR自动驾驶场景下,由于不同厂商所提供的原始数据之间的差异很大,导致难以在自动驾驶领域获得一个unified dataset。因此,到目前阶段,我们认为在自动驾驶领域实现通用感知的一个必要路线是进行unified dataset的构建,或者是设计一个unified baseline model使得其可以在带有差异化的数据集中学习到一个unified representations。当然,Uni3D选择了后者。与此同时,我们也并没有放弃对前者的努力,Bi3D就是在探索如何从海量无标注的自动驾驶数据集中挑选出最优价值的数据,这个研究工作的最终目的实际上是为了从目前已知的多个学术数据集中挑选有价值样本,以最小的存储代价构建一个unified dataset。

近期,我们正在探索利用算法从海量自动驾驶数据中挑选出有价值的样本(多样性强、冗余度低),进一步设计有效的解决方案来让模型可以在多源数据中学习到通用表征。“路漫漫其修远矣,吾将上下而求索”,探索自动驾驶感知模型跨传感器、跨数据集、跨任务的通用表征的路途漫长。我们欢迎有相同兴趣爱好的朋友交流、合作、加入我们!(加入我们!)

四、致谢与开发团队

感谢闫翔超(Shanghai AI Laboratory),袁家康(复旦大学),费奔(复旦大学),黄思渊(上海交通大学)和周鸿斌(Shanghai AI Laboratory)对开发3DTrans所做出的贡献。

3DTrans团队开发成员信息:
https://bobrown.github.io/Team_3DTrans.github.io/

此外,我们的3DTrans代码库是基于OpenPCDetv0.5.2(https://github.com/open-mmlab/OpenPCDet/tree/v0.5.2)进行开发,感谢OpenPCDet开发团队的出色代码库。

同时,我们也想利用这个机会感谢ONCE开发团队(https://once-for-auto-driving.github.io/),其公开的大规模数据集支持了3DTrans团队对AD场景下预训练任务的研究。

参考文献:
[1] Jihan Yang, Shaoshuai Shi, Zhe Wang, Hongsheng Li, Xiaojuan Qi. ST3D: Self-training for Unsupervised Domain Adaptation on 3D Object Detection.
[2] Bo Fu, Zhangjie Cao, Jianmin Wang, and Mingsheng Long. Transferable Query Selection for Active Domain Adaptation.
[3] Viraj Prabhu, Arjun Chandrasekaran, Kate Saenko, Judy Hoffman. Active Domain Adaptation via Clustering Uncertainty-weighted Embeddings.
[4] Yan Wang, Xiangyu Chen, Yurong You, Li Erran, Bharath Hariharan, Mark Campbell, Kilian Q. Weinberger, Wei-Lun Chao. Train in Germany, Test in The USA: Making 3D Object Detectors Generalize.
[5] Na Zhao, Tat-Seng Chua, Gim Hee Lee. SESS: Self-Ensembling Semi-Supervised 3D Object Detection.
[6] Antti Tarvainen, Harri Valpola. Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results.
[7] Saining Xie, Jiatao Gu, Demi Guo, Charles R. Qi, Leonidas J. Guibas, Or Litany. PointContrast: Unsupervised Pre-training for 3D Point Cloud Understanding

ning results.
[7] Saining Xie, Jiatao Gu, Demi Guo, Charles R. Qi, Leonidas J. Guibas, Or Litany. PointContrast: Unsupervised Pre-training for 3D Point Cloud Understanding

作者丨上海人工智能实验室智能交通平台组(ADLab)

动量因子在A股市场的有效性分析:量化实证研究 验证动量因子在A股市场的有效性及时间周期性分析不同时间窗口(短期/中期/长期)对动量效应的影响量化交易成本、市场流动性对动量策略收益的侵蚀程度比较A股与成熟市场(如美股)动量效应的差异特征理论框架:行为金融学解释动量效应的产生机制技术实现:Python全流程代码实现动量因子计算与回测实证分析:统计检验、风险收益指标、敏感性分析应用拓展:结合市场微观结构的策略优化方案动量因子(Momentum Factor) 阅读详情

相关推荐

【5G NB-IoT NTN】3GPP R17 NB-IoT NTN介绍_nbiot ntn

在3GPP R17协议中,将NB-IoT集成到了NTN(非陆地网络,即卫星通信)中,并定义了一个系统架构。在这个架构中包括一个可配置再生payload的低轨道(LEO)卫星,这意味着该卫星可以执行传统基站的全部或部分功能。该系统架构还可以适配同步轨道(GEO)卫星,这些卫星与LEO卫星类似,也可以配置再生payload。系统高度范围轨道波束覆盖范围LEO300~1500km绕地球转100~1000kmGEO35786km与地球自转同步200~3500km。

2401_84010302的博客 3568

CVPR 2023 | Uni3D: 首个多数据集3D目标检测框架

点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达点击进入—>【3D目标检测】微信技术交流群本文将为大家介绍上海人工智能实验室交通平台组ADLab-CVPR-2023最新中稿论文-Uni3D,以及3DTrans代码库中关于Multi-dataset 3D Detection算法的构建。Uni3D: A Unified Baseline for Multi-dataset 3...

阿木寺的博客 2896

告别手动刷金币:零代码配置实现番茄小说自动化任务

本文详细介绍如何利用零代码配置工具实现番茄小说自动化任务,告别手动刷金币的烦恼。通过冰狐智能辅助工具的可视化配置和元数据复用功能,用户无需编程基础即可快速设置自动签到、观看广告等任务流程,大幅提升效率并避免断签风险。

weixin_42522953的博客 295

如何利用DGCNN实现工业3D零件分割:完整实战指南

在智能制造和工业4.0时代,**3D零件分割技术**正成为工业检测领域的革命性工具。今天,我们将深入探讨**动态图卷积神经网络(DGCNN)**这一先进的深度学习模型,以及它如何在工业检测中实现精准的3D零件分割。DGCNN通过动态构建点云图结构,能够高效处理复杂的工业零件点云数据,为自动化检测提供强大支持。 ## 📊 什么是DGCNN及其在工业检测中的优势 **动态图卷积神经网络(DGCN

gitblog_00669的博客 521

Golang实战:用Quic-Go v0.46.0搭建高性能文件传输服务(附完整代码)

本文详细介绍了如何使用Golang和Quic-Go v0.46.0构建高性能文件传输服务,涵盖服务端和客户端的完整实现。通过QUIC协议的多路复用、零RTT连接等特性,显著提升文件传输效率,特别适合高延迟或不稳定网络环境。文章提供完整代码示例和性能调优技巧,帮助开发者快速部署高效的文件传输解决方案。

weixin_33737134的博客 448

用户画像标签维度_搭建电商平台用户画像标签体系

01 整体思路电商平台连接了卖家和买家两端,最终目的都是促进交易,从而追求更高的销售额。提高人货匹配度是促进交易的关键,而提高人货匹配度的关键就是“让买家找到想要的货物”。本文结合“人、货、场”理论模型,尝试建立电商平台的用户画像标签体系。02 三类标签用户在平台购物的整体流程可以概括为:进入平台、选择商品、下单付款。可以将该过程抽象为“人、货、场”。即用户通过什么途径进入什么商品的页面...

weixin_31668621的博客 1642

YimMenu架构解析:3步掌握GTA5游戏增强新维度

YimMenu是一款专为GTA5设计的开源增强工具,通过创新的三层架构设计,为用户提供全面的游戏保护、功能扩展和个性化定制体验。这款工具不仅能够有效防御各种崩溃攻击,还通过模块化设计实现了游戏体验的全面升级,让玩家在洛圣都的世界中享受更安全、更丰富的游戏乐趣。 ## 颠覆性功能概览:重新定义游戏增强边界 YimMenu采用创新的三层架构设计,将游戏增强功能分为核心保护层、功能扩展层和个性化定制

gitblog_00348的博客 327

Keil5调试遇坑记:手把手解决J-Link驱动与固件版本冲突(附老版本驱动包)

本文详细解析了Keil5与J-Link调试器版本冲突问题,特别是当出现'The connected J-Link is defective'警告时的解决方案。通过对比升级固件与降级驱动的优缺点,提供了详细的J-Link驱动降级操作指南,包括获取老版本驱动、替换步骤及常见问题排查,帮助开发者高效解决这一常见调试障碍。

metaverse5vr的博客 107

TEngine项目结构解析:如何组织大型Unity项目的10个关键要点

想要构建一个高效、可维护的大型Unity项目吗?TEngine作为一款**Unity商用级别开发框架**,原生内置AI工作流支持,集成了HybridCLR高性能热更、Obfuz代码混淆加固、YooAssets企业级资源管理方案,为您提供了一套完整的工业化开发解决方案。本文将深入解析TEngine的**项目结构组织**,帮助您掌握大型Unity项目的架构设计精髓。 ## 🏗️ TEngine框架

gitblog_01134的博客 806

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

算法如诗的博客 1299

基于Termux的Android平台OpenClaw部署:移动端AI助理实现

本文介绍了在Android设备上通过Termux部署OpenClaw AI助理的方案。Android设备的便携性、Termux提供的完整Linux环境以及多样化的硬件配置使其成为理想的部署平台。文章详细分析了不同级别Android设备的硬件规格(从入门级到旗舰级),并提供了最低/推荐配置要求。部署步骤包括Termux安装初始化、Python环境配置以及性能优化建议。该方案充分利用Android设备的传感器和电池供电优势,为移动办公、学习等场景提供了低成本、高便携性的AI助理解决方案。

博客 3011

STM32L1xx HAL-LL 驱动组件深度解析:从 STM32Cube 生态到 Arduino_Core_STM32 的集成实践

本文围绕 Arduino_Core_STM32 仓库内随附的 **stm32l1xx_hal_driver MCU 组件**(对应 STM32CubeL1 软件包中的 HAL-LL Drivers 部分),系统讲解 STM32Cube 的发布模型、HAL/LL 两套驱动的架构定位、官方版本兼容矩阵,并深入仓库源码说明该组件如何通过 `stm32l1xx_hal_conf.h` 配置链路与 CMak

gitblog_00586的博客 359

微信公众号 - 解决报错 “err_msg“:“system:access_denied“,微信环境浏览器真机使用微信支付、微信授权登录、分享朋友圈转发好友报错system:access_denied

微信公众号,微信网页,手机h5网页,微信报错,system:access_denied,微信支付,提示报错,微信登录授权报错,微信朋友圈分享,微信转发,WeixinJSBridge,微信环境下,微信内置浏览器,微信公众号项目报错system:access_denied,如何解决,invoke(),API调用后出现报错,微信内部H5 WeixinJSBridge.invoke system:access_denied,使用微信jssdk时报access_denied错误,还是报错,真机运行,真机调试api返回

🏆 前端领域优质创作者 1万+

CVPR2023 |利用多样性3D感知数据!3DTrans解决当前感知任务局限性

点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取今天为汽车人邀请来了上海人工智能实验室的青年研究员『张铂』,为大家分享3DTrans:自动驾驶场景下的通用表征学习!有兴趣分享学术成果的朋友,请联系AIDriver002!...

CV_Autobot的博客 202

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)...

背景介绍3D检测用于获取物体在三维空间中的位置和类别信息,主要基于点云、双目、单目和多模态数据等方式。其中,点云数据由于具有较为丰富的几何信息,相比于其它单模态数据更为稳定,基于激光雷达点...

3D视觉工坊 1078

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

论文笔记1——SSDA-YOLO: SEMI-SUPERVISED DOMAIN ADAPTIVE YOLO FOR CROSS-DOMAIN OBJECT DETECTION

DAOD的目的是目的缓解跨域差异导致的传输性能下降,目前的DAOD方法大多数是过时、计算量大的两阶段检测器Faster-rcnn,本文提出了半监督的域自适应YOLO方法,使用一阶段的检测器YOLOv5。具体,将知识蒸馏框架与MT模型相结合,帮助学生模型获得未标记目标领域的实例级特征,利用风格迁移转换在不同域交叉生成伪图像,弥补图像级差异。

当代优秀青年的学习博客 3607

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

还不知道transform 3D转换怎么用?看这个就够了

还不知道transform 3D转换怎么用?看这个就够了

欢迎访问我的主页:https://www.bookbook.cc 9796

实时3D检测!DASE-ProPillars:PointPillars的域适应改进

点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取点击进入→自动驾驶之心【3D目标检测】技术交流群后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!这项工作旨在解决使用LiDAR进行3D检测的领域自适应方面的挑战。作者设计了DASE-ProPillars模型,可以实时检测基于激光雷达中的车辆。DASE-ProPillars使用PointPillars作为基线模型...

CV_Autobot的博客 1577

【论文推荐】了解《领域自适应点云处理》必看的6篇论文【附打包下载地址】...

论文推荐“SFFAI107期来自香港大学的杨霁晗推荐的文章主要关注于计算机视觉的点云处理领域,你可以认真阅读讲者推荐的论文,来与讲者及同行线上交流哦。”关注文章公众号回复&#34;SFFA...

weixin_48294000的博客 555

详解IE10 下CSS3 3D变换(3D transfrom)及实例教程

详解IE10 下CSS3 3D变换(3D transfrom)及实例教程,本文章所有实例均可无需修改,直接运行.      自2011年4月,微软在其召开的MIX11技术大会上发布了IE10浏览器的首个平台预览版,并宣布面向公众开放免费下载,并随后陆续发布了一系列的预览版,IE10在硬件加速、数据处理速度、网站页面打开速度上都有了提升,在页面处理和视觉处理功能上也进行了加强。 但令开发者关

liwei3gjob的专栏 9567

迁移学习(Transfer),面试看这些就够了!(附代码)

文章目录1. 什么是迁移学习2. 为什么需要迁移学习?3. 迁移学习的基本问题有哪些?4. 迁移学习有哪些常用概念?5. 迁移学习与传统机器学习有什么区别?6. 迁移学习的核心及度量准则?7. 迁移学习与其他概念的区别?8. 什么情况下可以使用迁移学习?9. 什么是finetune?10. 什么是深度网络自适应?11. GAN在迁移学习中的应用12. 代码实现13. 参考文献 1. 什么是迁移学习...

mantch 1万+

迁移学习:他山之石,可以攻玉【VALSE Webinar】Panel实录

编者按:迁移学习是机器学习与计算机视觉中的重要研究问题之一,旨在研究如何将一个领域的知识迁移到另外的领域,具有重要的研究意义与应用价值。但迁移学习又会存在哪些局限性?在实际应用中的价值是...

深度学习大讲堂 1455

迁移学习“Partial Transfer Learning with Selective Adversarial Networks”

Partial Transfer Learning with Selective Adversarial Networks 摘要:对抗学习应用于深度网络中学习可迁移的特征初有成效,它降低了源域及目标域之间的分布差异。目前已有的对抗网络假设源域和目标域共享全部的标记空间。在迁移过程中,源域中类别往往很多,而目标域通常只和源域其中一小部分相关,直接迁移肯定会产生负迁移的影响。论文提出了部分迁移学习...

cv_family_z的博客 2053

小样本点云深度学习库_【基于迁移学习的小样本机载激光雷达点云分类】ExistingairborneLiDARpointcloudclassificationmethodsbasedondeeplear...

【1】Zhao Z F. Research on road extraction based on airborne LiDAR point cloud [D]. Kunming: Kunming University of Science and Technology. 2012.赵振峰. 基于机载LiDAR点云的道路提取研究 [D]. 昆明: 昆明理工大学. 2012.【7】Zhang J X...

weixin_35347870的博客 510

动手学PaddlePaddle(5):迁移学习

本次练习,用迁移学习思想,结合paddle框架,来实现图像的分类。 相关理论: 1. 原有模型作为一个特征提取器: 使用一个用ImageNet数据集提前训练(pre-trained)好的CNN,再除去最后一层全连接层(fully-connected layer),即除去原有的分类器部分。然后再用剩下的神经网络作为特征提取器应用在新的数据集上。我们只需要用新的训练集训练一个嫁接到这个特征提取...

10点43的博客 3499

3D ACIS Modeler 在测量软件里怎么用?几何查询、区域判断与测点布点

本文面向测量软件开发团队,梳理 CAD 模型导入三坐标测量软件后的几何判断工作:如何借助 3D ACIS Modeler 完成模型对象访问、测量区域判断与空间关系分析,并结合 LK Metrology CAMIO 官方案例说明内核与应用的分工,最后给出自研与引入内核的评估思路。

HuiduCADTech的博客 325
上一篇: 首个开源室外点云分割工具箱,提供多篇论文算法的强基线复现模型!(已开源)
下一篇: 资源盘点丨9个经典视觉-语言多模态预训练数据集
OpenDataLab
博客等级 码龄4年 636粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值