This project is an image classification and management tool designed to help users sort, tag, and manage large sets of images efficiently. The tool leverages AI to automatically classify and tag images, while also providing a user-friendly GUI for manual adjustments. The system is built using a combination of modern web technologies and machine learning models, making it both powerful and easy to use.
- AI-Powered Sorting: Automatically sorts images based on quality, relevance, and other configurable parameters.
- Automatic Tagging: Uses AI to assign keywords to images, helping to classify them by themes and categories.
- Drag & Drop Support: Easily manage images with drag-and-drop functionality.
- Batch Naming: Assign default names to images in bulk.
- Manual Tagging: Add or remove tags manually to improve accuracy.
- Filtering: Filter images by keywords to quickly identify categories and spot errors.
- Notifications: Receive notifications for critical actions and errors.
- Flexible Tagging: Add tags to images via the CLI.
- Batch Processing: Process multiple ZIP files and assign tags in bulk.
- Easy Setup: Start the web server with a single script.
- Docker Support: Use Docker Compose to set up the entire environment (Web Server, AI, and GUI).
- YOLOv9: Utilizes the YOLOv9 model for object detection and image classification.
- RoboFlow: For dataset creation, annotation, and augmentation.
- FastAPI: Powers the REST API for communication between the GUI and the AI backend.
- Vue.js: The core framework for building the user interface.
- TailwindCSS: For styling the interface with utility-first CSS.
- Flowbite: Provides pre-built components for Vue.js.
- Axios: For making HTTP requests to the backend API.
- zip.js: For extracting ZIP files directly in the browser.
- Browser Image Compression: Compresses images in the browser to save resources.
- Vue.Draggable: Enables drag-and-drop functionality for image management.
- Python: The primary language for the AI and backend logic.
- FastAPI: For building the RESTful API.
- YOLOv9: For image classification and object detection.
- RoboFlow: For dataset management and annotation.
- CLI: Command-line interface for batch processing and tagging.
- Python: Install Python 3.8 or higher.
- Node.js: Install Node.js for running the GUI.
- GPU: Recommended for faster AI processing (NVIDIA GPU with CUDA support).
-
Clone the Repository:
git clone https://github.com/zetioz/ImageClassifier.git cd ./ImageClassifier/ -
Install Dependencies:
- For the AI and Web Server:
pip install -r ./AI/requirements.txt pip install -r ./AI/gpu-enable-requirements.txt pip install -r ./WebServer/requirements.txt
- For the GUI:
cd ./GUI/ npm install
- For the AI and Web Server:
-
Start the Web Server:
- For Windows:
start_server.bat
- For Linux:
./start_server.sh
- For Windows:
-
Run the GUI:
cd gui npm audit fix npm run dev --host -
Docker Setup (Optional):
- Use Docker Compose to set up the entire environment:
docker-compose up
- Use Docker Compose to set up the entire environment:
- Upload ZIP Files: Drag and drop ZIP files containing images into the GUI.
- Configure AI: Set parameters like sharpness, brightness, and banned keywords.
- Batch Naming: Assign default names to images in bulk.
- Automatic Sorting and Tagging: Let the AI sort and tag the images.
- Manual Adjustments: Use drag-and-drop to move images between categories, and add/remove tags as needed.
- Filtering: Filter images by keywords to quickly find specific categories.
- Save: Save the results.
- Basic Usage:
python ./AI/src/main.py -n "Photos camp" -z zip1 -z zip2 -z zip3 -t tag1 -t tag2 - Flags:
-n: Batch name for images.-z: ZIP files to process.-t: Tags to assign to images.
- Start the web server using the provided scripts or Docker Compose.
- Bug Fixes:
- Fix issues with multiple archive uploads on Chromium-based browsers.
- Improve drag-and-drop functionality after filtering.
- Enhancements:
- Improve the UX for manual keyword addition.
- Integrate with external image libraries like Keepeek.
- Minimum Requirements:
- CPU: Dual Core x86
- HDD: 15 GB
- Recommended Requirements:
- CPU: 8 Core x86
- GPU: RTX 2060 or higher
- HDD: 50 GB
Contributions are welcome! Please fork the repository and submit a pull request with your changes.
This project is open-source and available under the GNU General Public License.
For more detailed documentation, please refer to the project report.