VisionAI is a PyQt5-based desktop application for organizing image collections using Vision AI and manual tools. Users can select folders, navigate history, sort folders, view individual images, open subfolders, and delete unwanted folders. VisionAI leverages AI to analyze and categorize images, enhancing the manual organization process and making it efficient to manage large image collections.
- Features
- Installation
- Usage
- Testing
- Datasets
- Project Structure
- Demo
- Burndown Chart
- Technologies Used
- Contributing
- License
- Acknowledgements
- Select Folder: Choose a directory to display its contents.
- Navigate History: Use back and forward buttons to navigate through folder history.
- Sort Folders: Sort folders by the number of images they contain.
- View Images: Double-click to view single images.
- Open Folder: Double-click to open any displayed folder.
- Vision AI: Automatically create albums for folders using Vision AI.
- Manual Classification: Manually create albums for selected images.
- Web Demo: View a web demo hosted on Hugging Face.
- Rename Folder: Rename an album folder with confirmation.
- Delete Folder: Delete an album folder with confirmation.
- Information Dialog: View instructions and information about the application.
-
Clone the repository:
git clone https://github.com/mmgallai/VisionAI.git cd VisionAI
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
-
Install dependencies:
pip install -r requirements.txt
-
Install PyQt5:
pip install PyQt5
-
Install pytest and pytest-qt for testing:
pip install pytest pytest-qt
-
Run the application:
python app.py
-
Interact with the UI:
- Use the buttons to navigate, sort, and select folders.
- Double-click on images to view them.
- Use the "Vision AI" and "Manual" buttons to organize images.
- Use the "Delete" button to remove folders.
- Run the tests:
pytest tests/
- Link to Dataset : Subset of parent
- Link to Parent Dataset : Parent dataset
VisionAI/
├── controller/
│ ├── AI.py
│ └── Manual.py
├── view/
│ ├── ButtonPanel.py
│ ├── ButtonStyle.py
│ ├── CloseConfirmationDialog.py
│ ├── DemoButton.py
│ ├── FolderList.py
│ ├── FrameSettings.py
│ ├── HistoryManager.py
│ ├── ImageDisplay.py
│ ├── InformationDialog.py
│ ├── InitialFolderSelection.py
│ ├── MainView.py
│ ├── UploadButton.py
│ └── SelectMethod.py
├── tests/
│ ├── __init__.py
│ ├── test_AI_NumberOfOutputs.py
│ ├── test_AI_PredictedCity.py
│ ├── test_AI_Preprocessing.py
│ ├── test_ButtonPanel.py
│ ├── test_Delete_FolderList.py
│ ├── test_IconsExist.py
│ ├── test_ImageCount.py
│ ├── test_InformationDialog.py
│ ├── test_Manual.py
│ ├── test_ModelExist.py
│ ├── test_SelectMethod.py
│ └── test_WebDemo.py
├── test images/
│ ├── image1.jpg
│ ├── image2.jpg
│ ├── image3.jpg
│ ├── image4.jpg
│ ├── image5.jpg
│ ├── image6.jpg
│ ├── image7.jpg
│ ├── image8.jpg
│ ├── image9.jpg
│ ├── image10.jpg
│ └── names.txt
├── icons/
│ ├── back_icon.png
│ ├── delete_icon.png
│ ├── directories_icon.png
│ ├── folder_icon.png
│ ├── forward_icon.png
│ ├── image_icon.png
│ ├── info_icon.png
│ ├── method_icon.png
│ └── sort_icon.png
├── model/
│ └── best.onnx
├── app.py
├── requirements.txt
└── README.md
- app.py: The main entry point for the application.
Python: The primary programming language used for this project.
PyQt5: Used for creating the graphical user interface.
ONNX: Used for the machine learning models.
pytest: Used for testing the application.
GitHub: For version control and collaboration.
Contributions are welcome! Please create an issue or submit a pull request for any improvements or bug fixes.
This project is licensed under the MIT License.
- This project uses PyQt5 for the graphical user interface.
- This project uses YOLOv8 to organize images.
- Special thanks to user "amaralibey" in kaggle for the datatset.
- Special thanks to the contributors and the open-source community for their support.