{"id":30850142,"url":"https://github.com/robinmillford/art-intelligence-hub","last_synced_at":"2025-09-07T05:07:00.083Z","repository":{"id":263934521,"uuid":"891840426","full_name":"RobinMillford/Art-Intelligence-Hub","owner":"RobinMillford","description":"Streamlit application that showcases advanced deep learning models for art analysis. It includes two main tools: an Artwork Authenticity classifier to distinguish between AI-generated and human-made art, and an Art Style Ensemble Classifier that identifies the artistic style of a painting.","archived":false,"fork":false,"pushed_at":"2025-08-18T09:30:45.000Z","size":32758,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-18T11:27:35.191Z","etag":null,"topics":["ai-art","binary-classification","classifier","grad-cam","image-classification","mobilenetv2","real-art","streamlit-webapp","transfer-learning"],"latest_commit_sha":null,"homepage":"https://classify-ai-image-or-realart.streamlit.app/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobinMillford.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}},"created_at":"2024-11-21T03:35:48.000Z","updated_at":"2025-08-18T09:30:48.000Z","dependencies_parsed_at":"2025-08-18T11:19:26.671Z","dependency_job_id":"83b4bae1-3eb8-421e-96e0-196171458c0b","html_url":"https://github.com/RobinMillford/Art-Intelligence-Hub","commit_stats":null,"previous_names":["robinmillford/classifying-ai-generated-and-real-art","robinmillford/art-intelligence-hub"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RobinMillford/Art-Intelligence-Hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinMillford%2FArt-Intelligence-Hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinMillford%2FArt-Intelligence-Hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinMillford%2FArt-Intelligence-Hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinMillford%2FArt-Intelligence-Hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobinMillford","download_url":"https://codeload.github.com/RobinMillford/Art-Intelligence-Hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobinMillford%2FArt-Intelligence-Hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273997155,"owners_count":25204479,"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","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai-art","binary-classification","classifier","grad-cam","image-classification","mobilenetv2","real-art","streamlit-webapp","transfer-learning"],"created_at":"2025-09-07T05:06:58.976Z","updated_at":"2025-09-07T05:07:00.068Z","avatar_url":"https://github.com/RobinMillford.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Art Intelligence Hub: An Ensemble Deep Learning Project\n\nThis project is a **college capstone project** featuring a multi-page Streamlit application that showcases advanced deep learning models for art analysis. It includes two main tools: an **Artwork Authenticity** classifier to distinguish between AI-generated and human-made art, and an **Art Style Ensemble Classifier** that identifies the artistic style of a painting.\n\nThe app is deployed on **Streamlit Cloud** for public access, enabling users to upload images and receive robust, interpretable predictions.\n\n---\n\n## 🔥 Features\n\n- **Dual Classifier App**: A multi-page interface with two distinct art analysis tools.\n- **Artwork Authenticity Classification**:\n  - Predicts whether an image is AI-generated or real art using a fine-tuned `MobileNetV2`.\n  - Includes **Grad-CAM heatmap visualization** to highlight the image regions that influenced the model's prediction.\n- **Art Style Ensemble Classification**:\n  - Identifies an artwork's style from 10 categories (e.g., _Impressionism_, _Surrealism_).\n  - Combines the predictions of two powerful models (`EfficientNetV2-B2` and `ConvNeXt-Small`) for a more accurate and reliable result.\n- **Interpretability**:\n  - The \"Art Style\" page visualizes each model's top 3 predictions in a bar chart, showing its confidence and alternative considerations.\n- **Modern, Interactive UI**:\n  - A clean, dark-themed interface for a professional user experience.\n\n---\n\n## 🧠 Model Details\n\nThis project leverages three powerful, fine-tuned models:\n\n1.  **Artwork Authenticity Model**:\n    - **Base Model**: `MobileNetV2` (Transfer Learning)\n    - **Task**: Binary classification (AI Art or Real Art).\n2.  **Art Style Ensemble Models**:\n    - **Model A**: `EfficientNetV2-B2`\n    - **Model B**: `ConvNeXt-Small`\n    - **Task**: Multi-class classification (10 art styles).\n    - **Ensemble Strategy**: The final prediction is the averaged probability (soft voting) from both models.\n\n---\n\n## 📓 Kaggle Notebook\n\nThe model training and experimentation were conducted in a Kaggle Notebook. Key highlights include:\n\n- **Dataset Preparation**:\n  - Combined multiple datasets, including real art and AI-generated art (`Stable Diffusion` \u0026 `Midjourney`), totaling over **150,000 images**.\n  - The final dataset was split into **80% training**, **10% validation**, and **10% test** sets.\n- **Model Experimentation**:\n  - Fine-tuned three separate deep learning architectures (`MobileNetV2`, `EfficientNetV2-B2`, `ConvNeXt-Small`) using a two-stage transfer learning approach.\n  - Utilized modern training techniques such as the `AdamW` optimizer, learning rate scheduling, and advanced data augmentation.\n- **Key Insights**:\n  - The ensemble approach for style classification leverages the architectural diversity of `EfficientNetV2` (a powerful CNN) and `ConvNeXt-Small` (a modern hybrid) to achieve higher accuracy than either model alone.\n  - `MobileNetV2` was chosen for the authenticity task due to its lightweight and efficient design, making it ideal for a fast, responsive app.\n\n**Kaggle Notebook Link**: [Access Here](https://www.kaggle.com/code/yaminh/ai-vs-real-project)\n\n**Kaggle Notebook Link (Art Analysis with LoRa)**: [Access Here](https://www.kaggle.com/code/yaminh/art-style-analysis-with-cnns-and-lora)\n\n---\n\n## 🌟 Deployment\n\nThe app is deployed on **Streamlit Cloud**, making it accessible to users anywhere.\n\n**Streamlit App Link**: [Access Here](https://classify-ai-image-or-realart.streamlit.app/)\n\n---\n\n## 🖥️ How to Use\n\n### From GitHub\n\n1.  **Fork the Repository**.\n2.  **Clone the Repository**:\n    ```bash\n    git clone [https://github.com/RobinMillford/Art-Intelligence-Hub.git](https://github.com/RobinMillford/Art-Intelligence-Hub.git)\n    ```\n3.  **Navigate to the Project Folder**:\n    ```bash\n    cd Art-Intelligence-Hub\n    ```\n4.  **Install Git LFS**: Your models are large files. You must have Git LFS installed to download them.\n    ```bash\n    git lfs install\n    git lfs pull\n    ```\n5.  **Install Dependencies**:\n    ```bash\n    pip install -r requirements.txt\n    ```\n6.  **Run the App**:\n    ```bash\n    streamlit run app.py\n    ```\n7.  Open the local URL (http://localhost:8501) in your browser.\n\n### From Streamlit Cloud\n\n1.  **Visit the Deployed App**:\n    Open the [Streamlit App](https://classify-ai-image-or-realart.streamlit.app/) in your browser.\n2.  **Choose a Classifier**:\n    Select either \"Artwork Authenticity\" or \"Art Style Classifier\" from the sidebar.\n3.  **Upload an Image**:\n    Drag and drop an image or select a file to classify.\n4.  **View Results**:\n    See the model's prediction and explore the \"Individual Model Predictions\" expander for more details.\n\n---\n\n## 💻 How to Contribute\n\n1.  **Fork the Repository** on GitHub.\n2.  **Clone Your Forked Repository**.\n3.  **Create a New Branch**:\n    ```bash\n    git checkout -b feature/your-feature-name\n    ```\n4.  **Make Your Changes and Commit**.\n5.  **Push Changes to Your Fork**.\n6.  **Create a Pull Request**.\n\n---\n\n## 📚 Project Details\n\nThis project is part of our **college capstone project**, aimed at exploring the practical applications of **deep learning** and **computer vision** in art analysis. The goal was to develop a deployable app that combines efficient classification and intuitive user interaction.\n\n### Technologies Used\n\n- **TensorFlow/Keras**: For building and training the deep learning models.\n- **Streamlit**: For app development and deployment.\n- **OpenCV**: For image processing.\n- **Git LFS**: For managing large model files.\n\n---\n\n## 📄 License\n\nThis project is licensed under the [AGPL-3.0 license](LICENSE).\n\n---\n\n## 🌟 Acknowledgments\n\n- **Dataset Sources**: We used a combination of AI-generated art datasets and real art image collections from Kaggle.\n- **Faculty Advisors**: Thanks to our professors for their invaluable guidance throughout this project.\n- **Streamlit Community**: For resources and support in app deployment.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobinmillford%2Fart-intelligence-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobinmillford%2Fart-intelligence-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobinmillford%2Fart-intelligence-hub/lists"}