【问题标题】:Is there a way to obtain IUV map from image in tensorflow?有没有办法从张量流中的图像中获取 IUV 图?
【发布时间】:2020-10-23 21:20:24
【问题描述】:

我一直在使用detectron2/densepose 生成 IUV 贴图,它帮助我从输入图像生成 UV 纹理。现在,为了部署,我需要使用 JavaScript 从客户端的输入图像生成 IUV 地图。我对 TensorFlow 很熟悉,但目前的密集姿势模型只能在 PyTorch 上运行,而且相互转换工具也会出错。

对问题的任何评论或解决方案都会非常有帮助。

需要 IUV 图像:

最终的UV贴图:

【问题讨论】:

    标签: tensorflow pytorch uv-mapping


    【解决方案1】:

    首先,您需要使用dump命令生成pkl文件,然后我们才能生成所需的IUV图像。

    Densepose 内部使用apply_net.py 生成pkl 文件。它还有很多其他选择。您可以查看here

    python3 apply_net.py dump configs/densepose_rcnn_R_101_FPN_s1x.yaml /models/R_101_FPN_s1x.pkl /Images/frame.jpg --output output.pkl -v

    在获得pkl 文件后,我们需要从中提取信息并创建您需要的 IUV 图像。

    img = Image.open('/Images/frame.jpg')
    img_w ,img_h = img.size
    with open('output.pkl','rb') as f:
      data=pickle.load(f)
    i = data[0]['pred_densepose'][0].labels.cpu().numpy()
    uv = data[0]['pred_densepose'][0].uv.cpu().numpy()
    iuv = np.stack((uv[1,:,:], uv[0,:,:], i * 0,))
    iuv = np.transpose(iuv, (1,2,0))
    iuv_img = Image.fromarray(np.uint8(iuv*255),"RGB")
    iuv_img.show() #It shows only the croped person
    
    box = data[0]["pred_boxes_XYXY"][0]
    box[2]=box[2]-box[0]
    box[3]=box[3]-box[1]
    x,y,w,h=[int(v) for v in box]
    bg=np.zeros((img_h,img_w,3))
    bg[y:y+h,x:x+w,:]=iuv
    bg_img = Image.fromarray(np.uint8(bg*255),"RGB")
    bg_img.save('output.png')
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 2017-11-01
      • 1970-01-01
      • 2019-01-18
      • 2020-08-29
      相关资源
      最近更新 更多