Spaces:
Runtime error
Runtime error
| # -*- coding: utf-8 -*- | |
| """Untitled33.ipynb | |
| Automatically generated by Colab. | |
| Original file is located at | |
| https://colab.research.google.com/drive/1p2JWKpjv7_CT2FJ5sbbsq9ZtYVSzY5WS | |
| """ | |
| !pip install roboflow | |
| from roboflow import Roboflow | |
| rf = Roboflow(api_key="tN8RCHc8406wlBLQoCBx") | |
| workspace = rf.workspace("yomnasoror") # اسم الـ workspace بتاعك | |
| print("📂 Available Projects:") | |
| for p in workspace.projects(): | |
| print("-", p) | |
| from roboflow import Roboflow | |
| print("loading Roboflow workspace...") | |
| rf = Roboflow(api_key="tN8RCHc8406wlBLQoCBx") | |
| print("loading Roboflow project...") | |
| project = rf.workspace("yomnasoror").project("medical-waste") # الاسم لازم يكون lowercase بدون مسافات | |
| model = project.version(1).model | |
| print("✅ Model loaded successfully!") | |
| import os | |
| print(os.listdir()) | |
| import gradio as gr | |
| from roboflow import Roboflow | |
| # تحميل الموديل | |
| rf = Roboflow(api_key="tN8RCHc8406wlBLQoCBx") | |
| project = rf.workspace("yomnasoror").project("medical-waste") | |
| model = project.version(1).model | |
| # دالة التنبؤ | |
| def predict_image(image): | |
| pred = model.predict(image.name).json() | |
| return str(pred) | |
| # إنشاء واجهة Gradio | |
| iface = gr.Interface(fn=predict_image, inputs="file", outputs="text") | |
| iface.launch(share=True) | |
| !pip install pyngrok flask | |
| from pyngrok import ngrok | |
| # 🔐 أضيفي التوكِن بتاعك هنا | |
| ngrok.set_auth_token("3459NDFoZcow9VdVbCd6WF7Mjsq_5uLRwTaSyR4s4HeXk2Cq3") | |
| from flask import Flask | |
| app = Flask(__name__) | |
| def home(): | |
| return "🚀 Flask API is running!" | |
| # شغّلي السيرفر على بورت محدد | |
| from threading import Thread | |
| def run(): | |
| app.run(port=5000) | |
| t = Thread(target=run) | |
| t.start() | |
| # افتحي tunnel ngrok | |
| public_url = ngrok.connect(5000) | |
| print("🔥 Public URL:", public_url) | |
| !pip install flask ngrok | |
| from flask import Flask, request, jsonify | |
| from tensorflow.keras.models import load_model | |
| from tensorflow.keras.preprocessing import image | |
| import numpy as np | |
| from PIL import Image | |
| import io | |
| app = Flask(__name__) | |
| # ✅ تحميل الموديل | |
| model = load_model("model.h5") | |
| class_names = ['infectious', 'sharp', 'general'] | |
| def predict(): | |
| if 'file' not in request.files: | |
| return jsonify({'error': 'No file provided'}), 400 | |
| file = request.files['file'] | |
| img = Image.open(io.BytesIO(file.read())).resize((224, 224)) | |
| img_array = np.expand_dims(np.array(img) / 255.0, axis=0) | |
| preds = model.predict(img_array) | |
| pred_class = class_names[np.argmax(preds)] | |
| return jsonify({ | |
| 'prediction': pred_class, | |
| 'confidence': float(np.max(preds)) | |
| }) | |
| !pip install flask pyngrok roboflow | |
| import requests | |
| # 🔸 رابط الـAPI اللي ظهرلك من ngrok | |
| API_URL = "https://limbed-occupationless-kaitlynn.ngrok-free.dev" # ← غيّريه بالرابط اللي طلعلك | |
| # 🔸 مسار الصورة اللي عايزة تجربيها | |
| image_path = "/content/Sryngis34_JPG.rf.451be7985f401d1c4c8f170541813990.jpg" # أو ارفعي صورة بنفس الاسم في كولاب | |
| # 🔸 إرسال الصورة للـAPI | |
| with open("/content/Sryngis34_JPG.rf.451be7985f401d1c4c8f170541813990.jpg", "rb") as img: | |
| files = {"image": img} | |
| response = requests.post(API_URL + "/predict", files=files) | |
| # 🔸 عرض النتيجة | |
| print(response.json()) | |
| from flask import Flask, request, jsonify | |
| from roboflow import Roboflow | |
| from pyngrok import ngrok | |
| from threading import Thread | |
| # 🔹 تحميل الموديل من Roboflow | |
| print("Loading Roboflow model...") | |
| rf = Roboflow(api_key="tN8RCHc8406wlBLQoCBx") | |
| project = rf.workspace("yomnasoror").project("medical-waste") | |
| model = project.version(1).model | |
| print("✅ Model loaded successfully!") | |
| # 🔹 إنشاء تطبيق Flask | |
| app = Flask(__name__) | |
| def home(): | |
| return "✅ Medical Waste Classification API is running!" | |
| def predict(): | |
| if "image" not in request.files: | |
| return jsonify({"error": "No image uploaded"}), 400 | |
| image = request.files["image"] | |
| result = model.predict(image).json() | |
| return jsonify(result) | |
| # 🔹 استخدمي منفذ جديد | |
| port = 5001 # غيري عن 5000 | |
| public_url = ngrok.connect(port).public_url | |
| print(f"🚀 Public API URL: {public_url}") | |
| # Run the Flask app in a separate thread | |
| def run_flask_app(): | |
| app.run(port=port, debug=True, use_reloader=False) | |
| flask_thread = Thread(target=run_flask_app) | |
| flask_thread.start() | |
| import gradio as gr | |
| import requests | |
| # رابط الـAPI اللي عملتيه | |
| API_URL = "https://xxxxxx.ngrok-free.app/predict" # غيّريه بالرابط بتاعك | |
| # دالة ترسل الصورة إلى الـAPI وترجع النتيجة | |
| def predict_via_api(image): | |
| files = {"image": image} | |
| response = requests.post(API_URL, files=files) | |
| result = response.json() | |
| try: | |
| pred = result["predictions"][0] | |
| label = pred["class"] | |
| conf = pred["confidence"] | |
| return f"🧠 النوع: {label}\n📊 الدقة: {conf:.2f}" | |
| except Exception: | |
| return "⚠️ خطأ أثناء تحليل الصورة!" | |
| # إنشاء واجهة Gradio | |
| iface = gr.Interface( | |
| fn=predict_via_api, | |
| inputs=gr.Image(type="filepath", label="📸 ارفع صورة المخلفات الطبية"), | |
| outputs="text", | |
| title="BioTrack AI - Medical Waste Classifier", | |
| description="ارفع صورة، وسيقوم الذكاء الاصطناعي بالتعرف على نوع المخلفات الطبية 🔬" | |
| ) | |
| iface.launch(share=True) |