MaskedFusion
MaskedFusion: Mask-based 6D Object Pose Estimation
来源:ICMLA 代码:https://github.com/kroglice/MaskedFusion 引用量:3
提出的问题现实中的物体存在遮挡(occlusions)和截断(truncations)等情况。
已有的方法
基于RGB依赖于物体检测,关键点匹配以及3D渲染技术,并使用PnP算法来求解姿态。速度快,但存在遮挡时,recall就会很低。
基于点云依赖于描述符(descriptors)从场景中的物体中提取特征,并将其与在已知姿态中捕获的特征进行匹配
基于RGB-D直接从数据回归姿态,并做后处理优化
本文的方法直接从RGB-D数据中回归姿态。
包含三个串行的子任务:
使用语义分割,对物体做检测(detection)和分类,并获取对应的mask
从不同类型的数据中提取特征,并使用pixel-wise的方式将它们混合在一起,使用6D pose neural network回归物体姿态(旋转和平移矩阵)
Pose Refinement(可选,建议选),直接使用了D ...
G2L-Net
G2L-Net: Global to Local Network for Real-time 6D Pose Estimation with Embedding Vector Features
来源:CVPR 2020代码:https://github.com/DC1991/G2L_Net引用量:8新版本:FS-Net(CVPR2021),还没看
提出的问题
一些基于深度学习的方法预测表现达到了sota,但做不到实时性,太慢
虽然存在一些方法能够做到实时性,但这些方法只是用了RGB图,无法处理存在遮挡和光照变化的情况
当加入深度信息后,可以处理诸如遮挡的复杂情况,但是计算密集。并且这些基于RGBD的方法的一个常见问题是:利用来自深度信息中的视点信息(view point infomation)并不是很有效,从而降低了它们的姿态估计精度。为了克服这一点,这些方法倾向于使用后细化机制( post-refinement mechanism)或假设生成/检验机制(hypotheses generation/verification mechanism)来提高姿态估计的精度,但同时也降低了姿态 ...
PoseCNN
PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes
来源:RSS 2018 代码:https://github.com/NVlabs/PoseCNN-PyTorch 引用量:667
提出的问题现实中的物体具有不同的三维形状,它们在图像上的外观受到光照条件、杂乱场景和物体之间遮挡的影响,一些物体具有对称性,这给6D姿态估计问题带来了挑战。
已有的方法
在3D模型和2D图片之间匹配特征点。这种方法只对那些纹理特征丰富的物体有效。
基于RGB-D的方法可以应对表面纹理较少的物体。
基于模板的方法:构造一个刚性模板,用于扫描输入图像中的不同位置。在每个位置计算相似分数,通过比较这些相似分数获得最佳匹配。这类方法虽然可以解决物体纹理较少的问题,但是物体之间的相互遮挡会降低识别性能。
基于特征的方法:从点或图像中的每个像素提取局部特征,并与三维模型上的特征匹配,建立3D-3D对应关系。这类方法可以解决遮挡问题,但需要物体表面纹理丰富才能提出好的局部特征。虽然后来直接回归 ...
FFB6D
FFB6D: A Full Flow Bidirectional Fusion Network for 6D Pose Estimation
来源: CVPR2021代码:https://github.com/ethnhe/FFB6D
提出的问题
RGB图像+CNN:透视投影会导致几何信息损失
RDB-D+CNN::如何有效地充分利用这两种数据模式(RGB图+深度图)来进行更好的6维姿态估计?
已有的方法
使用级联思想,先从RGB中做粗略估计,再使用ICP或多视图的假设检验做后续优化。这种方法并不是端到端的方式,而且非常耗时。
使用两个网络,一个CNN,一个PCN( pointcloud network),分别从RGB图和点云文件中提取特征(croped RGB image and point cloud),然后把这两种特征concat在一起(称之为 dense features),用于姿态估计。这种混合特征的方法(concat)太naive。
也是用两个网络,CNN和PCN,只不过将特征混合方式由concat改为dense fusion,如下图: 但是,由于CNN和PC ...
一秒仿妆:PSGAN
BeautyGAN:提出了makeup loss等,后续PSGAN也基于这些loss。训练数据需要成对,数据集难收集。
Paired Cycle GAN:额外添加了一个判别器
Beauty Glow
LADN…
以上方法不适用于in the wild 图像,且不能只调节局部,比如只给眼睛上妆。
PSGAN(CVPR2020)解决了这些痛点,并且PSGAN++做了进一步改进,对比如下:
由于PSGAN++还没开源代码,所以选择了有代码的PSGAN,同时作者也提供了预训练模型。
我用默认配置参数跑了下,发现并没有得到论文中的效果,调了些参数,比如生成器和判别器的学习率,效果也不是特别好。
使用预训练模型,就能够得到论文中的效果。可能自己还需要调更多参数吧~
下面是关于PSGAN的论文要点整理。
网络结构PSGAN的生成模块包括3部分:
Makeup distill network(MDNet)
Attentive makeup morphing module(AMM module)
Makeup Apply Network(MANet)
reference image:上妆容图,假设在 ...
从Attention直达ViT
前文回顾:https://fx0809.gitee.io/2021/06/11/NLP%E6%9E%81%E7%AE%80%E5%85%A5%E9%97%A8%E7%AC%94%E8%AE%B0/
一、Revisiting Attention for RNNAttention for Seq2Seq Model,它的编码器和解码器都是RNN结构:
其中$\alpha$的计算公式如下:
在Transformer中,就采用了下面的方法计算Context vector:
二、Attention without RNN现在,剥离RNN,只保留Attention。
以英语到德语的翻译为例:
开始计算权重$\alpha$:
计算$\alpha_{:1}$
计算$c_{:1}$
计算$\alpha_{:2}$
计算$c_{:2}$
重复以上操作,最终得到全部的$c$,即Context vector
这些Context vector就是最后的输出
每一个$c_{:j}$,都依赖于全部的$x$,即$x_1$到$x_m$,以及一个$x_j’$。因此Attention不会像RNN那样产生遗忘(RNN只用到了 ...
目标检测中的mAP-代码实现
mAPmAP,全称为mean Average Precision,在目标检测任务中被用于衡量检测器的好坏。本文第一部分讲解mAP的概念以及计算过程,第二部分专注于用代码实现mAP的计算。
在做目标检测时,每个类别对应有一个AP,全部类别的AP求平均就是mAP。
AP是P-R曲线下方的面积。
P-R曲线的横轴是Recall,纵轴是Precision。
因此,欲计算mAP,得先计算每个类别对应的AP,进一步,得先计算每个类别对应的Recall和Precision。
下面正文开始~
一、计算某个类别对应的AP1. 获取测试集上所有预测的bbox的结果(TP or FP)这里,假设预测得到的bbox已经做过NMS处理,如果不清楚什么是NMS,请查看这篇文章。
GT总数(绿色框)为4,而红色框是预测得到的,红色数字表示置信度(confidence)。
接下来需要计算每张图片中的每一个红色预测框与其附近的绿色真实框的IoU,当IoU大于预先设定的IoU阈值时,设置该预测框为TP,否则设置为FP。
之所以使用TP和FP,是因为我们感兴趣的是 预测框的位置是否接近真实框的位置 (接近程度用两者的Io ...
批量生成评语
这一天,你收到了一封来自远方的邮件,邮件内容如下:
嗨,最近忙吗?我的领导想让我帮他写一份员工评价表,针对全体员工及进行评价,不限字数。给的表格文件(.csv)大概是这样的:但是,总共有一万名员工,每个员工写一句的话,需要写一万句!这太枯燥了,所以想问问你能不能用Python来解决呢?
能!Python啥都能!解放双手,从使用Python做起~
既然是评价他人,无非就是总结一下优缺点嘛,那我搜集一些表达优点的句子,再搜集一些表达缺点的句子,将它们随机组合起来不就成了。就像这样:
1虽然xxxxx,但是xxxxx
说干就干,开始写代码~
先把用到的库导进来:
12import pandas as pdimport numpy as np
然后读取给的csv文件:
现在要做的就是生成评价内容。按照之前所说,需要准备两个列表,一个存储”虽然”后面的句子,另一个存储”但是”后面的句子:
12suiran=['创新意识不足','实践能力较弱','深入实际不够','理论学习不够重视','经常迟到 ...
NLP极简入门笔记
一、文本数据预处理step1. Tokenization(text to words)
step2. 统计词频
统计完词频后,将这些词按照词频从高到低进行排序:一般会删掉低频词,也就是排在后面的词,因为这些词有可能是拼写错误的词或者人名。将它们删除以后,可减小vocabulary的维度,这有利于减轻后续计算负担,并且能防止过拟合。
接着将词频改为index表示(index从1开始,0一般用于表示缺失词对应index):
step3. One-Hot Encoding
如果某个词无法在字典中找到,可以忽略它或者将其index设置为0。
二、文本处理与词嵌入先按照上一节的步骤进行处理:后续如有必要,还要做One-Hot Encoding处理,这里没有写出。
由于每句话的长度不一,因此可以限制句子最大长度,多则砍掉,少则补齐(比如zero-padding)。
现在做 Word to Vec。
做Word to Vec的目的是将目前用index数值表示的单词转为用向量表示。One-Hot Encoding也可以做到这一点,但是如果词汇表中的单词总数过多,那么向量的维度就会很大,这样参数量 ...
经典卷积架构:ResNeXt
ResNeXt在前面的文章中,我们已经介绍了ResNet以及Inception的原理及其PyTorch实现。而今天要介绍的ResNeXt,正是在ResNet的基础上,结合Inception得到的。
在Inception中,其多个分支的结构是不同的,就像这样:
ResNeXt的作者提议将每个分支的结构搞成一样的,以减少网络复杂性,便于扩展;再加上一个skip connection,就得到了ResNeXt block。
下面是论文中给出的一个ResNeXt block:
它总共有32个分支,每个分支的结构都是完全相同的,且输入与输出之间做了跳连(skip connection)。
其实,上面的这个结构还是可以简化的,作者在论文中指出,以下3种结构是等价的:
因此,为了方便,编码时我们就采用(c)结构。
现在把ResNeXt block的(c)结构单独拎出来:
再把ResNet block拿过来:
对比来看,两者在结构上的区别在于,前者的3x3卷积是分组卷积。在论文中,作者将分组数用Cardinality来表示,并且指出: increasing cardinality is more ef ...