Instructions to use Suhani-2407/MobileNet_Fire with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers.js
How to use Suhani-2407/MobileNet_Fire with Transformers.js:
// npm i @huggingface/transformers import { pipeline } from '@huggingface/transformers'; // Allocate pipeline const pipe = await pipeline('image-classification', 'Suhani-2407/MobileNet_Fire');
| import os | |
| import numpy as np | |
| import tensorflow as tf | |
| from PIL import Image | |
| from io import BytesIO | |
| import base64 | |
| # Load the model when the script is loaded | |
| model = tf.keras.models.load_model("MobileNet_model.h5") | |
| # Your specific class labels | |
| class_labels = { | |
| 0: "Fake", | |
| 1: "Low", | |
| 2: "Medium", | |
| 3: "High" | |
| } | |
| def preprocess_image(image): | |
| """Preprocess the image for model prediction""" | |
| # Resize image to model's expected input dimensions | |
| image = image.resize((128, 128)) | |
| # Convert to numpy array and normalize | |
| img_array = np.array(image) / 255.0 | |
| # Add batch dimension | |
| img_array = np.expand_dims(img_array, axis=0) | |
| return img_array | |
| def predict_image(image): | |
| """Make prediction on a single image""" | |
| img_array = preprocess_image(image) | |
| predictions = model.predict(img_array) | |
| predicted_class_idx = np.argmax(predictions) | |
| predicted_class = class_labels[predicted_class_idx] | |
| confidence = float(np.max(predictions)) | |
| return { | |
| "predicted_class": predicted_class, | |
| "confidence": confidence, | |
| "class_probabilities": {class_labels[i]: float(prob) for i, prob in enumerate(predictions[0])} | |
| } | |
| def inference(data): | |
| """ | |
| Inference function for Hugging Face API | |
| data can be: | |
| - File path (string) | |
| - URL string | |
| - Base64 encoded image | |
| - Raw image bytes | |
| - Dict with image key containing any of the above | |
| """ | |
| # Handle different input formats | |
| if isinstance(data, dict) and "image" in data: | |
| data = data["image"] | |
| # Handle local file path | |
| if isinstance(data, str) and os.path.isfile(data): | |
| image = Image.open(data) | |
| # Handle URL (Hugging Face will download the image) | |
| elif isinstance(data, str) and (data.startswith("http://") or data.startswith("https://")): | |
| from urllib.request import urlopen | |
| with urlopen(data) as response: | |
| image_bytes = response.read() | |
| image = Image.open(BytesIO(image_bytes)) | |
| # Handle base64 encoded image | |
| elif isinstance(data, str) and data.startswith("data:image"): | |
| base64_data = data.split(",")[1] | |
| image_bytes = base64.b64decode(base64_data) | |
| image = Image.open(BytesIO(image_bytes)) | |
| # Handle raw image bytes | |
| elif isinstance(data, bytes): | |
| image = Image.open(BytesIO(data)) | |
| # Convert RGBA to RGB if needed | |
| if image.mode == "RGBA": | |
| image = image.convert("RGB") | |
| # Make prediction | |
| return predict_image(image) | |
| # For local testing | |
| if __name__ == "__main__": | |
| # Example of using a file path | |
| test_image_path = "path/to/test/image.jpg" | |
| if os.path.exists(test_image_path): | |
| result = inference(test_image_path) | |
| print(f"Predicted class: {result['predicted_class']}") | |
| print(f"Confidence: {result['confidence']:.4f}") |