{"id":31642237,"url":"https://github.com/parth147op/intel-image-classification","last_synced_at":"2026-05-04T13:34:40.396Z","repository":{"id":318197321,"uuid":"1066472876","full_name":"parth147op/intel-image-classification","owner":"parth147op","description":"Intel Image Classification using CNN \u0026 Transfer Learning (VGG16) with Streamlit demo.","archived":false,"fork":false,"pushed_at":"2025-10-05T17:46:10.000Z","size":2693,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-05T19:29:00.194Z","etag":null,"topics":["cnn","computer-vision","deep-learning","image-classification","keras","streamlit","tensorflow","transfer-learning"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parth147op.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-29T14:29:31.000Z","updated_at":"2025-10-05T17:48:26.000Z","dependencies_parsed_at":"2025-10-05T19:29:07.284Z","dependency_job_id":"bfbfdb64-9526-47ed-bf80-29cb19673860","html_url":"https://github.com/parth147op/intel-image-classification","commit_stats":null,"previous_names":["parth147op/intel-image-classification"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/parth147op/intel-image-classification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parth147op%2Fintel-image-classification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parth147op%2Fintel-image-classification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parth147op%2Fintel-image-classification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parth147op%2Fintel-image-classification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parth147op","download_url":"https://codeload.github.com/parth147op/intel-image-classification/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parth147op%2Fintel-image-classification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32609861,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cnn","computer-vision","deep-learning","image-classification","keras","streamlit","tensorflow","transfer-learning"],"created_at":"2025-10-07T03:57:27.395Z","updated_at":"2026-05-04T13:34:40.372Z","avatar_url":"https://github.com/parth147op.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🖼️ Intel Image Classification with CNNs \u0026 Transfer Learning\n\n![Python](https://img.shields.io/badge/Python-3.10-blue?logo=python\u0026logoColor=white)\n![TensorFlow](https://img.shields.io/badge/TensorFlow-2.14-orange?logo=tensorflow\u0026logoColor=white)\n![Keras](https://img.shields.io/badge/Keras-3.3.3-red?logo=keras\u0026logoColor=white)\n![Streamlit](https://img.shields.io/badge/Streamlit-App-FF4B4B?logo=streamlit\u0026logoColor=white)\n![Status](https://img.shields.io/badge/Project%20Status-Completed-brightgreen)\n![License](https://img.shields.io/badge/License-MIT-yellow)\n\n\u003e 🧠 A complete end-to-end deep-learning pipeline — from data preprocessing and CNN training to a deployment-ready Streamlit app.\n\n---\n\n## 📌 Project Overview\n\nThis project focuses on **scene image classification** using Convolutional Neural Networks (CNNs) and Transfer Learning.  \nThe dataset consists of natural scenes categorized into six classes, and the goal was to develop a high-accuracy model deployable via Streamlit.\n\n**Highlights**\n- 🧩 Baseline CNN from scratch (80 % accuracy)  \n- ⚙️ Transfer learning with **VGG16** (88 %)  \n- 🎯 Fine-tuned model reaching **90 %+ validation accuracy**  \n- 📈 Visualizations: confusion matrix and Grad-CAM interpretability  \n- 🖥️ Frontend built in **Streamlit**\n\n---\n\n## 📂 Dataset\n\n- **Source:** [Intel Image Classification Dataset – Kaggle](https://www.kaggle.com/puneet6060/intel-image-classification)\n- **Classes:** `buildings`, `forest`, `glacier`, `mountain`, `sea`, `street`\n- **Split:**\n  - Train ≈ 14 000  \n  - Validation ≈ 3 000  \n  - Test ≈ 3 000  \n\n---\n\n## 🧱 Architecture \u0026 Approach\n\n### Data preparation\n- Verified and removed corrupted images  \n- Applied extensive augmentation (`rotation`, `shift`, `zoom`, `brightness`, `flip`)  \n- Normalized pixels to [0, 1]\n\n### Baseline CNN\n- 3 convolutional + pooling layers  \n- Dense layer (256 neurons + dropout)  \n- Accuracy ≈ 80 % @ 10 epochs  \n\n### Transfer Learning – VGG16\n- Pre-trained ImageNet base  \n- Custom head: `Flatten → Dense(512 ReLU) → Dropout → Softmax(6)`  \n- Validation ≈ 88 %\n\n### Fine-tuned Model\n- Unfrozen last block (`block5_conv1–3`)  \n- LR = 1e-5, early stopping  \n- Validation ≈ 90.4 %, Test ≈ 90.2 %\n\n### Hyperparameter Optimization\n- Tuned with **Keras Tuner**: conv blocks, filters, dense units, dropout, optimizer, LR  \n\n---\n\n## 📊 Results\n\n| Model | Validation Acc | Test Acc |\n|:------|:---------------:|:--------:|\n| Baseline CNN | 80 % | 78.5 % |\n| VGG16 (frozen) | 88.4 % | 87.5 % |\n| **VGG16 (fine-tuned)** | **90.4 %** | **90.2 %** |\n\n**Classification Report**\n\n```\n              precision    recall  f1-score   support\n   buildings      0.91     0.87     0.89       437\n      forest      0.97     0.99     0.98       474\n     glacier      0.87     0.85     0.86       553\n    mountain      0.86     0.84     0.85       525\n         sea      0.92     0.92     0.92       510\n      street      0.89     0.94     0.92       501\n    accuracy                          0.90      3000\n```\n\n---\n\n## 📸 Visualizations\n\n| Confusion Matrix |\n|:-----------------|\n| ![Confusion Matrix](results/Confusion_Matrix.png) |\n\n**Streamlit App Demo**\n\n![Streamlit Demo](results/streamlit_demo.png)\n\n---\n\n## 🧩 Tech Stack\n- **Languages:** Python (Numpy, Pandas)  \n- **Frameworks:** TensorFlow 2.14 · Keras 3.3.3 · Streamlit  \n- **Visualization:** Matplotlib · Seaborn · OpenCV  \n- **Tools:** Jupyter Notebook · Keras Tuner · Git  \n\n---\n\n## 🚀 Deployment \u0026 MLOps\n\n![Docker](https://img.shields.io/badge/Docker-Ready-blue?logo=docker)\n![AWS](https://img.shields.io/badge/AWS-Deployable-232F3E?logo=amazonaws)\n![CI/CD](https://img.shields.io/badge/MLOps-GitHub%20Actions-lightgrey?logo=githubactions)\n\n### Deployment Options\n- Dockerized App  \n  ```bash\n  docker build -t intel-cnn-api .\n  docker run -p 8501:8501 intel-cnn-api\n  ```\n- Deploy on AWS · GCP · Render · Streamlit Cloud  \n- Production server → NGINX + Gunicorn  \n\n### MLOps Extensions\n- CI/CD pipeline (GitHub Actions)  \n- Model registry (MLflow / Weights \u0026 Biases)  \n- Drift monitoring \u0026 auto-rollback  \n\n---\n\n## 🎨 Streamlit App\n\n**Run locally**\n\n```bash\nstreamlit run app/app.py\n```\n\n**Features**\n- Upload JPG/PNG image  \n- Displays prediction + confidence chart  \n- Clean and responsive UI  \n\n---\n\n## ⚙️ Setup Guide\n\n```bash\n# 1️⃣ Clone repo\ngit clone https://github.com/parthhpatel/intel-image-classification.git\ncd intel-image-classification\n\n# 2️⃣ Create virtual environment\npython -m venv venv\n.\u000benv\\Scripts\u0007ctivate\n\n# 3️⃣ Install requirements\npip install -r requirements.txt\n\n# 4️⃣ Run app or notebook\nstreamlit run app/app.py\n# or\njupyter notebook notebooks/Intel_Image_Classification.ipynb\n```\n\n---\n\n## 🗂️ Folder Structure\n\n```\nintel-image-classification/\n├── notebooks/\n│   └── Intel_Image_Classification.ipynb\n├── app/\n│   ├── app.py\n│   └── intel_cnn_best.h5\n├── results/\n│   ├── confusion_matrix.png   \n│   └── streamlit_demo.png\n├── requirements.txt\n├── README.md\n├── .gitignore\n└── LICENSE\n```\n\n---\n\n## 🧠 Key Learnings\n- Built CNN \u0026 transfer-learning pipelines  \n- Fine-tuned pre-trained architectures  \n- Hyperparameter tuning with Keras Tuner  \n- Grad-CAM model interpretability  \n- Streamlit deployment and MLOps readiness  \n\n---\n\n## 🧾 License\nReleased under the **MIT License**.  \nSee the [LICENSE](LICENSE) file for details.\n\n---\n\n## 👤 Author\n\n**Parth Patel**  \n📧 [parthhpatel2504@gmail.com](mailto:parthhpatel2504@gmail.com)  \n🔗 [LinkedIn](https://www.linkedin.com/in/parth-patel-8990a9281/) · [GitHub](https://github.com/parth147op)\n\n---\n\n\u003e 🚀 From data to deployment — making deep learning models interpretable, performant and production-ready.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparth147op%2Fintel-image-classification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparth147op%2Fintel-image-classification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparth147op%2Fintel-image-classification/lists"}