AI-For-Beginners/translations/ur/examples/03-image-classifier.ipynb

397 lines
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# سادہ امیج کلاسفائر\n",
"\n",
"یہ نوٹ بک آپ کو دکھاتی ہے کہ پہلے سے تربیت یافتہ نیورل نیٹ ورک کا استعمال کرتے ہوئے تصاویر کو کیسے درجہ بند کیا جائے۔\n",
"\n",
"**آپ کیا سیکھیں گے:**\n",
"- پہلے سے تربیت یافتہ ماڈل کو لوڈ اور استعمال کرنے کا طریقہ\n",
"- تصویر کی پیشگی پروسیسنگ\n",
"- تصاویر پر پیش گوئیاں کرنا\n",
"- اعتماد کے اسکورز کو سمجھنا\n",
"\n",
"**استعمال کا کیس:** تصاویر میں اشیاء کی شناخت کریں (جیسے \"بلی\"، \"کتا\"، \"گاڑی\" وغیرہ) \n",
"\n",
"---\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## مرحلہ 1: ضروری لائبریریاں درآمد کریں\n",
"\n",
"آئیے وہ اوزار درآمد کریں جن کی ہمیں ضرورت ہے۔ فکر نہ کریں اگر آپ ابھی ان سب کو نہیں سمجھتے!\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Core libraries\n",
"import numpy as np\n",
"from PIL import Image\n",
"import requests\n",
"from io import BytesIO\n",
"\n",
"# TensorFlow for deep learning\n",
"try:\n",
" import tensorflow as tf\n",
" from tensorflow.keras.applications import MobileNetV2\n",
" from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions\n",
" print(\"✅ TensorFlow loaded successfully!\")\n",
" print(f\" Version: {tf.__version__}\")\n",
"except ImportError:\n",
" print(\"❌ Please install TensorFlow: pip install tensorflow\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## مرحلہ 2: پہلے سے تربیت یافتہ ماڈل لوڈ کریں\n",
"\n",
"ہم **MobileNetV2** استعمال کریں گے، جو لاکھوں تصاویر پر پہلے ہی تربیت یافتہ نیورل نیٹ ورک ہے۔\n",
"\n",
"اسے **Transfer Learning** کہا جاتا ہے - کسی اور کے تربیت یافتہ ماڈل کا استعمال!\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(\"📦 Loading pre-trained MobileNetV2 model...\")\n",
"print(\" This may take a minute on first run (downloading weights)...\")\n",
"\n",
"# Load the model\n",
"# include_top=True means we use the classification layer\n",
"# weights='imagenet' means it was trained on ImageNet dataset\n",
"model = MobileNetV2(weights='imagenet', include_top=True)\n",
"\n",
"print(\"✅ Model loaded!\")\n",
"print(f\" The model can recognize 1000 different object categories\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## مرحلہ 3: مددگار فنکشنز\n",
"\n",
"آئیے ایسے فنکشنز بناتے ہیں جو ہمارے ماڈل کے لیے تصاویر کو لوڈ اور تیار کریں۔\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def load_image_from_url(url):\n",
" \"\"\"\n",
" Load an image from a URL.\n",
" \n",
" Args:\n",
" url: Web address of the image\n",
" \n",
" Returns:\n",
" PIL Image object\n",
" \"\"\"\n",
" response = requests.get(url)\n",
" img = Image.open(BytesIO(response.content))\n",
" return img\n",
"\n",
"\n",
"def prepare_image(img):\n",
" \"\"\"\n",
" Prepare an image for the model.\n",
" \n",
" Steps:\n",
" 1. Resize to 224x224 (model's expected size)\n",
" 2. Convert to array\n",
" 3. Add batch dimension\n",
" 4. Preprocess for MobileNetV2\n",
" \n",
" Args:\n",
" img: PIL Image\n",
" \n",
" Returns:\n",
" Preprocessed image array\n",
" \"\"\"\n",
" # Resize to 224x224 pixels\n",
" img = img.resize((224, 224))\n",
" \n",
" # Convert to numpy array\n",
" img_array = np.array(img)\n",
" \n",
" # Add batch dimension (model expects multiple images)\n",
" img_array = np.expand_dims(img_array, axis=0)\n",
" \n",
" # Preprocess for MobileNetV2\n",
" img_array = preprocess_input(img_array)\n",
" \n",
" return img_array\n",
"\n",
"\n",
"def classify_image(img):\n",
" \"\"\"\n",
" Classify an image and return top predictions.\n",
" \n",
" Args:\n",
" img: PIL Image\n",
" \n",
" Returns:\n",
" List of (class_name, confidence) tuples\n",
" \"\"\"\n",
" # Prepare the image\n",
" img_array = prepare_image(img)\n",
" \n",
" # Make prediction\n",
" predictions = model.predict(img_array, verbose=0)\n",
" \n",
" # Decode predictions to human-readable labels\n",
" # top=5 means we get the top 5 most likely classes\n",
" decoded = decode_predictions(predictions, top=5)[0]\n",
" \n",
" # Convert to simpler format\n",
" results = [(label, float(confidence)) for (_, label, confidence) in decoded]\n",
" \n",
" return results\n",
"\n",
"\n",
"print(\"✅ Helper functions ready!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## مرحلہ 4: نمونہ تصاویر پر آزمائش کریں\n",
"\n",
"چلیں انٹرنیٹ سے کچھ تصاویر کی درجہ بندی کرنے کی کوشش کرتے ہیں!\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Sample images to classify\n",
"# These are from Unsplash (free stock photos)\n",
"test_images = [\n",
" {\n",
" \"url\": \"https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=400\",\n",
" \"description\": \"A cat\"\n",
" },\n",
" {\n",
" \"url\": \"https://images.unsplash.com/photo-1552053831-71594a27632d?w=400\",\n",
" \"description\": \"A dog\"\n",
" },\n",
" {\n",
" \"url\": \"https://images.unsplash.com/photo-1511919884226-fd3cad34687c?w=400\",\n",
" \"description\": \"A car\"\n",
" },\n",
"]\n",
"\n",
"print(f\"🧪 Testing on {len(test_images)} images...\")\n",
"print(\"=\" * 70)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ہر تصویر کو درجہ بندی کریں\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for i, img_data in enumerate(test_images, 1):\n",
" print(f\"\\n📸 Image {i}: {img_data['description']}\")\n",
" print(\"-\" * 70)\n",
" \n",
" try:\n",
" # Load image\n",
" img = load_image_from_url(img_data['url'])\n",
" \n",
" # Display image\n",
" display(img.resize((200, 200))) # Show smaller version\n",
" \n",
" # Classify\n",
" results = classify_image(img)\n",
" \n",
" # Show predictions\n",
" print(\"\\n🎯 Top 5 Predictions:\")\n",
" for rank, (label, confidence) in enumerate(results, 1):\n",
" # Create a visual bar\n",
" bar_length = int(confidence * 50)\n",
" bar = \"█\" * bar_length\n",
" \n",
" print(f\" {rank}. {label:20s} {confidence*100:5.2f}% {bar}\")\n",
" \n",
" except Exception as e:\n",
" print(f\"❌ Error: {e}\")\n",
"\n",
"print(\"\\n\" + \"=\" * 70)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## مرحلہ 5: اپنی تصاویر آزمائیں!\n",
"\n",
"نیچے دی گئی URL کو کسی بھی تصویر کی URL سے تبدیل کریں جسے آپ درجہ بندی کرنا چاہتے ہیں۔\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Try your own image!\n",
"# Replace this URL with any image URL\n",
"custom_image_url = \"https://images.unsplash.com/photo-1472491235688-bdc81a63246e?w=400\" # A flower\n",
"\n",
"print(\"🖼️ Classifying your custom image...\")\n",
"print(\"=\" * 70)\n",
"\n",
"try:\n",
" # Load and show image\n",
" img = load_image_from_url(custom_image_url)\n",
" display(img.resize((300, 300)))\n",
" \n",
" # Classify\n",
" results = classify_image(img)\n",
" \n",
" # Show results\n",
" print(\"\\n🎯 Top 5 Predictions:\")\n",
" print(\"-\" * 70)\n",
" for rank, (label, confidence) in enumerate(results, 1):\n",
" bar_length = int(confidence * 50)\n",
" bar = \"█\" * bar_length\n",
" print(f\" {rank}. {label:20s} {confidence*100:5.2f}% {bar}\")\n",
" \n",
" # Highlight top prediction\n",
" top_label, top_confidence = results[0]\n",
" print(\"\\n\" + \"=\" * 70)\n",
" print(f\"\\n🏆 Best guess: {top_label} ({top_confidence*100:.2f}% confident)\")\n",
" \n",
"except Exception as e:\n",
" print(f\"❌ Error: {e}\")\n",
" print(\" Make sure the URL points to a valid image!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 💡 کیا ہوا؟\n",
"\n",
"1. **ہم نے ایک پہلے سے تربیت یافتہ ماڈل لوڈ کیا** - MobileNetV2 کو لاکھوں تصاویر پر تربیت دی گئی تھی \n",
"2. **ہم نے تصاویر کو پہلے سے پروسیس کیا** - انہیں ماڈل کے لیے سائز اور فارمیٹ کیا \n",
"3. **ماڈل نے پیش گوئیاں کیں** - اس نے 1000 اشیاء کی کلاسز کے لیے امکانات دیے \n",
"4. **ہم نے نتائج کو ڈی کوڈ کیا** - نمبروں کو انسان کے لیے قابل فہم لیبلز میں تبدیل کیا \n",
"\n",
"### اعتماد کے اسکور کو سمجھنا\n",
"\n",
"- **90-100%**: بہت زیادہ اعتماد (تقریباً یقینی طور پر درست) \n",
"- **70-90%**: اعتماد (شاید درست) \n",
"- **50-70%**: کچھ حد تک اعتماد (ممکنہ طور پر درست) \n",
"- **50% سے کم**: زیادہ اعتماد نہیں (غیر یقینی) \n",
"\n",
"### پیش گوئیاں غلط کیوں ہو سکتی ہیں؟\n",
"\n",
"- **غیر معمولی زاویہ یا روشنی** - ماڈل کو عام تصاویر پر تربیت دی گئی تھی \n",
"- **متعدد اشیاء** - ماڈل ایک مرکزی شے کی توقع کرتا ہے \n",
"- **نایاب اشیاء** - ماڈل صرف 1000 زمروں کو جانتا ہے \n",
"- **کم معیار کی تصویر** - دھندلی یا پکسل شدہ تصاویر زیادہ مشکل ہوتی ہیں \n",
"\n",
"--- \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 🚀 اگلے مراحل\n",
"\n",
"1. **مختلف تصاویر آزمائیں:**\n",
" - [Unsplash](https://unsplash.com) پر تصاویر تلاش کریں\n",
" - دائیں کلک کریں → \"Copy image address\" سے URL حاصل کریں\n",
"\n",
"2. **تجربہ کریں:**\n",
" - تجریدی آرٹ کے ساتھ کیا ہوتا ہے؟\n",
" - کیا یہ مختلف زاویوں سے اشیاء کو پہچان سکتا ہے؟\n",
" - یہ متعدد اشیاء کو کیسے ہینڈل کرتا ہے؟\n",
"\n",
"3. **مزید سیکھیں:**\n",
" - [Computer Vision کے اسباق](../lessons/4-ComputerVision/README.md) کو دریافت کریں\n",
" - اپنی تصویر کی درجہ بندی کرنے والا ماڈل تربیت دینا سیکھیں\n",
" - سمجھیں کہ CNNs (Convolutional Neural Networks) کیسے کام کرتے ہیں\n",
"\n",
"---\n",
"\n",
"## 🎉 مبارک ہو!\n",
"\n",
"آپ نے ابھی ایک جدید نیورل نیٹ ورک استعمال کرتے ہوئے تصویر کی درجہ بندی کرنے والا ماڈل بنایا ہے!\n",
"\n",
"یہی تکنیک درج ذیل میں استعمال ہوتی ہے:\n",
"- گوگل فوٹوز (آپ کی تصاویر کو منظم کرنا)\n",
"- خودکار گاڑیاں (اشیاء کو پہچاننا)\n",
"- طبی تشخیص (ایکس رے کا تجزیہ کرنا)\n",
"- معیار کی جانچ (نقائص کا پتہ لگانا)\n",
"\n",
"سیکھتے رہیں اور دریافت کرتے رہیں! 🚀\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**ڈسکلیمر**: \nیہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.0"
},
"coopTranslator": {
"original_hash": "1d472141d9df46b751542b3c29f88677",
"translation_date": "2025-10-03T11:39:08+00:00",
"source_file": "examples/03-image-classifier.ipynb",
"language_code": "ur"
}
},
"nbformat": 4,
"nbformat_minor": 4
}