|
|
|
|
|
"""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") |
|
|
|
|
|
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") |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
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__) |
|
|
|
|
|
@app.route("/") |
|
|
def home(): |
|
|
return "🚀 Flask API is running!" |
|
|
|
|
|
|
|
|
from threading import Thread |
|
|
def run(): |
|
|
app.run(port=5000) |
|
|
|
|
|
t = Thread(target=run) |
|
|
t.start() |
|
|
|
|
|
|
|
|
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'] |
|
|
|
|
|
@app.route('/predict', methods=['POST']) |
|
|
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_URL = "https://limbed-occupationless-kaitlynn.ngrok-free.dev" |
|
|
|
|
|
|
|
|
image_path = "/content/Sryngis34_JPG.rf.451be7985f401d1c4c8f170541813990.jpg" |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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!") |
|
|
|
|
|
|
|
|
app = Flask(__name__) |
|
|
|
|
|
@app.route("/", methods=["GET"]) |
|
|
def home(): |
|
|
return "✅ Medical Waste Classification API is running!" |
|
|
|
|
|
@app.route("/predict", methods=["POST"]) |
|
|
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 |
|
|
public_url = ngrok.connect(port).public_url |
|
|
print(f"🚀 Public API URL: {public_url}") |
|
|
|
|
|
|
|
|
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_URL = "https://xxxxxx.ngrok-free.app/predict" |
|
|
|
|
|
|
|
|
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 "⚠️ خطأ أثناء تحليل الصورة!" |
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
|