Spaces:
Running
Running
עדכון קצה אחורי
Browse files- backend.py +22 -7
- requirements.txt +1 -0
backend.py
CHANGED
@@ -156,21 +156,34 @@ CONF_THRESHOLD = 0.2
|
|
156 |
# 4) הכנה ל-SAM2
|
157 |
# -----------------------------
|
158 |
try:
|
159 |
-
from
|
160 |
from sam2.sam2_image_predictor import SAM2ImagePredictor
|
161 |
|
162 |
-
|
163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
|
165 |
-
sam2_predictor = None
|
166 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
167 |
|
168 |
-
|
169 |
-
|
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
|