目录

目录

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=\lbrace R:R \in \mathbb{R}^{3 \times 3}, R^TR=I_3, det(R)=1 \rbrace$
    • 然后可以定义两个旋转矩阵$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问题

网络结构

  • 对于轴角表示:
    • 输出$\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)$ 来最优化