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

397 lines
19 KiB
Plaintext

{
"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",
"ಇದನ್ನು **ಟ್ರಾನ್ಸ್‌ಫರ್ ಲರ್ನಿಂಗ್** ಎಂದು ಕರೆಯುತ್ತಾರೆ - ಯಾರೋ ಇನ್ನೊಬ್ಬರು ತರಬೇತಿ ನೀಡಿದ ಮಾದರಿಯನ್ನು ಬಳಸುವುದು!\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",
" - ಬಲ ಕ್ಲಿಕ್ ಮಾಡಿ → \"ಚಿತ್ರ ವಿಳಾಸ ನಕಲಿಸಿ\" ಮೂಲಕ URL ಪಡೆಯಿರಿ\n",
"\n",
"2. **ಪ್ರಯೋಗ ಮಾಡಿ:**\n",
" - ಅಬ್ಸ್ಟ್ರಾಕ್ಟ್ ಆರ್ಟ್‌ನೊಂದಿಗೆ ಏನು ಆಗುತ್ತದೆ?\n",
" - ಇದು ವಿಭಿನ್ನ ಕೋನಗಳಿಂದ ವಸ್ತುಗಳನ್ನು ಗುರುತಿಸಬಹುದೇ?\n",
" - ಇದು ಬಹು ವಸ್ತುಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ?\n",
"\n",
"3. **ಹೆಚ್ಚು ತಿಳಿದುಕೊಳ್ಳಿ:**\n",
" - [ಕಂಪ್ಯೂಟರ್ ವೀಷನ್ ಪಾಠಗಳು](../lessons/4-ComputerVision/README.md) ಅನ್ವೇಷಿಸಿ\n",
" - ನಿಮ್ಮದೇ ಚಿತ್ರ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವುದನ್ನು ಕಲಿಯಿರಿ\n",
" - CNNs (ಕನ್ವಲ್ಯೂಷನಲ್ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು) ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ\n",
"\n",
"---\n",
"\n",
"## 🎉 ಅಭಿನಂದನೆಗಳು!\n",
"\n",
"ನೀವು ಇತ್ತೀಚಿನ ತಂತ್ರಜ್ಞಾನ ನ್ಯೂರಲ್ ನೆಟ್‌ವರ್ಕ್ ಬಳಸಿ ಚಿತ್ರ ವರ್ಗೀಕರಣಕಾರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ!\n",
"\n",
"ಈ ತಂತ್ರಜ್ಞಾನವು ಈ ಕೆಳಗಿನ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ:\n",
"- Google Photos (ನಿಮ್ಮ ಫೋಟೋಗಳನ್ನು ವ್ಯವಸ್ಥಿತಗೊಳಿಸುವುದು)\n",
"- ಸ್ವಯಂಚಾಲಿತ ಕಾರುಗಳು (ವಸ್ತುಗಳನ್ನು ಗುರುತಿಸುವುದು)\n",
"- ವೈದ್ಯಕೀಯ ನಿರ್ಣಯ (X-ರೇಗಳನ್ನು ವಿಶ್ಲೇಷಿಸುವುದು)\n",
"- ಗುಣಮಟ್ಟ ನಿಯಂತ್ರಣ (ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು)\n",
"\n",
"ಮುಂದುವರಿದು ಅನ್ವೇಷಿಸಿ ಮತ್ತು ಕಲಿಯಿರಿ! 🚀\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\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-11-25T23:47:17+00:00",
"source_file": "examples/03-image-classifier.ipynb",
"language_code": "kn"
}
},
"nbformat": 4,
"nbformat_minor": 4
}