Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	
		shigeru saito
		
	commited on
		
		
					Commit 
							
							·
						
						7632937
	
1
								Parent(s):
							
							dc9caf6
								
Interpolation対応、冗長な処理をリファクタリング
Browse files
    	
        app.py
    CHANGED
    
    | @@ -45,7 +45,6 @@ class Replicate: | |
| 45 | 
             
                    self.REPLICATE_MODEL_PATH = ""
         | 
| 46 | 
             
                    self.REPLICATE_MODEL_VERSION = ""
         | 
| 47 | 
             
                    self.input={}
         | 
| 48 | 
            -
                    self.output_url = None
         | 
| 49 | 
             
                    self.response = None
         | 
| 50 | 
             
                    self.prediction_id = None
         | 
| 51 | 
             
                    self.lock = threading.Lock()
         | 
| @@ -78,52 +77,19 @@ class Replicate: | |
| 78 |  | 
| 79 | 
             
                        print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.status: {self.prediction.status}")
         | 
| 80 | 
             
                        if self.prediction.status == "succeeded":
         | 
| 81 | 
            -
                            self. | 
|  | |
| 82 | 
             
                            print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.output: {self.prediction.output}")
         | 
| 83 | 
             
                        else:
         | 
| 84 | 
            -
                            self. | 
| 85 |  | 
| 86 | 
             
                        self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 87 | 
             
                        end_time = time.time()
         | 
| 88 | 
             
                        duration = end_time - start_time
         | 
| 89 |  | 
| 90 | 
            -
                        self.download_and_save(url=self.output_url, file_path=self.file_path)
         | 
| 91 | 
             
                        self.print_thread_info(start_time, end_time, duration)
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                         | 
| 94 | 
            -
                        print(f"Model Path: {self.REPLICATE_MODEL_PATH}")
         | 
| 95 | 
            -
                        print(f"Model Version: {self.REPLICATE_MODEL_VERSION}")
         | 
| 96 | 
            -
                        if self.prediction_id and str(e) == "The requested resource could not be found.":
         | 
| 97 | 
            -
                            predictions = self.client.predictions.list()
         | 
| 98 | 
            -
                            self.prediction = next((p for p in predictions if p.id == self.prediction_id), None)
         | 
| 99 | 
            -
             | 
| 100 | 
            -
                            if self.prediction:
         | 
| 101 | 
            -
                                print(f"Found prediction with ID {self.prediction_id}: {self.prediction}")
         | 
| 102 | 
            -
                            else:
         | 
| 103 | 
            -
                                print(f"No prediction found with ID {self.prediction_id}")
         | 
| 104 | 
            -
                            self.prediction.wait()
         | 
| 105 | 
            -
             | 
| 106 | 
            -
                            print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.status: {self.prediction.status}")
         | 
| 107 | 
            -
                            if self.prediction.status == "succeeded":
         | 
| 108 | 
            -
                                self.output_url = self.prediction.output
         | 
| 109 | 
            -
                                print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.output: {self.prediction.output}")
         | 
| 110 | 
            -
                            else:
         | 
| 111 | 
            -
                                self.output_url = None
         | 
| 112 | 
            -
                                print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.output: Error")
         | 
| 113 | 
            -
                                print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.output: {self.prediction.output}")
         | 
| 114 | 
            -
                            
         | 
| 115 | 
            -
                            self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 116 | 
            -
                            end_time = time.time()
         | 
| 117 | 
            -
                            duration = end_time - start_time
         | 
| 118 | 
            -
             | 
| 119 | 
            -
                            self.download_and_save(url=self.output_url, file_path=self.file_path)
         | 
| 120 | 
            -
                            self.print_thread_info(start_time, end_time, duration)
         | 
| 121 | 
            -
                        else:
         | 
| 122 | 
            -
                            print(f"Error in thread {self.index}: {e}")
         | 
| 123 | 
            -
                            print(traceback.format_exc())
         | 
| 124 | 
            -
                            print("予期しないエラーが発生しました。スレッドを終了します。")
         | 
| 125 | 
            -
                            # 予期しないエラーが発生した場合の追加処理
         | 
| 126 | 
            -
                            raise e
         | 
| 127 | 
             
                    except Exception as e:
         | 
| 128 | 
             
                        print(f"Error in thread {self.index}: {e}")
         | 
| 129 | 
             
                        print(traceback.format_exc())
         | 
| @@ -135,22 +101,22 @@ class Replicate: | |
| 135 | 
             
                            f.write(response.content)
         | 
| 136 |  | 
| 137 | 
             
                def print_thread_info(self, start_time, end_time, duration):
         | 
