【2018ECCV】DeepIM:深度迭代匹配进行物体6D姿态估计

基于深度学习的姿态估计与行为识别技术 姿态估计与行为识别技术可以通过分析人体的姿态和动作,实现对人类行为的理解和识别。本文将介绍基于深度学习的姿态估计与行为识别技术的原理、方法和应用,探讨其在未来的发展方向。通过训练大规模的姿态标注数据集,深度学习模型可以学习到人体关键点的空间位置和相对关系,从而实现对人体姿态的准确估计。在姿态估计与行为识别技术中,深度学习可以通过学习大量的标注数据,自动地从图像或视频中提取特征,并进行姿态估计和行为识别。相比传统的方法,基于深度学习的姿态估计与行为识别技术具有更高的准确性和鲁棒性。 阅读详情

本文同步于微信公众号:3D视觉前沿,欢迎大家关注。

在这里插入图片描述

摘要

在机器人操作和虚拟现实应用中,从图像中估计物体的6D位姿是一个非常重要的问题。鉴于直接从图像中回归得到的物体姿态精度不高,如果将输入图像和物体渲染得到的图像进行匹配,则能够得到精确的结果。在本文中,作者提出了一种叫做DeepIM的深度神经网络:给定一个初始位姿,网络能将观测图像和渲染得到的图像匹配,迭代地优化位姿。网络训练后能够预测一个相对的姿态变换,使用了一种解耦表示的3D坐标和3D朝向,并且使用了一种迭代的训练过程。本文在用于6D位姿估计的两个基准数据集上证明了DeepIM实现了较当前算法精度的极大提升,而且DeepIM有效处理之前未见到的物体。

1 问题提出

物体6D位姿估计的方法依据物体的纹理情况可以分为两大类:针对丰富纹理的物体以及针对弱纹理或无纹理物体。前者通过局部特征匹配来寻找到2D图像和3D物体点之间的对应,使用PnP方法解决;后者可分为两种方法:一种估计输入图像中的像素点或者物体的关键点对应的3D模型坐标系;另一种离散化位姿空间,将问题转变成姿态回归问题。这两种方法能够处理无纹理物体,但由于在分类或者回归阶段存在小误差,导致位姿不匹配,不能得到精确位姿。常见的后优化方法使用手动设置的图像特征匹配,或者使用代价函数,精度都不高。因此本文提出了一种基于深度神经网络的位姿优化技术,迭代地进行6D位姿的估计,提高位姿精度。

本篇论文的核心贡献如下:

  • 提出了一种深度网络迭代地进行图像中物体位姿的优化,不需要任何手工设计的图像特征,能够自动地学习一种内部优化机制;
  • 提出了一种对于位姿SE(3)的分别表示变换,描述物体位姿见的变换。这种变换允许对于位姿物体姿态的优化;
  • 在LINEMOD和Occlusion数据集上评估了算法的精度以及其他特性,显示提出算法达到了基于RGB图像估计位姿方法的最优,而且在未知物体上得到的精度也很高。

2 算法综述

给定图像中一个物体的初始6D位姿,DeepIM能够将物体渲染得到的图像和当前观测的图像匹配,预测一个相对的SE(3)变换;之后迭代地根据估计的更为精确的位姿重新渲染物体得到渲染图像,并和观测图像相匹配,从而会变得越来越相似,使网络得到越来越精确的位姿。整体框架如下图所示:
在这里插入图片描述
图1 算法框架

网络的输入:观测的RGB图像以及图像中物体位姿的初始估计值;网络输出:相对的SE(3)变换,可以直接作用于初始位姿以提高估计位姿的精度;

以下通过五部分介绍: a.观测图像和渲染图像的放大策略; b.进行位姿匹配的网络结果; c.一种SE(3)变换的分开表示; d.以及一种用于位姿回归的新的损失函数; e.介绍网络的训练过程并且测试网络。

2.1 高精度图像放大

