【DenseFusion详解】
文章平均质量分 89
Panpanpan!
这个作者很懒,什么都没留下…
展开
-
【DenseFusion系列目录】代码全讲解+可视化+计算评估指标
DenseFusion是2019年李飞飞等提出的用于6D姿态估计的网络。它是一种端到端的结构,输入为RGB-D数据,输出为某个物体的6D姿态。主要贡献就是针对颜色特征和几何特征提出了一种像素级稠密融合的方式。在LineMOD数据集和YCB-Video数据集上进行了实验。本文对该网络进行完整的复现,详细解析了源代码中的重要内容。由于本人刚接触姿态估计方面的内容,因此有些解析部分包含很基础的知识,放在【DenseFusion详解】专栏。除此之外,本文在源代码的基础上进行了后续评价指标的计算以及结果的可视化,这些原创 2022-06-06 16:56:45 · 6620 阅读 · 1 评论 -
【DenseFusion代码详解】测试过程eval_linemod.py
该部分是对LineMod数据集训练结束之后的模型进行评估,代码位置在tools/eval_linemod.py训练部分包括train和test,评估过程是eval,eval和test的不同之处,浅浅理解就是test过程还是会改变权值,但eval固定权值不变。首先是在.sh文件中可以设置的变量,有数据集路径、保存的训练好的PoseNet模型,保存的训练好的PoseRefineNet模型。然后设置物体类别数、类别编号列表、点云数、refine过程的循环次数、批量大小、数据集config文件路径、输出原创 2022-06-05 13:32:15 · 1070 阅读 · 0 评论 -
【DenseFusion代码详解】refine过程loss计算
该部分是对refine网络部分的loss进行计算。代码位置在lib/loss_refiner.py什么时候进行loss_refiner的计算呢?如果refine过程没有开始,则进行的是PoseNet—loss—loss.backward()过程,如果开始了refine过程,则主干网络停止训练,改为eval模式,PoseRefineNet改为train模式,经过PoseNet—loss之后,将loss所输出的new_points输入到PoseRefineNet中进行训练,输出预测的姿态,然后就应该计算原创 2022-06-05 13:31:39 · 685 阅读 · 0 评论 -
【DenseFusion代码详解】主干网络loss计算
该部分是对主干网络部分的loss进行计算。代码位置在lib/loss.pytrain.py中对其的使用过程为:from lib.loss import Loss #第26行-首先importcriterion = Loss(num_points_mesh, sym_list) #第108行-初始化loss, dis, new_points, new_target = criterion(pred_r, pred_t, pred_c, target, model_points, idx, poi原创 2022-06-05 13:31:01 · 1342 阅读 · 0 评论 -
【DenseFusion代码详解】网络结构详解
代码位置在lib文件夹下面,psp_models = { 'resnet18': lambda: PSPNet(sizes=(1, 2, 3, 6), psp_size=512, deep_features_size=256, backend='resnet18'), 'resnet34': lambda: PSPNet(sizes=(1, 2, 3, 6), psp_size=512, deep_features_size=256, backend='resnet34'),原创 2022-06-05 13:30:31 · 2565 阅读 · 2 评论 -
【DenseFusion代码详解】linemod数据集预处理过程
这里分析linemod数据集预处理的代码,位置在datasets/linemod/dataset.py我们一行一行的分析。import torch.utils.data as dataclass PoseDataset(data.Dataset): def __init__(self, mode, num, add_noise, root, noise_trans, refine): self.objlist = [1, 2, 4, 5, 6, 8, 9, 10, 11,原创 2022-06-05 13:29:52 · 3553 阅读 · 11 评论 -
【DenseFusion代码详解】训练过程train.py
parser = argparse.ArgumentParser()parser.add_argument('--dataset', type=str, default = 'ycb', help='ycb or linemod')parser.add_argument('--dataset_root', type=str, default = '', help='dataset root dir (''YCB_Video_Dataset'' or ''Linemod_preprocessed''...原创 2022-06-05 13:29:07 · 2622 阅读 · 0 评论 -
【实际操作】DenseFusion复现过程详解-LineMOD数据集
最近在做DenseFusion的复现,由于刚接触这块,绕了很多弯路。源代码是在linux上面跑的,但我自己的电脑没部署linux环境,于是在Windows上面跑,但最后会报错一个c语言头文件问题,未能解决,果断放弃,转战Colab,但由于环境版本不匹配,最后也失败了。于是找导师要了服务器,最后运行成功,下面重新从头跑一下,记录整个过程。首先,官方开源代码是Pytorch0.4.1,这对我的Cuda不兼容,我用的Pytorch1.0版本的,代码源如下:Pytorch0.4.1版本链接Pytorc原创 2021-11-27 19:49:41 · 10539 阅读 · 36 评论