| 138 | 
            -
                    print(f"Thread {self.index}  | 
| 139 | 
             
                    print(f"Thread {self.index} start time: {start_time}")
         | 
| 140 | 
             
                    print(f"Thread {self.index} end time: {end_time}")
         | 
| 141 | 
             
                    print(f"Thread {self.index} duration: {duration}")
         | 
| 142 |  | 
| 143 | 
            -
            class  | 
| 144 |  | 
| 145 | 
             
                def __init__(self, id, client: Client, args, scene, index=None):
         | 
| 146 | 
             
                    super().__init__(id, client, args, index)
         | 
| 147 | 
             
                    self.REPLICATE_MODEL_PATH = "lucataco/animate-diff"
         | 
| 148 | 
            -
                    self.REPLICATE_MODEL_VERSION = " | 
| 149 | 
             
                    self.scene = scene
         | 
| 150 | 
             
                    self.prompt = "masterpiece, awards, best quality, dramatic-lighting, "
         | 
| 151 | 
             
                    self.prompt = self.prompt + scene.get("visual_prompt_in_en")
         | 
| 152 | 
             
                    self.prompt = self.prompt + ", cinematic-angles-" + scene.get("cinematic_angles") 
         | 
| 153 | 
            -
                    self.nagative_prompt = "badhandv4, easynegative, ng_deepnegative_v1_75t, verybadimagenegative_v1.3, bad-artist, bad_prompt_version2-neg, nsfw, "
         | 
| 154 | 
             
                    self.file_path_format = "assets/{id}/{class_name}_thread_{index}_request_{prediction_id}.mp4"
         | 
| 155 | 
             
                    self.file_path = None
         | 
| 156 | 
             
                    self.input={
         | 
| @@ -162,9 +128,74 @@ class Video(Replicate): | |
| 162 |  | 
| 163 | 
             
                def run_replicate(self, retries=0):
         | 
| 164 | 
             
                    self.response = super().run_replicate()
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 165 | 
             
                    self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 166 | 
             
                    return self.response
         | 
| 167 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 168 | 
             
            class Music(Replicate):
         | 
| 169 |  | 
| 170 | 
             
                def __init__(self, id, client: Client, args, duration):
         | 
| @@ -203,13 +234,12 @@ class Music(Replicate): | |
| 203 | 
             
                            }
         | 
| 204 | 
             
                    )
         | 
| 205 | 
             
                    print(output)
         | 
| 206 | 
            -
                    self.output_url = output
         | 
| 207 | 
             
                    self.response = output
         | 
| 208 |  | 
| 209 | 
             
                    self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 210 | 
             
                    end_time = time.time()
         | 
| 211 | 
             
                    duration = end_time - start_time
         | 