为了在进行位姿匹配时获取足够多的细节,在将观测图像和渲染得到的图像送入网络前,我们将他们放大;特别地,再第iii次迭代匹配过程中,给定上一步得到的6D的位姿估计p(i−1)p_{(i-1)}p(i−1)​,我们将3D物体模型,根据p(i−1)p_{(i-1)}p(i−1)​渲染得到一个合成的图像;之后,我们额外地为观测图像和渲染图像生成一个前景的蒙板。 这四张图像再使用一个将蒙板扩大后的包围盒裁剪。最后,我们放大并且进行双线性上采样得到和原始输入图像一样的尺寸(480*640)。重要地,物体的比例不发生变化。
在这里插入图片描述
图2 输入图像放大策略

2.2 网络结构
  • 观测图像、渲染图像以及对应的蒙板区域串联形成一个8通道(观测和渲染图像各自具有3通道,蒙板具有1通道)的张量,输入进网络;鉴于使用VGG16的图像分类网络作为支撑网络的效果不好,因此本文使用预测图像间光流的FlowNetSimple架构作为支撑网络;位姿估计分支将由FlowNetSimple网络的11层卷积层得到的特征图作为输入,之后经过2个256维的全连接层,再分别由两个全连接层得到四元数表示的3D旋转和3D平移;

  • 在训练过程中,我们增加了两个辅助的分支来归一化网络的特征表示以提高训练的稳定性。一个分支训练后预测渲染图像和观测图像的光流,另一个分支预测观测图像的前景蒙板;
    在这里插入图片描述
    图3 相对姿态估计网络

2.3 解耦的变换表示

当前物体位姿和目标物体位姿之间的SE(3)SE(3)SE(3)变换△p△p△p的表现形式具有重要意义。希望能够具有以下特性:和3D物体模型的局部坐标系无关;由网络预测得到的位姿变化应该和图像的变换一致。因此,本文提出将相对旋转R和相对平移t解耦表示。对于旋转,首先将相机帧的原点平移到相机帧中物体的中心(根据当前估计位姿得到),这样的话,旋转变化不会改变物体的平移;其后设置旋转轴为平行于相机坐标系的轴,这样和3D物体模型的坐标系无关。对于平移,训练网络之间回归得到相对变换t=(vx,vy,vz)t=(v_x, v_y, v_z)t=(vx​,vy​,vz​),其中,vxv_xvx​和vyv_yvy​代表着想x轴和y轴方向物体平移的像素,vzv_zvz​代表物体的尺度变化:
在这里插入图片描述
其中,fxf_xfx​和fyf_yfy​代表相机的焦距。

这种表示方法具有很多好处:旋转不影响平移;中间变量(vx,vy,vz)(v_x, v_y, v_z)(vx​,vy​,vz​)代表了图像空间简单的平移和尺度变化;这种表示不需要物体的任何先验信息,也能够适用于具有相同外表但尺度不同的物体。

2.4 匹配损失

将平移和旋转分别计算损失很直观,但是对他们进行平衡非常困难;鉴于我们想精确预测物体在3D空间中的位姿,我们对几何投影误差进行修改,成为点匹配损失:
在这里插入图片描述
其中p[RT]p_{[RT]}p[RT]​代表的是真值位姿,p^=[R^t^]\hat p = [\hat R\hat t]p^​=[R^t^]代表的是估计的位姿,xjx_jxj​代表物体模型上的随机3D点,$$n代表了用于计算损失的点数目。计算3D点根据真值位姿和估计位姿变换后的L1距离误差。

2.5 训练和测试
  • 训练数据:3D物体模型和标记真值物体位姿的图像;通过增加噪声,我们得到初始位姿,并且可以生成观测图像和渲染图像,也可以得到需要输出的位姿变换,也即真值位姿和加噪声位姿之间的变换;
  • 测试:训练时使用单次迭代效果不明显,因此在训练时也通过多次迭代的方式,最后使得训练数据更好的代表了测试分布,也得到了更为精确的结果。

3 实验结果

