Почему моя оптимизация текстуры с chumpy и opendr остановилась после первой итерации и, таким образом, не изменила текстуру - PullRequest
0 голосов
/ 18 июня 2019

У меня возникли некоторые проблемы с моим кодом, и я был бы признателен за некоторую помощь:)

Я пытаюсь оптимизировать текстуру модели так, чтобы визуализированное изображение выглядело как заданное изображение истинной земли.В настоящее время я тестирую его с помощью кода из демо-версии «оптимизация» opendr, используя chumpy для оптимизации.
По некоторым причинам оптимизация делает только 1 шаг и не меняет текстуру.У кого-то есть идея, почему?
(мне пришлось изменить значение по умолчанию для sparse_solver в chumpy (для минимизации изгиба) с 'spsolve' на 'cg', чтобы можно было запускать код)

import numpy as np
import chumpy as ch
import cv2
from opendr.renderer import ColoredRenderer, TexturedRenderer
from opendr.simple import *

import skimage.io as io
from opendr.util_tests import get_earthmesh
import matplotlib.pyplot as plt

def earth_mesh_vis():
    img = io.imread("earth_round.png") # ground truth image
    w, h = 320, 240
    m = get_earthmesh(trans=ch.array([0,0,0]), rotation=ch.zeros(3))
    m.texture_image = ch.array(m.texture_image)
    V = ch.array(m.v)
    A = SphericalHarmonics(vn=VertNormals(v=V, f=m.f),components=[3.,2.,0.,0.,0.,0.,0.,0.,0.], light_color=ch.ones(3))    
    U = ProjectPoints(v=V, f=[w,w], c=[w/2.,h/2.], k=ch.zeros(5), t=ch.zeros(3), rt=ch.zeros(3))
    f = TexturedRenderer(vc=A, camera=U, f=m.f, bgcolor=[0.,0.,0.],                 
                         texture_image=m.texture_image, vt=m.vt, ft=m.ft,           
                         frustum={'width':w, 'height':h, 'near':1,'far':20})
    translation, rotation = ch.array([0,0,8]), ch.zeros(3)                          
    f.v = translation + V.dot(Rodrigues(rotation)) 

    return f, img, m.texture_image, A.components

def visualize():
    f, img, texture, Acomps = earth_mesh_vis()

    E_raw = ch.sum((f - img)**2.)
    #Energy.show_tree()

    free_variables=[texture]
    ch.minimize({'raw': E_raw}, x0=free_variables, method='dogleg') #, options={'delta_0': 10})     

def main():
    visualize()

if __name__ == '__main__':
    main()

Оптимизация должна изменить текстуру модели так, чтобы при визуализации она выглядела как изображение истинной земли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...