{"id":21445270,"url":"https://github.com/bunu23/image-classification-resnet50-streamlit","last_synced_at":"2026-04-07T07:45:55.687Z","repository":{"id":247711125,"uuid":"821183987","full_name":"bunu23/image-classification-resnet50-streamlit","owner":"bunu23","description":"This project demonstrates an image classification system using ResNet50, fine-tuned on a custom dataset. It includes a Streamlit application for user interaction, allowing image uploads and classification results. It integrates Google's generative AI models for enhanced analysis.","archived":false,"fork":false,"pushed_at":"2024-07-10T04:13:03.000Z","size":7780,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T15:35:45.316Z","etag":null,"topics":["cnn","deep-learning","generative-ai","keras","matplotlib","numpy","pillow","python","resnet-50","streamlit","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bunu23.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-06-28T02:00:50.000Z","updated_at":"2025-01-02T22:16:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d050e3b-d06f-4321-b138-461afec49786","html_url":"https://github.com/bunu23/image-classification-resnet50-streamlit","commit_stats":null,"previous_names":["bunu23/image-classification-resnet50-streamlit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bunu23/image-classification-resnet50-streamlit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunu23%2Fimage-classification-resnet50-streamlit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunu23%2Fimage-classification-resnet50-streamlit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunu23%2Fimage-classification-resnet50-streamlit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunu23%2Fimage-classification-resnet50-streamlit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bunu23","download_url":"https://codeload.github.com/bunu23/image-classification-resnet50-streamlit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bunu23%2Fimage-classification-resnet50-streamlit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31504897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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","deep-learning","generative-ai","keras","matplotlib","numpy","pillow","python","resnet-50","streamlit","tensorflow"],"created_at":"2024-11-23T02:25:22.597Z","updated_at":"2026-04-07T07:45:55.669Z","avatar_url":"https://github.com/bunu23.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Convolutional Neural Network\n\n# Image Classification Project using ResNet50 and Streamlit\n\n## Abstract\n\nThis project involves developing an advanced image classification system leveraging deep learning techniques, specifically the ResNet50 architecture, and integrating it with a user-friendly Streamlit application. The project demonstrates the application of transfer learning, extensive data augmentation, and integration with generative AI models to enhance functionality and user experience.\n\n## Introduction\n\nImage classification is a crucial task in computer vision, involving categorizing and labeling images based on their content. This project utilizes ResNet50, a deep residual network known for its effectiveness and accuracy in image classification tasks, and Streamlit, an open-source Python library, to create an interactive web application for model deployment.\n\n### Objectives\n\n- Implement ResNet50 for accurate image classification.\n- Develop a user-friendly Streamlit application for model interaction.\n- Integrate generative AI for advanced image and text analysis.\n\n## Image Classification Fundamentals\n\n### What is Image Classification?\n\nImage classification involves assigning labels to images based on their content using convolutional neural networks (CNNs). ResNet50, with its 50-layer architecture, is utilized for its ability to learn deep representations and achieve high accuracy.\n\n### Applications\n\nImage classification is applied in various fields, including healthcare, autonomous systems, retail, security, and environmental monitoring, enabling tasks such as disease diagnosis, object recognition, and surveillance.\n\n### Advantages and Challenges\n\n**Advantages:** High accuracy, scalability, automation, and versatility.  \n**Challenges:** Data dependency, computational intensity, vulnerability to attacks, and interpretability issues.\n\n## Project Overview\n\nThis project aims to develop a robust image classification system using the ResNet50 model, fine-tuned on a custom dataset. The project incorporates data augmentation techniques and integrates a Streamlit-based user interface for enhanced user interaction.\n\n### Dataset\n\nThe dataset consists of images organized into training, validation, and test sets, stored in a structured directory format essential for data loading and augmentation using TensorFlow's ImageDataGenerator.\n\n### Data Preparation\n\nEffective data preparation involves image preprocessing and augmentation to improve the model's generalization capabilities. Images are resized to 224x224 pixels and normalized. Data augmentation techniques include horizontal flipping, zooming, shifting, shearing, and rotation.\n\n## Model Development\n\n### Transfer Learning with ResNet50\n\nTransfer learning leverages the pre-trained ResNet50 model on the ImageNet dataset. Initial layers are frozen to retain learned features, while custom layers (GlobalAveragePooling2D, Dropout, Dense Layers) are added for the specific classification task.\n\n### Compiling the Model\n\nThe model is compiled with the Adam optimizer, categorical cross-entropy loss function, and accuracy metric. Callbacks for learning rate scheduling and early stopping enhance the training process.\n\n### Training and Fine-tuning\n\nThe model is initially trained with frozen base layers, followed by fine-tuning with lower learning rates to improve performance. This approach balances retaining learned features and adapting to the new dataset.\n\n## Evaluation and Results\n\nThe model's performance is evaluated on the test set, with metrics such as loss and accuracy computed. Visualizations of training/validation accuracy and loss over epochs help in understanding training dynamics.\n\n### Result and Visualization\n\nPlots showcasing the model's accuracy and loss are included, along with an analysis of class distribution and potential biases.\n\n![Test Data Distribution](chart1.png)\n![Train Data Distribution](chart2.png)\n![External Predication](externalpredication.png)\n![Interface Classification](interface.png)\n![Interface Gen](interface1.png)\n\n## Integration with Streamlit Application\n\n### User Interaction\n\nThe Streamlit application provides an interactive platform for users to upload images and receive classification results. The interface includes features for detailed analysis and user interaction.\n\n### Generative AI Integration\n\nGenerative AI models (e.g., Gemini Pro Vision for image analysis and Gemini Pro for text insights) are integrated to enhance the application's capabilities, offering users deeper insights and comprehensive interaction options.\n\n## Novelty and Potential Improvements\n\n### Hybrid Model Approach\n\nInnovative aspects include unique data augmentation strategies, regularization techniques, and a confidence threshold mechanism to handle uncertain samples. The user-centric design adds practical value to the project.\n\n### Potential Improvements\n\nFuture directions include exploring different pretrained models (e.g., InceptionV3, ResNet101), expanding the dataset for better generalization, and improving the application interface.\n\n## Feasibility Study\n\n### Technical Feasibility\n\nThe project utilizes established Python libraries (TensorFlow, Keras) and runs on personal laptops, demonstrating technical feasibility without specialized hardware.\n\n### Economic Feasibility\n\nUsing open-source libraries and tools ensures no direct costs, making the project economically feasible.\n\n### Time Feasibility\n\nThe project acknowledges longer processing times due to computational demands but remains feasible within typical development timelines.\n\n## Conclusion\n\nThis project demonstrates the potential of deep learning and generative AI in developing robust image classification systems. The combined approach of using transfer learning, data augmentation, and an interactive AI-powered application highlights the project's technical rigor and practical value.\n\n## Future Work\n\nPotential enhancements include exploring additional pretrained models, expanding the dataset, and refining the Streamlit application for better user experience.\n\n## Acknowledgements\n\nhttps://www.tensorflow.org/\n\nhttps://arxiv.org/pdf/1512.03385\n\nhttps://www.kaggle.com\n\nhttps://cloud.google.com/ai/generative-ai\n\nhttps://streamlit.io/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbunu23%2Fimage-classification-resnet50-streamlit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbunu23%2Fimage-classification-resnet50-streamlit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbunu23%2Fimage-classification-resnet50-streamlit/lists"}