在LINEMOD数据集和Occlusion LINEMOD数据集上进行评测,比其他RGB-only方法效果好了很多,也能够实现未知物体的预测。

  • 实现细节:使用FlowNet中的光流损失Lflow以及S形交叉熵损失作为蒙板损失Lmask,最终整体损失如下:
    在这里插入图片描述
  • 实验中设置a=0.1,b=0.25,r=0.03。实验中使用PoseCNN的结果作为初始位姿,在1080TiGPU上迭代两次时,能实现12fps. 后续实验中,网络迭代四次。

实验中设置a=0.1,b=0.25,r=0.03。实验中使用PoseCNN的结果作为初始位姿,在1080TiGPU上迭代两次时,能实现12fps.

  • LINEMOD数据集实验
    在这里插入图片描述
    表1 LINOMOD数据集对比结果
  • Occlusion LINEMOD数据集实验
    在这里插入图片描述
    图4 Occlusion LINEMOD数据集对比结果
    在这里插入图片描述
    图5 Occlusion LINEMOD数据集位姿结果
  • 未训练物体的姿态估计
    Fig6
    图6 未参与训练3D模型位姿结果(红线代表初始位姿,绿线代表我们优化后的位姿)

4 总结

  • 提出了DeepIM框架,仅使用RGB图像迭代地匹配以估计位姿;能够得到和基于RGB-D图像的位姿估计算法相当的精度;
  • 未来研究方向:可以使用双目版本的DeepIM提高位姿精度;为仅使用RGB图像得到精确的6D位姿提供了可能,可使用高分辨率高帧率宽视野的相机采集数据;
  • 论文源代码地址:https://github.com/liyi14/mx-DeepIM。

本文中所有图片均引自改论文。本解读只讲述核心观点,如需深入了解,可阅读原始论文。如有问题,请随时交流,如有错误,请随时指正。

【论文阅读】DeepIM: Deep Iterative Matching for 6D Pose Estimation 2018年ECCV一篇十分经典的6D位姿估计/追踪的文章,至今仍是SOTA 阅读详情

相关推荐

DeepIM: Deep Iterative Matching for 6D Pose Estimation论文理解

https://github.com/liyi14/mx-DeepIM

给时光以生命 2068

物体姿态估计——DeepIM

原文链接:https://blog.youkuaiyun.com/u013841196/article/details/82949927 DeepIM: Deep Iterative Matching for 6D Pose Estimation 2018,Yi Li et al. DeepIM 1.引言: 本文,作者提出了一种新的深度神经网络对物体的6D姿态(3D位置和3D方向)进行估计,命名为De...

航天爱好者|雷达电子战 |分享可复现的踩坑笔记 1367

mx-DeepIM:用于6D姿势估计的深度迭代匹配

