单张图人体重建Convolutional Mesh Regression for Single-Image Human Shape Reconstruction

本文介绍一种从单张图像进行3D人体姿态和形状估计的新方法,避免了复杂参数回归,转而直接预测SMPL模板mesh顶点的3D位置。采用图卷积神经网络,有效处理mesh结构,实现高精度的3D重建和实时性能。

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

工程地址:https://www.seas.upenn.edu/~nkolot/projects/cmr/

摘要

        这篇文章目的解决问题3D人体姿态和形状估计从单张图像上。先前的方法考虑一个参数模型的人体框架,SMPL以及使用回归模型参数给上升到mesh一致图像证明。这个参数回归是一个非常具有挑战的任务,使用模型基础的方法性能偏低对比非参数方法就姿态估计。在我们的工作中,我们提出了较少依赖模型的参数空间。我们仍然使用这个技术SMPL模板mesh,而不是预测模型参数,我们使用回归3D位置mesh顶点。这是一个困难的任务对于一个类型的网络,但是我们关键观点是回归变得重要容易使用一个图CNN。这个框架允许我们去清楚编码模板mesh框架在网络内核利用空间位置mesh去提供。基于图像特征得到mesh的顶点,以及图-CNN是合理去处理他们在mesh结构,对比回归目标每个顶点是它的3D位置。已经修复完整的3D几何的mesh,如果我们仍然需要一个特定的模型参数,这个能回归从顶点位置。我们证明灵活和有效对于我们提出的基于图mesh回归通过获得不同类型的特征在mesh顶点。在所有情况,我们优于对比基准依赖于模型参数回归,对比我们也实现实时的结果远超于基于模型的人体姿态估计。

输入图像生成人体3D模型

        给定一张输入图像我们直接回归一个3D形状使用图卷积。另外,从3D形状输出我们能够回归参数化展示一个身体模型。

系统框架

预测SMPL参数从回归形状

 

重建精度比较

 

效果展示

更多《计算机视觉与图形学》知识,可关注下方公众号:
在这里插入图片描述

### 双回归网络在单像超分辨率中的应用 双回归网络(Dual Regression Networks, DRN)是一种针对单像超分辨率(Single Image Super-Resolution, SISR)问题设计的创新方法[^1]。SISR 的目标是从低分辨率(Low Resolution, LR)像恢复高质量的高分辨率(High Resolution, HR)像。然而,这一任务面临两大挑战:一是由于 SISR 是一个“病态”问题,即一张 LR 像可能对应多张不同的 HR 像;二是实际场景中难以获取成对的 LR 和 HR 数据集,这使得模型难以适应真实的退化情况。 #### 闭合环路的重要性 为了应对这些挑战,DRN 提出了基于闭合环路(Closed-loop)的设计理念。具体来说,该方法通过构一个闭环结构来增强 SR 性能[^2]。这种闭环机制的核心在于引入了一个额外的约束条件——通过对生成的 HR 像进行下采样以重原始 LR 输入像。理论上,如果从 LR 到 HR 的映射是最优解,则经过下采样的 HR 输出应尽可能接近输入的 LR 像。此约束不仅有助于评估潜在的下采样核,还能显著减少可能的映射空间,从而提高 LR 至 HR 映射的质量[^3]。 #### 对偶回归方案 DRN 中的关键技术是对偶回归方案(Dual Regression Scheme)。它由两部分组成: 1. **前向路径** 前向路径负责将 LR 像上采样至 HR 尺寸。这部分通常采用卷积神经网络(Convolutional Neural Network, CNN),其目的是学习一种有效的 LR→HR 映射函数[^4]。 2. **反向路径** 反向路径则专注于将生成的 HR 像重新下采样回 LR 空间,并尝试使其与初始 LR 输入保持一致。这种方法有效地形成了一个闭环反馈系统,允许模型自我校正并优化最终结果[^5]。 通过这种方式,DRN 能够仅依赖于 LR 像本身完成端到端的学习过程,无需显式的退化先验或复杂的配对数据收集流程。此外,这种方法还表现出较强的泛化能力,在处理真实世界的数据时具有良好的鲁棒性和适应性。 ```python import torch.nn as nn class DualRegressionNetwork(nn.Module): def __init__(self): super(DualRegressionNetwork, self).__init__() # 定义前向路径 (LR -> HR) self.forward_path = nn.Sequential( nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1), nn.ReLU(), nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True) ) # 定义反向路径 (HR -> LR') self.backward_path = nn.Sequential( nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1), nn.ReLU(), nn.AvgPool2d(kernel_size=2, stride=2) ) def forward(self, lr_image): hr_output = self.forward_path(lr_image) # 前向路径生成 HR 像 reconstructed_lr = self.backward_path(hr_output) # 反向路径重构 LR 像 return hr_output, reconstructed_lr ``` 以上代码片段展示了 DRN 的基本架构实现方式。`forward_path` 表示从前向路径生成 HR 像的过程,而 `backward_path` 则表示从 HR 像返回 LR 像的操作。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值