{"id":25720228,"url":"https://github.com/bhuvan-s-prasad/bird_classification-resnet","last_synced_at":"2026-02-14T16:34:01.114Z","repository":{"id":262453942,"uuid":"886529769","full_name":"Bhuvan-S-prasad/Bird_classification-resnet","owner":"Bhuvan-S-prasad","description":"A deep learning project utilizing ResNet-50 to classify images of 100 different bird species. This model uses transfer learning with data augmentation, learning rate scheduling, early stopping, and cross-entropy loss to achieve accurate classification.","archived":false,"fork":false,"pushed_at":"2025-03-22T11:44:49.000Z","size":180110,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T02:21:32.970Z","etag":null,"topics":["css","flask","html","javascript","machine-learning","neural-network","python","python3","pytorch","resnet-50","tensorflow"],"latest_commit_sha":null,"homepage":"https://web-production-4c59.up.railway.app/","language":"Python","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/Bhuvan-S-prasad.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}},"created_at":"2024-11-11T06:20:23.000Z","updated_at":"2025-03-22T11:44:55.000Z","dependencies_parsed_at":"2025-02-11T13:32:08.277Z","dependency_job_id":null,"html_url":"https://github.com/Bhuvan-S-prasad/Bird_classification-resnet","commit_stats":null,"previous_names":["bhuvan-s-prasad/mini_project","bhuvan-s-prasad/bird_classification-resnet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bhuvan-S-prasad%2FBird_classification-resnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bhuvan-S-prasad%2FBird_classification-resnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bhuvan-S-prasad%2FBird_classification-resnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bhuvan-S-prasad%2FBird_classification-resnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bhuvan-S-prasad","download_url":"https://codeload.github.com/Bhuvan-S-prasad/Bird_classification-resnet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252756788,"owners_count":21799552,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["css","flask","html","javascript","machine-learning","neural-network","python","python3","pytorch","resnet-50","tensorflow"],"created_at":"2025-02-25T17:36:58.615Z","updated_at":"2026-02-14T16:34:01.087Z","avatar_url":"https://github.com/Bhuvan-S-prasad.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bird Species Classification using convolutional neural network - resnet50\n\nA deep learning project utilizing ResNet-50 to classify images of 100 different bird species. This model uses transfer learning with data augmentation, learning rate scheduling, early stopping, and cross-entropy loss to achieve accurate classification.\n\n\n## Table of Contents\n- [Overview](#overview)\n- [Requirements](#requirements)\n- [Dataset](#dataset)\n- [Classes](#Classes)\n- [Model Architecture](#model-architecture)\n- [Training Pipeline](#training-pipeline)\n- [Prediction](#prediction)\n- [Usage](#usage)\n- [Results](#results)\n- [Acknowledgement](#Acknowledgement)\n\n## Overview\nThis project implements a bird species classifier using a modified ResNet-50 architecture trained on a custom dataset with 100 bird species. Data augmentation is applied to improve model generalization, and training metrics are logged to track model performance.\n\n## Requirements\nTo set up and run this project, install the following packages:\n\n- Python 3.x\n- PyTorch\n- torchvision\n- scikit-learn\n- pandas\n- numpy\n- seaborn\n- matplotlib\n- tqdm\n- psutil\n- PIL (Pillow)\n\n```bash\npip install torch torchvision scikit-learn pandas numpy seaborn matplotlib tqdm psutil pillow\n```\n\n## Dataset\nThe dataset consists of three folders: `train`, `val`, and `test`, located in the `data_dir` directory. Each folder contains images categorized by bird species. This project uses a `[70-20-10]` split for training, validation, and testing.\n\n## Classes\n\nThe dataset contains the following bird species along with an \"unknown\" class:\n\n1. Black-footed Albatross  \n2. Laysan Albatross  \n3. Sooty Albatross  \n4. Groove-billed Ani  \n5. Crested Auklet  \n6. Least Auklet  \n7. Parakeet Auklet  \n8. Rhinoceros Auklet  \n9. Brewer Blackbird  \n10. Red-winged Blackbird  \n11. Rusty Blackbird  \n12. Yellow-headed Blackbird  \n13. Bobolink  \n14. Indigo Bunting  \n15. Lazuli Bunting  \n16. Painted Bunting  \n17. Cardinal  \n18. Spotted Catbird  \n19. Gray Catbird  \n20. Yellow-breasted Chat  \n21. Eastern Towhee  \n22. Chuck-will's-widow  \n23. Brandt's Cormorant  \n24. Red-faced Cormorant  \n25. Pelagic Cormorant  \n26. Bronzed Cowbird  \n27. Shiny Cowbird  \n28. Brown Creeper  \n29. American Crow  \n30. Fish Crow  \n31. Black-billed Cuckoo  \n32. Mangrove Cuckoo  \n33. Yellow-billed Cuckoo  \n34. Gray-crowned Rosy Finch  \n35. Purple Finch  \n36. Northern Flicker  \n37. Acadian Flycatcher  \n38. Great Crested Flycatcher  \n39. Least Flycatcher  \n40. Olive-sided Flycatcher  \n41. Scissor-tailed Flycatcher  \n42. Vermilion Flycatcher  \n43. Yellow-bellied Flycatcher  \n44. Frigatebird  \n45. Northern Fulmar  \n46. Gadwall  \n47. American Goldfinch  \n48. European Goldfinch  \n49. Boat-tailed Grackle  \n50. Eared Grebe  \n51. Horned Grebe  \n52. Pied-billed Grebe  \n53. Western Grebe  \n54. Blue Grosbeak  \n55. Evening Grosbeak  \n56. Pine Grosbeak  \n57. Rose-breasted Grosbeak  \n58. Pigeon Guillemot  \n59. California Gull  \n60. Glaucous-winged Gull  \n61. Heermann's Gull  \n62. Herring Gull  \n63. Ivory Gull  \n64. Ring-billed Gull  \n65. Slaty-backed Gull  \n66. Western Gull  \n67. Anna's Hummingbird  \n68. Ruby-throated Hummingbird  \n69. Rufous Hummingbird  \n70. Green Violetear  \n71. Long-tailed Jaeger  \n72. Pomarine Jaeger  \n73. Blue Jay  \n74. Florida Jay  \n75. Green Jay  \n76. Dark-eyed Junco  \n77. Tropical Kingbird  \n78. Gray Kingbird  \n79. Belted Kingfisher  \n80. Green Kingfisher  \n81. Pied Kingfisher  \n82. Ringed Kingfisher  \n83. White-breasted Kingfisher  \n84. Red-legged Kittiwake  \n85. Horned Lark  \n86. Pacific Loon  \n87. Mallard  \n88. Western Meadowlark  \n89. Hooded Merganser  \n90. Red-breasted Merganser  \n91. Mockingbird  \n92. Nighthawk  \n93. Clark's Nutcracker  \n94. White-breasted Nuthatch  \n95. Baltimore Oriole  \n96. Hooded Oriole  \n97. Orchard Oriole  \n98. Scott's Oriole  \n99. Ovenbird  \n100. Brown Pelican  \n101. Unknown\n\n\n## Model Architecture\nThis project uses a pre-trained ResNet-50 architecture modified to classify 100 bird species:\n\n- **Transfer Learning**: Pre-trained weights on ImageNet are used to initialize the model.\n- **Final Layer Adjustment**: The final fully connected layer is modified to match the number of bird classes.\n- **Optimization**: The model is trained using the Adam optimizer with weight decay to prevent overfitting.\n\n## Training Pipeline\n- **Data Augmentation**: Random transformations are applied to the training dataset.\n- **Training Loop**: The model is trained with `CrossEntropyLoss` and the Adam optimizer, using `ReduceLROnPlateau` to adjust the learning rate based on validation loss.\n- **Early Stopping**: Training stops early if validation loss does not improve for a set patience period.\n\nTraining metrics are saved to `training_log_fix_final.csv` for analysis, and the best model is saved as `best_model_fix_final.pth`.\n\n## Prediction\nThe prediction pipeline allows inference on new bird images using the trained ResNet-50 model:\n\n- The model expects images to be resized and normalized to match the training distribution.\n- The `predict_image()` function loads the image, applies transformations, and returns the predicted bird species.\n\n## application\n- ```app.py``` built using flask and deployed in railway.app\n\n## Usage\n\n- **Prediction**: Use `prediction.py` to classify images. Update `image_path` and `model_path` accordingly.\n\n## Results\nThe final model achieves notable accuracy on the validation set. Check the saved logs for per-epoch metrics and performance analysis.\nfinally deployed the flask application with the railway.app \n\n## Acknowledgement\nThis project is done under the guidance of [Dr Agughasi Victor Ikechukwu](https://github.com/Victor-Ikechukwu)\n\n## Future Enhancement\n- **Ensemble Approach**: Perform ensembling using at least 5 pre-trained models and compare their performance vs training from scratch.\n- **Explainability**: Explore explainable approaches via GradCAM, SHAP \u0026 LIME.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhuvan-s-prasad%2Fbird_classification-resnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhuvan-s-prasad%2Fbird_classification-resnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhuvan-s-prasad%2Fbird_classification-resnet/lists"}