https://github.com/maxinexiong/imageai-flask-apps
This project offers two Flask applications that utilize ImageAI's image prediction algorithms and object detection models. These apps enable users to upload images and videos for object recognition, detection and analysis, providing accurate prediction results, confidence scores, raw data of detected objects at frame-level, and object insights.
https://github.com/maxinexiong/imageai-flask-apps
ai-project computer-vision css3 data-visualization flask flask-application html5 image-recognition imageai matplotlib-pyplot moviepy pandas pandas-dataframe python video-object-detection
Last synced: 2 months ago
JSON representation
This project offers two Flask applications that utilize ImageAI's image prediction algorithms and object detection models. These apps enable users to upload images and videos for object recognition, detection and analysis, providing accurate prediction results, confidence scores, raw data of detected objects at frame-level, and object insights.
- Host: GitHub
- URL: https://github.com/maxinexiong/imageai-flask-apps
- Owner: MaxineXiong
- License: other
- Created: 2023-06-12T09:40:47.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-26T12:08:12.000Z (12 months ago)
- Last Synced: 2025-03-24T23:51:40.726Z (3 months ago)
- Topics: ai-project, computer-vision, css3, data-visualization, flask, flask-application, html5, image-recognition, imageai, matplotlib-pyplot, moviepy, pandas, pandas-dataframe, python, video-object-detection
- Language: Python
- Homepage: https://maxinexiong.github.io/projects/ai-projects.html#imageai-flask
- Size: 70.6 MB
- Stars: 11
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ImageAI Computer Vision Flask Apps
[](https://github.com/MaxineXiong)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org)
[](https://github.com/OlafenwaMoses/ImageAI)
[](https://pandas.pydata.org/)
[](https://flask.palletsprojects.com/)
[](https://html.spec.whatwg.org/)
[](https://www.css3.com/)
## Project Description
This project consists of two Flask applications that utilize **ImageAI's** [**image prediction algorithms**](https://github.com/OlafenwaMoses/ImageAI/tree/master/imageai/Classification) and [**object detection models**](https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/VIDEO.md) to perform object recognition and analysis in images and videos. The first application, **Image Object Recognition Flask Application**, allows users to upload images and obtain accurate predictions about the objects contained within, along with confidence scores. The second application, **Video Object Detection Flask Application**, performs the detection of objects in videos, generating frame-level data of the detected objects and providing insights through data analysis. These user-friendly apps offer an accessible and intuitive platform for leveraging advanced computer vision capabilities, empowering users to explore, analyze, and extract meaningful information from visual content with ease.
## Features
- **App 1 - Image Object Recognition Flask Application**:
- Upload and predict objects in images.
- Display predicted objects with confidence scores.
- **App 2 - Video Object Detection Flask Application**:
- Upload and detect objects in a video.
- Generate a raw dataset of detected objects at the frame level in CSV format (downloadable).
- Generate an output video with detected objects highlighted with rectangles (downloadable).
- Perform data analysis to provide insights on detected objects in the video, including:
- *Average number of unique objects per frame*.
- *Average number of unique objects per second* (conditions applies).
- *Average number of unique objects per minute* (conditions applies).
- *Average number of unique objects per hour* (conditions applies).
- *Total number of unique objects in the entire video*.
## Repository Structure
The repository has the following structure:
```
ImageAI-Flask-Apps/
├── ImageAI-web-app.py
├── image_recognizer.py
├── video_object_detector.py
├── templates/
│ ├── image-prediction.html
│ ├── index.html
│ └── video-object-detection.html
├── static/
│ ├── main.css
│ ├── images/
│ │ ├── demo-image-recognizer.gif
│ │ ├── demo-video-object-detector.gif
│ │ └── web-icon.ico
├── models/
│ ├── image-prediction-models/
│ │ └── README.md
│ ├── video-object-detection-models/
│ │ └── README.md
├── files_for_testing/
├── requirements.txt
├── .gitignore
├── README.md
└── LICENSE
```The description of each file and folder in the repository is as follows:
- **ImageAI-web-app.py**: This is the core driver file for the Flask apps. It handles the routing and functionality for the **Image Object Recognition** and **Video Object Detection** apps.
- **image_recognizer.py**: This file contains the code responsible for image object recognition. It utilizes **ImageAI's** [**image prediction algorithms**](https://github.com/OlafenwaMoses/ImageAI/tree/master/imageai/Classification) to predict objects in uploaded images.
- **video_object_detector.py**: This file handles video object detection. It uses **ImageAI's** [**object detection models**](https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/VIDEO.md) to detect objects in uploaded videos and generates frame-level data of the detected objects.
- **templates/**: This folder contains the HTML templates used by the Flask apps. It includes three files:
- **index.html**: The main HTML template that serves as the home page for the Flask apps. It provides navigation links to the **Image Object Recognition** and **Video Object Detection** apps.
- **image-prediction.html**: The HTML template for the **Image Object Recognition** app, which allows users to upload and predict objects in images.
- **video-object-detection.html**: The HTML template for the **Video Object Detection** app, which enables users to upload and detect objects in videos.
- **static/**: This folder contains static files used by the Flask apps, such as CSS stylesheets and images. It includes the following:
- **main.css**: The CSS styling file that defines the appearance and layout of the HTML templates.
- **images/**: A subfolder that stores various images used in the project, including demo GIFs (**demo-image-recognizer.gif** and **demo-video-object-detector.gif**) and a favicon (**web-icon.ico**).
- **models/**: This folder is meant to store ImageAI's models for image classification and object detection. However, it currently contains two empty subfolders:
- **image-prediction-models/**: An empty subfolder where users should manually place **ImageAI's** [**image prediction models**](https://github.com/OlafenwaMoses/ImageAI/tree/master/imageai/Classification). Instructions for downloading and saving the models are provided in the **README.md** file inside this subfolder.
- **video-object-detection-models/**: Another empty subfolder where users should manually add **ImageAI's** [**object detection models**](https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/VIDEO.md). Instructions for downloading and saving the models are provided in the **README.md** file inside this subfolder.
**Note:** The **models/** folder is intentionally left empty in the GitHub repository due to the large size of the models. Users are required to manually download and place the models into the corresponding subfolders as described in the README files.
- **files_for_testing/**: This folder contains a collection of test images and videos that can be used for app testing and experimentation.
- **requirements.txt**: This file lists the necessary dependencies and packages required to run the Flask apps. It provides a convenient way to install all the dependencies.
- **.gitignore**: Specifies which files and directories Git should ignore, helping to keep the repository clean from unnecessary or sensitive files.
- **README.md**: The README file for the project. It provides an overview of the project, installation instructions, usage guidelines, and other relevant information.
- **LICENSE**: The license file for the project, which specifies the terms and conditions under which the code and resources are shared.
## Usage
To use the **ImageAI Computer Vision Flask Apps**, please follow these steps:
1. Install the required dependencies by running the following command to install all the necessary packages and dependencies required to run the Flask apps:
```
pip install -r requirements.txt
```
This command will ensure that all the required libraries and dependencies are installed in your Python environment.
2. Download the image classification and object detection models:
- Inside the **models/image-prediction-models/** subfolder, follow the instructions provided in the **README.md** file to manually download and save the **ImageAI's** [**image prediction models**](https://github.com/OlafenwaMoses/ImageAI/tree/master/imageai/Classification) in the current directory.
- Similarly, inside the **models/video-object-detection-models/** subfolder, follow the instructions in the **README.md** file to manually download and save **ImageAI's** [**object detection models**](https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/VIDEO.md) in the current directory.
3. Once the dependencies are installed and the models are added, open the command prompt or terminal and navigate to the project directory.
4. Run the following command to start the Flask apps:
```
python ImageAI-web-app.py
```
5. After running the above command, access the Flask apps by visiting **`http://127.0.0.1:5000/`** in your web browser. This will take you to the home page of the Flask apps.
6. From the home page, you can navigate to the **Image Object Recognition Flask Application** or the **Video Object Detection Flask Application** to perform the respective tasks.
- In the **Image Object Recognition Flask Application**, you can upload images and predict objects present in them. The predicted objects will be displayed along with their confidence scores.
![]()
This GIF demonstrates the process of uploading an image, predicting objects in the image, and displaying the predicted objects with confidence scores.
- In the **Video Object Detection Flask Application**, you can upload a video and detect objects in it. The app will generate raw frame-level object data in CSV format that can be downloaded, along with an output video where detected objects are highlighted with rectangles. Additionally, it performs data analysis to provide insights on the detected objects in the video, such as the *average number of unique objects per frame*, *per second*, *per minute, per hour*, and *the total number of unique objects in the entire video* depending on the length of the video.
![]()
This GIF showcases the steps of uploading a video, detecting objects in the video, generating and downloading frame-level object data in CSV format, and performing data analysis on the detected objects to provide insights.
**Note**: The **files_for_testing** folder contains test images and videos that you can use to explore and test the functionalities of the Flask apps. Feel free to experiment with these test files to familiarize yourself with the Flask apps. Alternatively, you can also use your own images or videos when working with the apps in a production environment.Make sure to follow these instructions in the given sequence to ensure the proper setup and usage of the ImageAI Flask Apps.
## Contribution
Contributions to this project are welcome. If you encounter any issues or have suggestions for improvements, please open an issue or submit a pull request.
## License
This project is licensed under the **[MIT License](https://choosealicense.com/licenses/mit/)**.
## Acknowledgement
I would like to thank the [**creator of ImageAI**](https://github.com/OlafenwaMoses) for providing the image prediction and object detection algorithms used in this project. His contributions have been instrumental in the development of these Flask applications. To delve deeper into the computer vision algorithms and models developed by [**ImageAI**](https://github.com/OlafenwaMoses/ImageAI), I encourage you to visit the [**ImageAI GitHub Page**](https://github.com/OlafenwaMoses/ImageAI) or explore its [**official documentation**](https://imageai.readthedocs.io/en/latest/).