Playing around with FastAPI and streamlit to create a YoloV5 object detector
It turns out that a User Interface improves the user satisfaction when they utilize deep learning models for experiments. This project of mine aims to do just that.
Even though a FastAPI, Streamlit based web app isn’t a unique idea, I have however put my own twist by adding a section that accepts videos for bounding box annotation as well as images.
The Streamlit based UI will consist of two sections- A video section and an image section. After uploading, the user will get back the bounding annotation of the video/image and additionally the video/image will also be saved in the root/ folder from where the .py files are run.
The below steps are required to run the application-
First Clone the repo and make note of the root/ directory where the repo is saved. This directory will also store the resulting image/video that is saved by the YoloV5 model.
We need to change the root directory to what you are currently using. In the repository the directory in which the repo is saved is “C:/Users/BHASKAR BOSE”, we need to change this.
If you are using windows then open a terminal and write-
powershell -Command "(gc myapp.py) -replace 'C:/Users/BHASKAR BOSE', 'root/' | Out-File -encoding ASCII myapp.py"
Do the same for stream.py and delete_files.py
Great! now you have to install all the required libraries, so write-
pip install -r requirements.txt
There is one more step we need to do before running our application. Open Jupyter notebook (or any IDE) and write-
import delete_files delete_files.delete_video_files()
This will remove all the unnecessary files before starting.
Now that all the libraries are installed we can now begin to run the application. First we run the following command-
uvicorn myapp:app --reload
following which we run-
streamlit run "root/stream.py"
We see that a drop down is provided where we can select either image or video. Select one and upload the image video.
You will soon see the annotated image/video on the screen. Additionally the image/video will also be saved in your root/ directory.