|
|
|
|
|
import time
|
|
import torch
|
|
from torchvision import transforms
|
|
|
|
import rope.GUI as GUI
|
|
import rope.VideoManager as VM
|
|
import rope.Models as Models
|
|
from rope.external.clipseg import CLIPDensePredT
|
|
|
|
resize_delay = 1
|
|
mem_delay = 1
|
|
|
|
|
|
def coordinator():
|
|
global gui, vm, action, frame, r_frame, load_notice, resize_delay, mem_delay
|
|
|
|
|
|
|
|
if gui.get_action_length() > 0:
|
|
action.append(gui.get_action())
|
|
if vm.get_action_length() > 0:
|
|
action.append(vm.get_action())
|
|
|
|
if vm.get_frame_length() > 0:
|
|
frame.append(vm.get_frame())
|
|
|
|
if len(frame) > 0:
|
|
gui.set_image(frame[0], False)
|
|
frame.pop(0)
|
|
|
|
if vm.get_requested_frame_length() > 0:
|
|
r_frame.append(vm.get_requested_frame())
|
|
if len(r_frame) > 0:
|
|
gui.set_image(r_frame[0], True)
|
|
r_frame=[]
|
|
|
|
if len(action) > 0:
|
|
|
|
|
|
if action[0][0] == "load_target_video":
|
|
vm.load_target_video(action[0][1])
|
|
action.pop(0)
|
|
elif action[0][0] == "load_target_image":
|
|
vm.load_target_image(action[0][1])
|
|
action.pop(0)
|
|
elif action[0][0] == "play_video":
|
|
vm.play_video(action[0][1])
|
|
action.pop(0)
|
|
elif action[0][0] == "get_requested_video_frame":
|
|
vm.get_requested_video_frame(action[0][1], marker=True)
|
|
action.pop(0)
|
|
elif action[0][0] == "get_requested_video_frame_without_markers":
|
|
vm.get_requested_video_frame(action[0][1], marker=False)
|
|
action.pop(0)
|
|
elif action[0][0] == "get_requested_image":
|
|
vm.get_requested_image()
|
|
action.pop(0)
|
|
|
|
|
|
|
|
elif action[0][0] == "target_faces":
|
|
vm.assign_found_faces(action[0][1])
|
|
action.pop(0)
|
|
elif action [0][0] == "saved_video_path":
|
|
vm.saved_video_path = action[0][1]
|
|
action.pop(0)
|
|
elif action [0][0] == "vid_qual":
|
|
vm.vid_qual = int(action[0][1])
|
|
action.pop(0)
|
|
elif action [0][0] == "set_stop":
|
|
vm.stop_marker = action[0][1]
|
|
action.pop(0)
|
|
elif action [0][0] == "perf_test":
|
|
vm.perf_test = action[0][1]
|
|
action.pop(0)
|
|
elif action [0][0] == 'ui_vars':
|
|
vm.ui_data = action[0][1]
|
|
action.pop(0)
|
|
elif action [0][0] == 'control':
|
|
vm.control = action[0][1]
|
|
action.pop(0)
|
|
elif action [0][0] == "parameters":
|
|
if action[0][1]["CLIPSwitch"]:
|
|
if not vm.clip_session:
|
|
vm.clip_session = load_clip_model()
|
|
|
|
vm.parameters = action[0][1]
|
|
action.pop(0)
|
|
elif action [0][0] == "markers":
|
|
vm.markers = action[0][1]
|
|
action.pop(0)
|
|
|
|
|
|
elif action[0][0] == "function":
|
|
eval(action[0][1])
|
|
action.pop(0)
|
|
elif action [0][0] == "clear_mem":
|
|
vm.clear_mem()
|
|
action.pop(0)
|
|
|
|
|
|
|
|
elif action[0][0] == "stop_play":
|
|
gui.set_player_buttons_to_inactive()
|
|
action.pop(0)
|
|
|
|
elif action[0][0] == "set_slider_length":
|
|
gui.set_video_slider_length(action[0][1])
|
|
action.pop(0)
|
|
|
|
elif action[0][0] == "update_markers_canvas":
|
|
gui.update_markers_canvas()
|
|
action.pop(0)
|
|
|
|
|
|
else:
|
|
print("Action not found: "+action[0][0]+" "+str(action[0][1]))
|
|
action.pop(0)
|
|
|
|
|
|
|
|
|
|
if resize_delay > 100:
|
|
gui.check_for_video_resize()
|
|
resize_delay = 0
|
|
else:
|
|
resize_delay +=1
|
|
|
|
if mem_delay > 1000:
|
|
gui.update_vram_indicator()
|
|
mem_delay = 0
|
|
else:
|
|
mem_delay +=1
|
|
|
|
vm.process()
|
|
gui.after(1, coordinator)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_clip_model():
|
|
|
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
clip_session = CLIPDensePredT(version='ViT-B/16', reduce_dim=64, complex_trans_conv=True)
|
|
|
|
clip_session.eval();
|
|
clip_session.load_state_dict(torch.load('./models/rd64-uni-refined.pth'), strict=False)
|
|
clip_session.to(device)
|
|
return clip_session
|
|
|
|
|
|
|
|
|
|
def run():
|
|
global gui, vm, action, frame, r_frame, resize_delay, mem_delay
|
|
|
|
models = Models.Models()
|
|
gui = GUI.GUI(models)
|
|
vm = VM.VideoManager(models)
|
|
|
|
|
|
action = []
|
|
frame = []
|
|
r_frame = []
|
|
|
|
gui.initialize_gui()
|
|
|
|
|
|
coordinator()
|
|
|
|
gui.mainloop()
|
|
|
|
|
|
|