DeepIM:用于6D姿势估计的深度迭代匹配 伊莉,古王,季向阳,于翔和迪特·福克斯。 在ECCV,2018年 , 这是MXNet的官方实现,主要由和开发和维护。 新闻(2020-12-04): 的DeepIM的PyTorch实现已发布()! 引用DeepIM 如果您发现DeepIM对您的研究有用,请考虑引用以下内容: @inproceedings{li2018deepim, title = {DeepIM: Deep Iterative Matching for 6D Pose Estimation}, author = {Yi Li and Gu Wang and Xiangyang Ji and Yu Xiang and Dieter Fox}, booktitle = {European Conference on Computer Vision (ECCV)

计算机视觉算法中的 相机姿态估计(Camera Pose Estimation)

另外,相机姿态估计是一个复杂的问题,还有其他更复杂的算法和方法可供选择,如PnP算法、EPnP算法、直接法(如ORB-SLAM)等。相机姿态估计,即相机位姿估计,是指通过计算机视觉算法来确定相机在世界坐标系中的位置和方向。一般情况下,我们可以将相机的姿态表示为一个4×4的变换矩阵,即相机的位姿矩阵。它通过检测图像中的特征点,并找到两幅图像之间对应的特征点,然后利用这些特征点的几何关系来估计相机的姿态。通过估计相机的姿态,可以根据相机的位置和朝向来确定虚拟对象的位置和姿态,从而实现虚拟对象与实际场景的融合。

牛肉胡辣汤 9837

一种基于迭代的匹配追踪算法

一种迭代的贪婪算法,可用于稀疏分解,线性调频信号的稀疏分解,多项式相位信号的稀疏分解,并可以根据分解后的原子估计信号参数

迭代最邻近匹配算法(icp)及三维人脸匹配实例

该博客代码http://blog.youkuaiyun.com/u011772859/article/details/44885675,实现了icp,并附一个非常简单的例程

推荐文章:深度迭代匹配——DeepIM:六自由度姿态估计的利器

推荐文章:深度迭代匹配——DeepIM:六自由度姿态估计的利器 在三维视觉领域,准确的物体姿态估计一直是挑战重重的研究前沿。今天,我们向您隆重推荐一款开源项目——DeepIM: Deep Iterative Matching for 6D Pose Estimation,该算法由Yi Li等学者提出,并在2018年的欧洲计算机视觉会议(ECCV)上发表。其创新性的深度迭代匹配方法,为6D姿态估计算...

gitblog_00182的博客 804

深入解析FPGA中的GTX高速收发器架构与设计原理

本文深入解析了FPGA中GTX高速收发器的核心架构与设计原理。文章将GTX比作数据“高速公路”,详细拆解了其PMA(物理媒介适配层)与PCS(物理编码子层)的双层结构,阐述了串并转换、时钟恢复等关键技术,并提供了时钟源选型(QPLL/CPLL)、上电复位流程及信号完整性调试等实战指南,是掌握高速接口设计的必备知识。

f6g7h8i9j的博客 219

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

在这项工作中,作者引入了DeepIM,一个新的框架迭代的姿态匹配只使用RGB图像。给定目标的初始6D位姿估计,设计了`一种新的深度神经网络`,`直接输出相对位姿变换`,改进了位姿估计,网络在训练过程中自动学习匹配目标的姿态。作者引入了`一个解耦的pose表示`,它也独立于物体大小和三维物体模型的坐标系,这样,网络甚至可以匹配不可见物体的姿态。

不忘初心~ 1725

DEA各种模型原理及stata代码实现

DEA各种模型原理及stata代码实现DEA各种模型原理及stata代码实现一、CCR和BCC1.原理2.效率测算stata代码3.Malmquist指数3.1M指数3.2Global-Malmquist指数4.指数计算代码与案例二、SBM模型1.原理2.stata代码实现三、方向性距离函数(DDF)1.原理2.stata代码实现3.非径向DDF模型(NDDF)3.GML指数4.指数测算四、总结 DEA各种模型原理及stata代码实现 一、CCR和BCC 1.原理 CCR模型产出导向下的效率通过求解以下规划

wonder1322的博客 4万+

图像去噪实战:Noise2Noise与Noise2Void在医学影像中的应用(附代码)

本文深入探讨了Noise2Noise与Noise2Void在医学影像去噪中的革命性应用,通过自监督学习技术有效解决临床数据配对难题。文章提供详细的代码实现和临床部署方案,展示如何提升低剂量CT、MRI等影像的诊断质量,特别适用于辐射敏感场景和急诊快速处理。

weixin_29092579的博客 241

探索深度匹配:DeepIM——6D姿态估计的迭代匹配解决方案

探索深度匹配:DeepIM——6D姿态估计的迭代匹配解决方案 项目介绍 DeepIM是Yi Li等人在ECCV 2018年提出的一种深度迭代匹配方法,用于精确的6D物体姿态估计。该项目提供了官方的MXNet实现,并由主要开发者Yi Li和Gu Wang维护。最近,它还发布了一个PyTorch版本。DeepIM旨在解决复杂场景中物体定位的问题,包括遮挡物体的6D位置和旋转的估算。 项目技术分析 De...

gitblog_00043的博客 662

地方政府预算数据抓取:利用Python爬虫获取预算安排、资金分配与支出情况

爬虫是通过模拟浏览器行为,从互联网上自动获取数据的程序。在本案例中,我们将通过爬虫从地方政府的官方网站或预算公开平台抓取各类预算信息。这些信息一般以HTML网页的形式呈现,可以通过爬虫对网页内容进行解析,提取所需的预算数据。Python作为数据抓取的强大工具,凭借其简洁的语法、强大的第三方库(如requestsSelenium等)以及丰富的数据处理能力,成为了开发爬虫应用的首选语言。

2201_76125261的博客 941

干货!单目6D物体姿态估计中基于几何指导的直接回归网络

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!目前单目6D物体姿态估计中效果比较好的方案是一类间接法,即先利用CNN预测出关键点建立2D-3D对应关系,然后利用PnP/RANS...

AITIME_HY的博客 1431

37、半导体硅材料中的缺陷与吸杂技术解析

本文系统解析了半导体硅材料中的缺陷形成机制及其对电子器件性能的影响,重点探讨了生长和工艺诱导缺陷、表面与内部微缺陷的起源与特征。文章详细阐述了吸杂技术的原理、过程及在集成电路和太阳能电池制造中的应用,强调通过氧行为调控和热处理优化实现缺陷控制。同时介绍了吸杂效果的评估方法,并展望了未来新型吸杂技术的发展趋势,为提升半导体器件性能和制造良率提供理论支持和技术路径。

mongodb5scout的博客 163

【肝帝一周总结:全网最全最细】十万字python教程,学不会找我!教到你会为止!!内容超多,建议收藏慢慢看!

文章目录前言一定要看python入门python缩进Python注释Python 变量1. 定义理解2. 变量名命名3. 分配多个值4. 输出变量5. 全局变量 前言一定要看 python能干什么?有什么用?好处在哪?不要我讲了,这不是我在博客该讲的,言简意赅就是:通俗易懂,上手快,实用强。我会根据自己个人理解以及国外官网翻译为中文对大家进行讲解。完整源码我也会在最下面带上地址。内容过多,我不会全部演示,你完全可以复制粘贴到自己的pycharm上运行即可。 不管是国内的菜鸟教程还是我在这里的翻译,至少你跟

全栈川川 5万+

常见问题解决方案:mx-DeepIM 项目

常见问题解决方案:mx-DeepIM 项目 mx-DeepIM 是一个基于深度学习的6D姿态估计项目,它主要用于计算机视觉领域,通过迭代匹配方法来准确估计物体的三维姿态。该项目主要使用 Python 作为编程语言,并且依赖于 MXNet 深度学习框架。 1. 项目基础介绍 mx-DeepIM 是由 Yi Li 和 Gu Wang 等人开发的,旨在通过深度迭代匹配技术实现6D姿态估计。项目在 ECC...

gitblog_01113的博客 329

2024美团秋招硬件开发笔试真题及答案解析

在 Linux 内核的网络设备驱动中,数据链路层的功能通常由网络协议栈的低层(如以太网驱动)实现,而不是作为网络设备驱动的一个独立层次。在 FreeRTOS 中,任务通知(Task Notifications)是一种轻量级的事件传递机制,用于在任务之间或任务与中断之间传递信号。小美正在开发一个简单的密码生成器,其中一个功能是将输入的字符串中的所有字母按字母顺序循环前移一位(即 'a' 变为 'z','B' 变为 'A',以此类推)。它包含了网络设备的各种参数和方法,用于管理网络设备的初始化、配置和操作。

XU157303764的博客 1675

LatentFusion:End-to-End Differentiable Reconstruction and Rendering for Unseen Object Pose Estimatio

作者提出了一种新的6D位姿估计框架。设计了一个网络,它`在推理时使用少量的参考视图重建一个对象的潜在3D表示。该网络能够从任意视图中渲染潜在的3D表示`。使用该神经渲染器,可以针对给定输入图像的姿势直接进行优化, 通过使用大量3D形状训练该网络以进行重构和渲染,该网络可以很好地推广到没有见过的对象。另外作者还`提出了一个新的用于不可见目标姿态估计的数据集——MOPED

不忘初心~ 1401

171、运动控制中的标定:摩擦力与死区补偿标定

摘要(149字) 运动控制系统中的摩擦力与死区补偿是提升精度的关键。摩擦力分为静摩擦、库仑摩擦和粘滞摩擦,其中Stribeck效应是低速抖动的主因;死区则表现为控制信号的无效区间。有效标定方法包括恒速测试(摩擦力)和斜坡响应法(死区)。补偿策略需采用分段前馈和动态调整,避免过度补偿导致振荡。实践中要注意机械状态检查、补偿量限幅,并定期重新标定。硬件升级配合算法补偿才能实现最优控制,标定工作应优先于PID参数调整。

m0_50546716的博客 229

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【复现笔记】DeepIM复现过程记录

GitHub - apache/mxnet at fc9e70bf2d349ad4c6cb65ff3f0958e23a7410bf

weixin_54470372的博客 355

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【论文分享-影响力最大化IM:DeepIM】Deep Graph Representation Learning and Optimization for Influence Maximization

基于学习的IM方案根据不同的应用场景设计了不同的目标函数,并且对于所有与节点中心性相关的约束都没有一个定义良好的方案。挑战一:大多数现有的基于学习的IM框架通过计算潜在节点嵌入来选择高影响力的节点。需要先随机选择N组种子节点集合,每组种子记为x(大小不等),使用IC、LT或SIS等传播模型计算出相应的影响扩散y,得到相应的(x,y)对。挑战三:此外,为了减轻P - hard影响估计的计算开销,基于学习的IM方法依赖于传统方法的技术,例如基于代理和基于采样的估计方式,这使得可扩展性和泛化性更差。

weixin_46234454的博客 2679

深度学习工具包 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'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('DeepLearnToolbox'));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('state',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'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',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 = 'sigm';%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, 'Too big error');```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('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';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)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';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, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% 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'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 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, 'Too big error');```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('state',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, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',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, 'Too big error');%% ex3 neural net with dropoutrand('state',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, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % 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, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % 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, 'Too big error');%% 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('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % 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, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

论文阅读笔记《DeepIM: Deep Iterative Matching for 6D Pose Estimation》

核心思想   本文提出一种通过迭代的方式对初始位姿估计结果进行优化的方法(DeepIM)。作者发现目前基于RGB图像的位姿估计算法相对于基于RGB-D图像的位姿估计算法其准确率存在一定的差距,作者认为缺少一种有效的位姿优化方法来解决基于RGB图像位姿估计不准确的问题。作者首先根据初始位姿和目标物体的3D模型,渲染出目标物体在初始位姿下的图像,然后比对初始位姿下的图像和实际观测到的图像之间的差异,如果差异较大则说明初始位姿估计的结果不够准确,反之则位姿估计结果更好。作者利用渲染图像和实际观测图像来预测二者之间

深视 1752

【笔记】基于迭代序列匹配模型的多跳知识库问答

基于迭代序列匹配模型的多跳知识库问答 一、INTRODUCTION 本文提出了一种迭代序列匹配模型来解决这些局限性,并通过实例验证了该方法的有效性。 我们建议迭代地增长最终会导致候选答案的候选关系路径,在每一次迭代中,我们修剪掉不太可能导致正确答案的分支。 我们提出了一种新的增量序列匹配模型,无需重新访问关系路径中的早期关系,即可高效地计算序列匹配分数。 我们提出一种机制来自动确定所需的跳数。我们假设导致正确答案的关系序列在训练期间是已知的。相比之下,我们的方法不需要这些信息进行训练,但我们可以比他们的

TOOY_1011B的博客 421

论文笔记:DeepIM

一句话概括: 仅使用 RGB 图像,对初始的位姿进行迭代优化的方法;也就是 输入目标图像和初始位姿,输出更精确的位姿。 整体框架: network 结构: 主要贡献: 提出了仅使用 RGB 图像的位姿迭代优化方法; 提出了一种解耦的物体位姿变换的方式,以实现精确的姿态估计。这种表示方式也使提出的方法能够优化未见过的对象的姿态。 基于LINEMOD数据集的两种不同 初始姿态生成方法 的消融研究。 注: 文章最初通过向地面真实姿态添加噪声作为初始姿态; 文.

终生学习,终生成长 1426
上一篇: 【2018CVPR】实时单目6D物体姿态估计
下一篇: 刚体6D位姿估计方法综述
Guoguang Du
博客等级 码龄16年 599粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值