sang1231 commited on
Commit
891a678
·
verified ·
1 Parent(s): 7af4e90

Update app.py

Browse files

"Final attempt: Use manual download to InsightFace cache directory to resolve model existence error."

Files changed (1) hide show
  1. app.py +38 -8
app.py CHANGED
@@ -5,25 +5,55 @@ import cv2
5
  import numpy as np
6
  import insightface
7
  from insightface.app import FaceAnalysis
 
 
 
8
 
9
- # KHỞI TẠO HÌNH (Chỉ chạy một lần khi ứng dụng khởi động)
10
- # Sử dụng hàm get_model_path để buộc InsightFace sử dụng các mô hình đã tải
11
- # LƯU Ý: Nếu lỗi, hãy xóa file model.py đã tạo trước đó (nếu có)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  try:
13
- # Tải mô hình Face Analysis để phát hiện khuôn mặt
14
  app = FaceAnalysis(
15
  name='buffalo_l',
16
  providers=['CPUExecutionProvider']
17
  )
18
  app.prepare(ctx_id=0, det_size=(640, 640))
19
 
20
- # Tải mô hình Face Swapper (InSwapper)
21
- # quá trình tải xuống trước đó đã thành công, tệp phải tồn tại trong cache
22
- swapper = insightface.model_zoo.get_model('inswapper_128.onnx', providers=['CPUExecutionProvider'])
23
 
24
  except Exception as e:
25
  print(f"FATAL ERROR during model initialization: {e}")
26
- # Nếu lỗi, ứng dụng sẽ không chạy, nhưng chúng ta đã loại bỏ nguyên nhân gây lỗi bên ngoài.
27
  raise e
28
 
29
 
 
5
  import numpy as np
6
  import insightface
7
  from insightface.app import FaceAnalysis
8
+ import os
9
+ import urllib.request
10
+ import ssl
11
 
12
+ # --- SỬA LỖI: CÀI ĐẶT ĐƯỜNG DẪN HÌNH THỦ CÔNG ---
13
+ # Thiết lập ngữ cảnh SSL cho tải xuống
14
+ ssl._create_default_https_context = ssl._create_unverified_context
15
+
16
+ MODEL_NAME = 'inswapper_128.onnx'
17
+ # URL đã được xác nhận hoạt động trên Hugging Face
18
+ MODEL_URL = 'https://huggingface.co/xingren23/comfyflow-models/resolve/976de8449674de379b02c144d0b3cfa2b61482f2/insightface/inswapper_128.onnx'
19
+
20
+ # Thư mục cache mặc định của InsightFace
21
+ cache_dir = os.path.join(os.path.expanduser('~'), '.insightface', 'models')
22
+ os.makedirs(cache_dir, exist_ok=True)
23
+ MODEL_PATH = os.path.join(cache_dir, MODEL_NAME)
24
+
25
+
26
+ # Hàm Tải Mô hình Bằng Tay (để đảm bảo tệp tồn tại)
27
+ def download_model(url, path):
28
+ if not os.path.exists(path):
29
+ print(f"Downloading {os.path.basename(path)} from {url} to {path}...")
30
+ try:
31
+ # Tải tệp vào thư mục cache chính xác
32
+ urllib.request.urlretrieve(url, path)
33
+ print(f"Successfully downloaded {os.path.basename(path)}.")
34
+ except Exception as e:
35
+ print(f"FATAL ERROR: Failed to download model {os.path.basename(path)}: {e}")
36
+ raise e
37
+ return path
38
+
39
+ # TẢI MÔ HÌNH VÀO THƯ MỤC INSIGHTFACE CHUẨN
40
+ local_model_path = download_model(MODEL_URL, MODEL_PATH)
41
+
42
+ # --- KHỞI TẠO ỨNG DỤNG ---
43
  try:
44
+ # Tải mô hình Face Analysis
45
  app = FaceAnalysis(
46
  name='buffalo_l',
47
  providers=['CPUExecutionProvider']
48
  )
49
  app.prepare(ctx_id=0, det_size=(640, 640))
50
 
51
+ # Tải mô hình Face Swapper bằng đường dẫn cục bộ đã tải
52
+ # SỬA LỖI: Chỉ định đường dẫn hình (local_model_path)
53
+ swapper = insightface.model_zoo.get_model(local_model_path, providers=['CPUExecutionProvider'])
54
 
55
  except Exception as e:
56
  print(f"FATAL ERROR during model initialization: {e}")
 
57
  raise e
58
 
59