3D Pose Regression Using Convolutional Neural Networks
3d pose regression using convolutional neural networks
目录
[ 3D pose estimation,其实只考虑旋转角,没有考虑位移 ]
- 2017年的认知:大多数这类任务是用的pose分类问题,把pose space分成离散的bins,用CNN分类器
- 所以作者要用CNN regression framework
- 主要针对的还是 pose estimation问题
- 挑战在于:3D pose space是非欧几里得的,因此CNN算法需要修改来应对输出空间的非线性
Motivation
- 设计了一个CNN框架来解决连续域下的pose 估计问题,通过设计一个尊重3D pose 空间非线性结构的合适的表征、数据增强和loss函数
具体细节
- 网络
- feature network, shared between 所有的物体类别;
- pose network,为每个类别单独设计
- 表征:两种表征:轴角和四元数
- representing 3D poses
- 一个三维旋转群的定义:\(SO(3)\dot=\{R:R \in \mathbb{R}^{3 \times 3}, R^TR=I_3, det(R)=1 \}\)
- 然后可以定义两个旋转矩阵\(R_1\), \(R_2\)之间的测地距离(
geodesic distance
)
\(d(R_1, R_2)=\frac {\lVert \log(R_1R_2^T) \rVert_F} {\sqrt{2}}\) - axis-angle 轴角定义
- 一个旋转矩阵\(R\)代表着3D点绕着轴\(v\)旋转角\(\theta\) , \(\lVert v \rVert_2=1\)
- 这可以被表达为 \(R=\exp(\theta[v]_{\times})\)
- \(\exp\)是矩阵指数
- \([v]_{\times}\) 是 \(v\) 的skew-symmetric操作符,i.e., \([v]_{\times}=\left( \begin{smallmatrix} 0 & -v_3 & v_2 \\ v_3 & 0 & -v_1 \\ -v_2 & v_1 & 0 \end{smallmatrix} \right)\) for \(v=[v_1,v_2,v_3]^T\)
- 因此,每一个旋转矩阵\(R\)有一个相应的aixs-angle vector \(y=\theta v\), vice-versa
- 限制 \(\theta \in [0,\pi)\),定义\(R=I_3 \iff y=\boldsymbol{0}_3\) ,保证旋转矩阵R和表征y的单一映射
- 矩阵指数可以被简化为\(R=I_3+\sin\theta[v]_{\times}+(1-\cos\theta)[v]_{\times}\),用Rodrigues' rotation formula
- 于是,\(d(R_1, R_2)=\frac {\lVert \log(R_1R_2^T) \rVert_F} {\sqrt{2}}\)可以被简化为:
- \(d_A(R_1,R_2)=\cos^{-1}[\frac {tr(R_1^TR^2)-1} {2}]\)
- 注意到 \(\lVert \log\left( \exp(\theta_1[v_1]_\times)\exp(\theta_2[v_2]_\times)^T \right)\rVert_F /\sqrt{2}\) 看上去很像 \(\lVert \theta_1 v_1 - \theta_2 v_2 \rVert_2\) ,但是他们不一样,因为\(\exp(\theta_1[v_1]_\times)\exp(\theta_2[v_2]_\times)^T \neq \exp\left( \theta_1[v_1]_{\times}-\theta_2[v_2]_{\times} \right)\) in general. 这个等式只在 matrices \([v_1]_{\times}\)和\([v_2]_{\times}\) commute时才成立。i.e. \(v_1=\pm v_2\)
- quaternion 四元数定义 另一个3D旋转矩阵常用的表征
- 给定一个轴角向量\(y=\theta v\),相应的四元数\(q=(c,s)\)由\((\cos \frac {\theta} {2}, \sin \frac {\theta} {2} v)^T\)
- 在构造时,四元数是unit-norm的(单位正交),\(\lVert q \rVert_2=1\)
- 使用四元数代数,我们有:\((c_1,s_1)\cdot (c_2, s_2)=\left( c_1 c_2-\langle s_1,s_2 \rangle, c_1s_2+c_2s_1+s_1\times s_2 \right)\) 以及 \((c,s)^{-1}=(c,-s)\)对于单位正交\(q=(c,s)\).
- 这里是四元数乘法的定义,以及单位正交四元数的性质(共轭为逆运算)
- 现在,用四元数来表达\(d(R_1, R_2)=\frac {\lVert \log(R_1R_2^T) \rVert_F} {\sqrt{2}}\):
- \(d(q_1,q_2)=2\cos^{-1}(\lvert c \rvert) \quad where \quad (c,s)=q_1^{-1}\cdot q_2\) ,再简化一些得到:
\(d_Q(q_1,q_2)=2\cos^{-1} \left( \lvert \langle q_1, q_2 \rangle \rvert \right)\)- 加绝对值是为了handle double cover问题
- \(d(q_1,q_2)=2\cos^{-1}(\lvert c \rvert) \quad where \quad (c,s)=q_1^{-1}\cdot q_2\) ,再简化一些得到:
- 给定一个轴角向量\(y=\theta v\),相应的四元数\(q=(c,s)\)由\((\cos \frac {\theta} {2}, \sin \frac {\theta} {2} v)^T\)
网络结构
- 对于轴角表示:
- 输出\(\theta v\),用\(\pi \tanh\) 非线性激活层来建模 约束\(\theta \in [0,\pi)\) 与 \(v_i \in [-1,1]\)
- 用\(\mathcal{L}=d_A(R,\hat{R})=\cos^{-1}[\frac {tr(R_1^TR^2)-1} {2}]\)来最优化
- ==思考==:这里还是直接回归角度,是否还是会存在pose-ambiguity问题?也许angle 会存在一个既接近0又接近\(\pi\)的值?是否会因为这个有影响?
- loss这头先在没有影响了,因为用的是geodesic loss
- 主要是输出这头,可能在输出时存在ambiguity
- ==思考==:用一个周期性的激活函数是否可以消除这个问题?
- 对于四元数表示:
- 输出是一个4维量,单位正交约束通过 choosing the non-linearity as L2 normalization 来保证
- Q: what ?
- 用\(\mathcal{L}=d_Q(R,\hat{R})=2\cos^{-1} \left( \lvert \langle q_1, q_2 \rangle \rvert \right)\) 来最优化
- 输出是一个4维量,单位正交约束通过 choosing the non-linearity as L2 normalization 来保证