Update app.py
Browse files
app.py
CHANGED
@@ -283,18 +283,13 @@ def tryon():
|
|
283 |
'mask_image': mask_base64
|
284 |
})
|
285 |
|
286 |
-
@spaces.GPU
|
287 |
-
|
288 |
-
|
289 |
-
data = request.json
|
290 |
-
base64_image = data.get('image')
|
291 |
-
categorie = data.get('categorie', 'upper_body')
|
292 |
-
|
293 |
-
# Décodage de l'image
|
294 |
-
human_img = decode_image_from_base64(base64_image).convert("RGB")
|
295 |
-
human_img_resized = human_img.resize((384, 512))
|
296 |
-
|
297 |
try:
|
|
|
|
|
|
|
298 |
# Génération des points clés et du masque
|
299 |
keypoints = openpose_model(human_img_resized)
|
300 |
model_parse, _ = parsing_model(human_img_resized)
|
@@ -303,12 +298,32 @@ def generate_mask():
|
|
303 |
# Redimensionnement du masque à la taille d'origine de l'image
|
304 |
mask_resized = mask.resize(human_img.size)
|
305 |
|
306 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
mask_base64 = encode_image_to_base64(mask_resized)
|
308 |
|
309 |
return jsonify({
|
310 |
'mask_image': mask_base64
|
311 |
-
})
|
312 |
except Exception as e:
|
313 |
logging.error(f"Error generating mask: {e}")
|
314 |
return jsonify({'error': str(e)}), 500
|
|
|
283 |
'mask_image': mask_base64
|
284 |
})
|
285 |
|
286 |
+
@spaces.GPU
|
287 |
+
def generate_mask(human_img, categorie='upper_body'):
|
288 |
+
device = "cuda"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
try:
|
290 |
+
# Redimensionnement de l'image pour le modèle
|
291 |
+
human_img_resized = human_img.resize((384, 512))
|
292 |
+
|
293 |
# Génération des points clés et du masque
|
294 |
keypoints = openpose_model(human_img_resized)
|
295 |
model_parse, _ = parsing_model(human_img_resized)
|
|
|
298 |
# Redimensionnement du masque à la taille d'origine de l'image
|
299 |
mask_resized = mask.resize(human_img.size)
|
300 |
|
301 |
+
return mask_resized
|
302 |
+
except Exception as e:
|
303 |
+
logging.error(f"Error generating mask: {e}")
|
304 |
+
raise e # Renvoyer l'exception pour que l'API puisse la gérer
|
305 |
+
|
306 |
+
|
307 |
+
@app.route('/generate_mask', methods=['POST'])
|
308 |
+
def generate_mask_api():
|
309 |
+
try:
|
310 |
+
# Récupérer les données de l'image à partir de la requête
|
311 |
+
data = request.json
|
312 |
+
base64_image = data.get('image')
|
313 |
+
categorie = data.get('categorie', 'upper_body')
|
314 |
+
|
315 |
+
# Décodage de l'image à partir de base64
|
316 |
+
human_img = decode_image_from_base64(base64_image).convert("RGB")
|
317 |
+
|
318 |
+
# Appeler la fonction pour générer le masque
|
319 |
+
mask_resized = generate_mask(human_img, categorie)
|
320 |
+
|
321 |
+
# Encodage du masque en base64 pour la réponse
|
322 |
mask_base64 = encode_image_to_base64(mask_resized)
|
323 |
|
324 |
return jsonify({
|
325 |
'mask_image': mask_base64
|
326 |
+
}), 200
|
327 |
except Exception as e:
|
328 |
logging.error(f"Error generating mask: {e}")
|
329 |
return jsonify({'error': str(e)}), 500
|