NHLOCAL commited on
Commit
cc9e884
·
1 Parent(s): 209a37d

עדכון קצה אחורי

Browse files
Files changed (2) hide show
  1. backend.py +22 -7
  2. requirements.txt +1 -0
backend.py CHANGED
@@ -156,21 +156,34 @@ CONF_THRESHOLD = 0.2
156
  # 4) הכנה ל-SAM2
157
  # -----------------------------
158
  try:
159
- from hydra import initialize
160
  from sam2.sam2_image_predictor import SAM2ImagePredictor
161
 
162
- SAM2_CONFIG_PATH = "../../models/sam2.1/"
163
- SAM2_MODEL_NAME = "facebook/sam2.1-hiera-tiny"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
 
165
- sam2_predictor = None
166
  device = "cuda" if torch.cuda.is_available() else "cpu"
167
 
168
- with initialize(config_path=SAM2_CONFIG_PATH):
169
- sam2_predictor = SAM2ImagePredictor.from_pretrained(SAM2_MODEL_NAME)
170
  sam2_predictor.model.to(device)
171
 
172
  except Exception as e:
173
- print("[SAM2] לא מצליח לטעון את SAM2. ודא שהנתיב והקונפיג נכונים.")
174
  sam2_predictor = None
175
 
176
  # -----------------------------
@@ -224,6 +237,8 @@ def process_image(
224
  gemini_api_key: str,
225
  progress_callback=None
226
  ) -> Image.Image:
 
 
227
  """
228
  פונקציה המקבלת תמונת PIL, מפתח API של Gemini, ומחזירה את התמונה לאחר טשטוש נשים,
229
  תוך שלבי התקדמות מוגדרים:
 
156
  # 4) הכנה ל-SAM2
157
  # -----------------------------
158
  try:
159
+ from sam2.build_sam import build_sam2
160
  from sam2.sam2_image_predictor import SAM2ImagePredictor
161
 
162
+ SAM2_CHECKPOINT = "../../checkpoints/sam2.1_hiera_tiny.pt"
163
+ SAM2_CONFIG = "../../configs/sam2.1/sam2.1_hiera_t.yaml"
164
+
165
+ if not os.path.exists(SAM2_CHECKPOINT):
166
+ print("[SAM2] מודל SAM2 לא נמצא. מנסה להוריד את המודל...")
167
+ sam2_url = "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt"
168
+ os.makedirs(os.path.dirname(SAM2_CHECKPOINT), exist_ok=True)
169
+ response = requests.get(sam2_url)
170
+ with open(SAM2_CHECKPOINT, 'wb') as f:
171
+ f.write(response.content)
172
+ print("[SAM2] מודל SAM2 הורד בהצלחה.")
173
+
174
+ if not os.path.exists(SAM2_CONFIG):
175
+ print("[SAM2] קובץ הקונפיג SAM2 לא נמצא. מנסה להוריד את הקונפיג...")
176
+ # כאן יש לוודא שקובץ הקונפיג זמין, או לכלול אותו במאגר שלך
177
+ raise FileNotFoundError(f"לא נמצא קובץ קונפיג SAM2 בנתיב: {SAM2_CONFIG}")
178
 
 
179
  device = "cuda" if torch.cuda.is_available() else "cpu"
180
 
181
+ sam2_model = build_sam2(SAM2_CONFIG, SAM2_CHECKPOINT, device=device)
182
+ sam2_predictor = SAM2ImagePredictor(sam2_model)
183
  sam2_predictor.model.to(device)
184
 
185
  except Exception as e:
186
+ print(f"[SAM2] לא מצליח לטעון את SAM2: {e}")
187
  sam2_predictor = None
188
 
189
  # -----------------------------
 
237
  gemini_api_key: str,
238
  progress_callback=None
239
  ) -> Image.Image:
240
+ if not gemini_api_key:
241
+ raise ValueError("מפתח API של Gemini אינו מוזן.")
242
  """
243
  פונקציה המקבלת תמונת PIL, מפתח API של Gemini, ומחזירה את התמונה לאחר טשטוש נשים,
244
  תוך שלבי התקדמות מוגדרים:
requirements.txt CHANGED
@@ -7,4 +7,5 @@ requests
7
  ultralytics
8
  scipy
9
  hydra-core
 
10
  git+https://github.com/facebookresearch/sam2.git
 
7
  ultralytics
8
  scipy
9
  hydra-core
10
+ torchvision
11
  git+https://github.com/facebookresearch/sam2.git