pvnet——自我总结

本博客仅个人总结,如有错误之处欢迎指正
第一阶段:(检测2D关键点)
pvnet——自我总结_第1张图片pvnet:
1.语义分割(生成对象标签);
2.生成单位向量(方向为每个像素指向预测的关键点)公式(1)
方向向量
3.关键点的假设
基于上面两点,随机选取两像素,取它俩单位向量的交点作为关键点的假设,重复此步骤生成N关键点的假设,最后对某一对象的所有像素进行评分,选出最可能的关键点,定义如公式(2)
pvnet——自我总结_第2张图片
先求每个假设关键点的均值(公式3)和协方差(公式4),用于后面的位姿求解
pvnet——自我总结_第3张图片
执行细节:
1.关键点的选择:使用FPS(farhest point sampling)选出八点作为估计匹配的关键点。具体为先随机选取初始化一个点集,在对象表面重复寻找一个点使其离当前点集最远,然后将其加入这个点集,当这些不同点集的数量达到一定时,结束此过程。此方法比找对象包围框的八个点效果更好。
2.网络中使用的优化器:Adam
3.单独对象模型网络都是使用resnet_18网络一对一训练,所有模型是使用resnet_50训练
4.crossEntroyloss——交叉熵损失,用于计算分类问题,本论文在训练语义标签时用到

第二阶段:(计算6D位姿)
通过最小化公式(5)求解位姿,使用LM算法求解下面等式
pvnet——自我总结_第4张图片
数据集信息:
LineMod+ground_truth=linemod_orig

源码链接:pvnet
一些函数:

os.path.join(拼接路径)
.astype——转换数组的数据类型
transforms——图片格式转换
permute——把tensor中的维度位置互换
.shape——返回某一维数的长度
.view=reshape——重新排列矩阵的形式
np.argmax(test,0/1)——返回行或列中的最大值
.sequeeze——压缩矩阵,将某一维度去掉
.unsequeeze——指定维度增加
uniform——生成随机数
subplots——画图
torch.sum(input,缩减量,output)三个参数代表含义不同
torch.max()——返回函数最大值

你可能感兴趣的:(机器学习相关论文)