| 212 | 
            -
                    self.download_and_save(url=self. | 
| 213 | 
             
                    self.print_thread_info(start_time, end_time, duration)
         | 
| 214 |  | 
| 215 | 
             
                    return self.response
         | 
| @@ -471,7 +501,8 @@ if __name__ == "__main__": | |
| 471 | 
             
                if args.prompts_file:
         | 
| 472 | 
             
                    prompts = load_prompts(args.prompts_file)
         | 
| 473 | 
             
                    # main(prompts)
         | 
| 474 | 
            -
                    NajiminoAI.generate(" | 
|  | |
| 475 | 
             
                else:
         | 
| 476 |  | 
| 477 | 
             
                    description = """
         | 
|  | |
| 45 | 
             
                    self.REPLICATE_MODEL_PATH = ""
         | 
| 46 | 
             
                    self.REPLICATE_MODEL_VERSION = ""
         | 
| 47 | 
             
                    self.input={}
         | 
|  | |
| 48 | 
             
                    self.response = None
         | 
| 49 | 
             
                    self.prediction_id = None
         | 
| 50 | 
             
                    self.lock = threading.Lock()
         | 
|  | |
| 77 |  | 
| 78 | 
             
                        print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.status: {self.prediction.status}")
         | 
| 79 | 
             
                        if self.prediction.status == "succeeded":
         | 
| 80 | 
            +
                            self.response = self.prediction.output
         | 
| 81 | 
            +
                            self.response = self.response
         | 
| 82 | 
             
                            print(f"Thread {self.index} token: {self.client.api_token[:10]} prediction.output: {self.prediction.output}")
         | 
| 83 | 
             
                        else:
         | 
| 84 | 
            +
                            self.response = None
         | 
| 85 |  | 
| 86 | 
             
                        self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 87 | 
             
                        end_time = time.time()
         | 
| 88 | 
             
                        duration = end_time - start_time
         | 
| 89 |  | 
|  | |
| 90 | 
             
                        self.print_thread_info(start_time, end_time, duration)
         | 
| 91 | 
            +
                        
         | 
| 92 | 
            +
                        return self.response
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 93 | 
             
                    except Exception as e:
         | 
| 94 | 
             
                        print(f"Error in thread {self.index}: {e}")
         | 
| 95 | 
             
                        print(traceback.format_exc())
         | 
|  | |
| 101 | 
             
                            f.write(response.content)
         | 
| 102 |  | 
| 103 | 
             
                def print_thread_info(self, start_time, end_time, duration):
         | 
| 104 | 
            +
                    print(f"Thread {self.index} response: {self.response}")
         | 
| 105 | 
             
                    print(f"Thread {self.index} start time: {start_time}")
         | 
| 106 | 
             
                    print(f"Thread {self.index} end time: {end_time}")
         | 
| 107 | 
             
                    print(f"Thread {self.index} duration: {duration}")
         | 
| 108 |  | 
| 109 | 
            +
            class LucatacoAnimateDiff(Replicate):
         | 
| 110 |  | 
| 111 | 
             
                def __init__(self, id, client: Client, args, scene, index=None):
         | 
| 112 | 
             
                    super().__init__(id, client, args, index)
         | 
| 113 | 
             
                    self.REPLICATE_MODEL_PATH = "lucataco/animate-diff"
         | 
| 114 | 
            +
                    self.REPLICATE_MODEL_VERSION = "beecf59c4aee8d81bf04f0381033dfa10dc16e845b4ae00d281e2fa377e48a9f"
         | 
| 115 | 
             
                    self.scene = scene
         | 
| 116 | 
             
                    self.prompt = "masterpiece, awards, best quality, dramatic-lighting, "
         | 
| 117 | 
             
                    self.prompt = self.prompt + scene.get("visual_prompt_in_en")
         | 
| 118 | 
             
                    self.prompt = self.prompt + ", cinematic-angles-" + scene.get("cinematic_angles") 
         | 
| 119 | 
            +
                    self.nagative_prompt = "badhandv4, easynegative, ng_deepnegative_v1_75t, verybadimagenegative_v1.3, bad-artist, bad_prompt_version2-neg, nsfw, deformed iris, deformed pupils, mutated hands and fingers, deformed, distorted, disfigured, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, disconnected limbs, mutation, mutated, ugly, disgusting, amputation"
         | 
| 120 | 
             
                    self.file_path_format = "assets/{id}/{class_name}_thread_{index}_request_{prediction_id}.mp4"
         | 
| 121 | 
             
                    self.file_path = None
         | 
| 122 | 
             
                    self.input={
         | 
|  | |
| 128 |  | 
| 129 | 
             
                def run_replicate(self, retries=0):
         | 
| 130 | 
             
                    self.response = super().run_replicate()
         | 
| 131 | 
            +
                    self.download_and_save(url=self.response, file_path=self.file_path)
         | 
| 132 | 
            +
                    self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 133 | 
            +
                    return self.response
         | 
| 134 | 
            +
             | 
| 135 | 
            +
            class ZsxkibAnimateDiff(Replicate):
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                def __init__(self, id, client: Client, args, scene, index=None):
         | 
| 138 | 
            +
                    super().__init__(id, client, args, index)
         | 
| 139 | 
            +
                    self.REPLICATE_MODEL_PATH = "zsxkib/animate-diff"
         | 
| 140 | 
            +
                    self.REPLICATE_MODEL_VERSION = "269a616c8b0c2bbc12fc15fd51bb202b11e94ff0f7786c026aa905305c4ed9fb"
         | 
| 141 | 
            +
                    self.scene = scene
         | 
| 142 | 
            +
                    self.prompt = "masterpiece, awards, best quality, dramatic-lighting, "
         | 
| 143 | 
            +
                    self.prompt = self.prompt + scene.get("visual_prompt_in_en")
         | 
| 144 | 
            +
                    self.prompt = self.prompt + ", cinematic-angles-" + scene.get("cinematic_angles") 
         | 
| 145 | 
            +
                    self.nagative_prompt = "badhandv4, easynegative, ng_deepnegative_v1_75t, verybadimagenegative_v1.3, bad-artist, bad_prompt_version2-neg, nsfw, deformed iris, deformed pupils, mutated hands and fingers, deformed, distorted, disfigured, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, disconnected limbs, mutation, mutated, ugly, disgusting, amputation"
         | 
| 146 | 
            +
                    self.file_path_format = "assets/{id}/{class_name}_thread_{index}_request_{prediction_id}.mp4"
         | 
| 147 | 
            +
                    self.file_path = None
         | 
| 148 | 
            +
                    self.input={
         | 
| 149 | 
            +
                        "prompt": self.prompt,
         | 
| 150 | 
            +
                        "negative_prompt": self.nagative_prompt,
         | 
| 151 | 
            +
                        "base_model": "toonyou_beta3", #Allowed values:realisticVisionV20_v20, lyriel_v16, majicmixRealistic_v5Preview, rcnzCartoon3d_v10, toonyou_beta3
         | 
| 152 | 
            +
                        }
         | 
| 153 | 
            +
             | 
| 154 | 
            +
                def run_replicate(self, retries=0):
         | 
| 155 | 
            +
                    self.response = super().run_replicate()
         | 
| 156 | 
            +
                    self.video = self.response[0]
         | 
| 157 | 
            +
                    self.download_and_save(url=self.video, file_path=self.file_path)
         | 
| 158 | 
             
                    self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 159 | 
             
                    return self.response
         | 
| 160 |  | 
| 161 | 
            +
            class Interpolator(Replicate):
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                def __init__(self, id, client: Client, args, video, index=None):
         | 
| 164 | 
            +
                    super().__init__(id, client, args, index)
         | 
| 165 | 
            +
                    self.REPLICATE_MODEL_PATH = "zsxkib/st-mfnet"
         | 
| 166 | 
            +
                    self.REPLICATE_MODEL_VERSION = "faa7693430b0a4ac95d1b8e25165673c1d7a7263537a7c4bb9be82a3e2d130fb"
         | 
| 167 | 
            +
                    self.file_path_format = "assets/{id}/{class_name}_thread_{index}_request_{prediction_id}.mp4"
         | 
| 168 | 
            +
                    self.file_path = None
         | 
| 169 | 
            +
                    self.input={
         | 
| 170 | 
            +
                        "mp4": video, 
         | 
| 171 | 
            +
                        "framerate_multiplier": 4,
         | 
| 172 | 
            +
                        "keep_original_duration": False,
         | 
| 173 | 
            +
                        "custom_fps": 24,
         | 
| 174 | 
            +
                        }
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                def run_replicate(self, retries=0):
         | 
| 177 | 
            +
                    self.response = super().run_replicate()
         | 
| 178 | 
            +
                    self.download_and_save(url=list(self.response)[-1], file_path=self.file_path)
         | 
| 179 | 
            +
                    self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 180 | 
            +
                    return self.response
         | 
| 181 | 
            +
             | 
| 182 | 
            +
            class Video():
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                def __init__(self, id, client: Client, args, scene, index=None):
         | 
| 185 | 
            +
                    self.client = client
         | 
| 186 | 
            +
                    self.index = index
         | 
| 187 | 
            +
                    # self.animatediff = LucatacoAnimateDiff(id, client, args, scene, index)
         | 
| 188 | 
            +
                    self.animatediff = ZsxkibAnimateDiff(id, client, args, scene, index)
         | 
| 189 | 
            +
                    self.prompt = self.animatediff.prompt
         | 
| 190 | 
            +
                    self.interpolator = None
         | 
| 191 | 
            +
             | 
| 192 | 
            +
                def run_replicate(self, retries=0):
         | 
| 193 | 
            +
                    self.animatediff.run_replicate(retries)
         | 
| 194 | 
            +
                    self.interpolator = Interpolator(self.animatediff.id, self.animatediff.client, self.animatediff.args, self.animatediff.video, self.animatediff.index)
         | 
| 195 | 
            +
                    self.response = self.interpolator.run_replicate(retries)
         | 
| 196 | 
            +
                    self.file_path = self.interpolator.file_path
         | 
| 197 | 
            +
                    return self.response
         | 
| 198 | 
            +
             | 
| 199 | 
             
            class Music(Replicate):
         | 
| 200 |  | 
| 201 | 
             
                def __init__(self, id, client: Client, args, duration):
         | 
|  | |
| 234 | 
             
                            }
         | 
| 235 | 
             
                    )
         | 
| 236 | 
             
                    print(output)
         | 
|  | |
| 237 | 
             
                    self.response = output
         | 
| 238 |  | 
| 239 | 
             
                    self.file_path = self.file_path_format.format(id=self.id, class_name=self.__class__.__name__, index=self.index, prediction_id=self.prediction_id)
         | 
| 240 | 
             
                    end_time = time.time()
         | 
| 241 | 
             
                    duration = end_time - start_time
         | 
| 242 | 
            +
                    self.download_and_save(url=self.response, file_path=self.file_path)
         | 
| 243 | 
             
                    self.print_thread_info(start_time, end_time, duration)
         | 
| 244 |  | 
| 245 | 
             
                    return self.response
         | 
|  | |
| 501 | 
             
                if args.prompts_file:
         | 
| 502 | 
             
                    prompts = load_prompts(args.prompts_file)
         | 
| 503 | 
             
                    # main(prompts)
         | 
| 504 | 
            +
                    NajiminoAI.generate("子どもたちが笑ったり怒ったり泣いたり楽しんだりする")
         | 
| 505 | 
            +
             | 
| 506 | 
             
                else:
         | 
| 507 |  | 
| 508 | 
             
                    description = """
         | 
