Denseposeコードと論文の理解

2367 ワード

コード:

  • 訓練:FRCNN
  • テスト:FRCNN
  • 可視化:
  • Texture Transfer Using Estimated Dese Coordinates image----RGB image対応IUV-----3 D必要“換装”のテンプレート図:3 D表面図(25枚)
    1ブロックあたりの座標を出す
    .x,y = np.where(IUV[:,:,0]==PartInd) 
    
  • に書かれた私自身もUVの中でそのブロックに属する点(3 d座標点)がそのブロックに属する3 d座標点が、そのテンプレート図に変換された点(x,y)が読めず、カット図を得た画素がモジュール図を原図に貼り付ける
  • .
    u_current_points = U[x,y]
    r_current_points = R[((255-v_current_points)*199./255.).astype(int),(u_current_points*199./255.).astype(int)]*255
    R_im[IUV[:,:,0]==PartInd] = r_current_points
    
    def TransferTexture(TextureIm,im,IUV):
        U = IUV[:,:,1]
        V = IUV[:,:,2]
        #
        R_im = np.zeros(U.shape)
        G_im = np.zeros(U.shape)
        B_im = np.zeros(U.shape)
        ###
        for PartInd in xrange(1,23):    ## Set to xrange(1,23) to ignore the face part.
            tex = TextureIm[PartInd-1,:,:,:].squeeze() # get texture for each part.
            #####
            R = tex[:,:,0]
            G = tex[:,:,1]
            B = tex[:,:,2]
            ###############
            x,y = np.where(IUV[:,:,0]==PartInd)
            u_current_points = U[x,y]   #  Pixels that belong to this specific part.
            v_current_points = V[x,y]
            ##
            r_current_points = R[((255-v_current_points)*199./255.).astype(int),(u_current_points*199./255.).astype(int)]*255
            g_current_points = G[((255-v_current_points)*199./255.).astype(int),(u_current_points*199./255.).astype(int)]*255
            b_current_points = B[((255-v_current_points)*199./255.).astype(int),(u_current_points*199./255.).astype(int)]*255
            ##  Get the RGB values from the texture images.
            R_im[IUV[:,:,0]==PartInd] = r_current_points
            G_im[IUV[:,:,0]==PartInd] = g_current_points
            B_im[IUV[:,:,0]==PartInd] = b_current_points
        generated_image = np.concatenate((B_im[:,:,np.newaxis],G_im[:,:,np.newaxis],R_im[:,:,np.newaxis]), axis =2 ).astype(np.uint8)
        BG_MASK = generated_image==0
        generated_image[BG_MASK] = im[BG_MASK]  ## Set the BG as the old image.
        return generated_image
    

    論文:

  • ネットワーク構造ネットワーク構造:1.まずFaster-CNNで検出し,人物領域検出図を得る.2.従来のニューラルネットワークでブロック化する.3.ブロック化後、従来の神経網を用いて各ブロックに点を分ける.4.点を熱力図IVUに変換する.損失関数:クロスエントロピー損失関数.入力と出力:RGB画像を1枚入力し、NDS(分割図)、IVU(I:人体25ブロックのうちの1枚.U,V:3 DのUVマップを得る.)検出図(枠出人物)
  • COCO-Denseposeデータベース注釈方式データベース紹介
  • 結果