Spaces:
Runtime error
Runtime error
vukadinovic936
commited on
Commit
·
ed77274
1
Parent(s):
b124c89
full
Browse files
app.py
CHANGED
|
@@ -8,6 +8,7 @@ from dnnlib import tflib
|
|
| 8 |
import imageio
|
| 9 |
import os
|
| 10 |
import subprocess
|
|
|
|
| 11 |
|
| 12 |
def check_gpu():
|
| 13 |
return tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None)
|
|
@@ -15,7 +16,23 @@ def check_gpu():
|
|
| 15 |
def generate_image_from_projected_latents(latent_vector):
|
| 16 |
images = Gs.components.synthesis.run(latent_vector, **Gs_kwargs)
|
| 17 |
return images
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
def frame_to_frame(latent_code):
|
| 20 |
modified_latent_code = np.copy(latent_code)
|
| 21 |
full_video = [generate_image_from_projected_latents(modified_latent_code)]
|
|
@@ -49,26 +66,46 @@ def load_initial_setup():
|
|
| 49 |
return Gs, Gs_kwargs, latent_controls, sess
|
| 50 |
|
| 51 |
if __name__=="__main__":
|
| 52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
Gs, Gs_kwargs, latent_controls, sess = load_initial_setup()
|
| 54 |
with sess.as_default():
|
| 55 |
z = rnd.randn(1, *Gs.input_shape[1:])
|
| 56 |
random_img_latent_code = Gs.components.mapping.run(z,None)
|
| 57 |
#make it be ED frame
|
| 58 |
random_img_latent_code -= 0.7*latent_controls['time']
|
| 59 |
-
vid = frame_to_frame(random_img_latent_code)
|
| 60 |
-
|
| 61 |
-
temp_video_path="output.mp4"
|
| 62 |
-
writer=imageio.get_writer(temp_video_path, fps=20)
|
| 63 |
-
for i in range(vid.shape[0]):
|
| 64 |
-
frame = vid[i]
|
| 65 |
-
writer.append_data(frame)
|
| 66 |
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
import imageio
|
| 9 |
import os
|
| 10 |
import subprocess
|
| 11 |
+
import random
|
| 12 |
|
| 13 |
def check_gpu():
|
| 14 |
return tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None)
|
|
|
|
| 16 |
def generate_image_from_projected_latents(latent_vector):
|
| 17 |
images = Gs.components.synthesis.run(latent_vector, **Gs_kwargs)
|
| 18 |
return images
|
| 19 |
+
## define video generation methods
|
| 20 |
+
def ED_to_ES(latent_code):
|
| 21 |
+
all_imgs = []
|
| 22 |
+
amounts_up = [i/25 for i in range(0,25)]
|
| 23 |
+
amounts_down = [1-i/25 for i in range(1,26)]
|
| 24 |
|
| 25 |
+
for amount_to_move in amounts_up:
|
| 26 |
+
modified_latent_code = latent_code + latent_controls["time"]*amount_to_move
|
| 27 |
+
images = generate_image_from_projected_latents(modified_latent_code)
|
| 28 |
+
all_imgs.append(np.array(images[0]))
|
| 29 |
+
|
| 30 |
+
for amount_to_move in amounts_down:
|
| 31 |
+
modified_latent_code = latent_code + latent_controls["time"]*amount_to_move
|
| 32 |
+
images = generate_image_from_projected_latents(modified_latent_code)
|
| 33 |
+
all_imgs.append(np.array(images[0]))
|
| 34 |
+
|
| 35 |
+
return np.array(all_imgs)
|
| 36 |
def frame_to_frame(latent_code):
|
| 37 |
modified_latent_code = np.copy(latent_code)
|
| 38 |
full_video = [generate_image_from_projected_latents(modified_latent_code)]
|
|
|
|
| 66 |
return Gs, Gs_kwargs, latent_controls, sess
|
| 67 |
|
| 68 |
if __name__=="__main__":
|
| 69 |
+
|
| 70 |
+
st.header('GANcMRI DEMO')
|
| 71 |
+
sphericity_index = st.slider("Sphericity Index", -2., 3., 0.0)
|
| 72 |
+
lv_area = st.slider("LV Area", -2., 3., 0.0)
|
| 73 |
+
# Check if 'random_number' is already in the session state, if not, set a random number for seed
|
| 74 |
+
if 'random_number' not in st.session_state:
|
| 75 |
+
st.session_state.random_number = random.randint(0, 1000000)
|
| 76 |
+
cols = st.columns(2)
|
| 77 |
+
|
| 78 |
+
with cols[0]:
|
| 79 |
+
st.caption('ED-to-ES')
|
| 80 |
+
with cols[1]:
|
| 81 |
+
st.caption('Frame-to-Frame')
|
| 82 |
+
|
| 83 |
+
rnd = np.random.RandomState(st.session_state.random_number)
|
| 84 |
Gs, Gs_kwargs, latent_controls, sess = load_initial_setup()
|
| 85 |
with sess.as_default():
|
| 86 |
z = rnd.randn(1, *Gs.input_shape[1:])
|
| 87 |
random_img_latent_code = Gs.components.mapping.run(z,None)
|
| 88 |
#make it be ED frame
|
| 89 |
random_img_latent_code -= 0.7*latent_controls['time']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
|
| 91 |
+
# Apply physiological adjustment
|
| 92 |
+
adjusted_latent_code = np.copy(random_img_latent_code)
|
| 93 |
+
adjusted_latent_code += sphericity_index * latent_controls['sphericity_index']
|
| 94 |
+
adjusted_latent_code += lv_area * latent_controls['lv_area']
|
| 95 |
|
| 96 |
+
ed_to_es_vid = ED_to_ES(adjusted_latent_code)
|
| 97 |
+
f_to_f_vid = frame_to_frame(adjusted_latent_code)
|
| 98 |
+
for idx,vid in enumerate([ed_to_es_vid, f_to_f_vid]):
|
| 99 |
+
temp_video_path=f"output{idx}.mp4"
|
| 100 |
+
writer=imageio.get_writer(temp_video_path, fps=20)
|
| 101 |
+
for i in range(vid.shape[0]):
|
| 102 |
+
frame = vid[i]
|
| 103 |
+
writer.append_data(frame)
|
| 104 |
+
writer.close()
|
| 105 |
+
out_path = f"fixed_out{idx}.mp4"
|
| 106 |
+
command = ["ffmpeg", "-i", temp_video_path, "-vcodec", "libx264", out_path]
|
| 107 |
+
subprocess.run(command)
|
| 108 |
+
with cols[idx]:
|
| 109 |
+
st.video(out_path)
|
| 110 |
+
os.remove(temp_video_path)
|
| 111 |
+
os.remove(out_path)
|