我正在尝试使用 stylegan2 生成围绕所选种子图像来回反弹的视频。我已经有一个使用投影矢量执行此操作的脚本,但想切换到使用另一个脚本找到的专门选择的种子。我是编码新手,所以这可能很简单,但我只是不知道如何选择起始种子以传递到脚本的其余部分。目前,我所写的内容会产生一个 mp4,但只显示噪音。
import numpy as np
import dnnlib
import dnnlib.tflib as tflib
import projector
import pretrained_networks
from training import dataset
from training import misc
import dataset_tool
import PIL.Image
import math
import moviepy.editor
def main():
tflib.init_tf()
network_pkl = "/content/network.pkl"
_G, _D, Gs = pretrained_networks.load_networks(network_pkl)
Gs_kwargs = dnnlib.EasyDict()
Gs_kwargs.output_transform = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True)
Gs_kwargs.randomize_noise = False
Gs_kwargs.truncation_psi = .5
trunc_psi=.5
seed=10
Z_SIZE = Gs.input_shape[1]
z = np.random.RandomState(seed)
latent1 = z.randn(1, *Gs.input_shape[1:])
totFrames = 120
step = 24
latentList = []
for i in range(5):
latent2 = Gs.components.mapping.run(np.random.rand(1,Z_SIZE), None, truncation_psi=trunc_psi)
latentList.append(latent2)
curPos = 0
curLatent = 0
frame_List = []
for i in range(totFrames):
print(i)
factor = curPos/(step)
factor = math.cos(factor*(math.pi*2))*.5+3
current_latent = latentList[curLatent]*(1-factor) + latent1*factor
current_image = Gs.components.synthesis.run(current_latent, **Gs_kwargs)[0]
frame_List.append(current_image)
curPos = curPos+1
if curPos == step:
curPos = 0
curLatent+=1
mp4_file = "/content/forest_bounce2.mp4"
mp4_codec = "libx264"
mp4_bitrate = "3M"
mp4_fps = step
frames = moviepy.editor.ImageSequenceClip(frame_List, fps=mp4_fps)
frames.write_videofile(mp4_file,fps=mp4_fps,codec=mp4_codec,bitrate=mp4_bitrate)
if __name__ == "__main__":
main()