|
|
|
|
| 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()
|
|
|
|
|
|
|