CoolFace
Apppublic

teofe/FraudScore

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
app.py68 linesDownload Raw Back to root
1# docker build -t reward-simulator .docker run -p 7860:7860 -v $(pwd)/data:/app/data reward-simulator2# **Flask** : micro-framework pour créer des applications web en Python.3# **request** : pour accéder aux données envoyées par le client (par exemple, des fichiers ou des données de formulaire).4# **jsonify** : pour retourner des réponses JSON bien formatées.5# **render_template** : pour générer des pages HTML à partir de fichiers de template (généralement `.html`).6# **send_from_directory** : pour envoyer des fichiers (comme des images ou des PDF) depuis un répertoire spécifique.7 8 9### ```python10from PIL import Image11 12from flask import Flask, request, jsonify, render_template, send_from_directory13from PIL import Image14import numpy as np15import io16import torch17 18from request import get_ft  # get_ft(model, image) doit retourner un np.ndarray19 20app = Flask(__name__)21 22# Global model23model = None24 25def load_model():26    """Load DINOv2  model"""27    torch.hub.set_dir("/tmp/torch_cache")  # Dossier temporaire autorisé28    model = torch.hub.load('facebookresearch/dinov2', 'dinov2_vits14')29    model.eval()30    model.to(torch.device('cuda' if torch.cuda.is_available() else 'cpu'))31    return model32 33def init_model():34    global model35    model = load_model()36 37@app.route('/')38def home():39    return render_template('index.html')  # Si tu as un front-end intégré40 41@app.route('/static/<path:filename>')42def serve_static(filename):43    return send_from_directory('static', filename)44 45@app.route('/process', methods=['POST'])46def process_images():47    if 'image1' not in request.files or 'image2' not in request.files:48        return jsonify({'error': 'Two images must be provided (image1 and image2)'}), 40049 50    try:51        image1 = Image.open(io.BytesIO(request.files['image1'].read())).convert('RGB')52        image2 = Image.open(io.BytesIO(request.files['image2'].read())).convert('RGB')53 54        features1 = get_ft(model, image1)55        features2 = get_ft(model, image2)56 57        distance = float(np.linalg.norm(features1 - features2))58        return jsonify({'distance': distance})59 60    except Exception as e:61        print(f"Erreur back-end: {e}")62        return jsonify({'error': str(e)}), 50063 64if __name__ == '__main__':65    init_model()66    app.run(host='0.0.0.0', port=7860)67 68