Object detection server side application sample program written in Java. It uses the TensorFlow Java API with a trained YOLOv2 model. The server application is implemented with Spring Framework and it is built by Gradle.
It provides a web user interface to upload images and detect objects.
Step2: display the recognized objects
Preconditions:
- Java JDK 1.8 or greater;
- TensorFlow 1.6 or grater;
- Git version control system;
Strongly recommended to install:
- nVidia CUDA Toolkit 8.0 or higher version;
- nVidia cuDNN GPU accelerated deep learning framework;
Download the frozen graph and the label file
Before compiling the source code you have to place the frozen graph and the label file into the ./graph/YOLO
directory. Download one of my graphs from my google drive. There are two graphs: tiny-yolo-voc.pb and yolo-voc.pb. The tiny-yolo.pb has a lower size, however it is less accurate than the yolo-voc.pb. Modify the application.yml configuration file if it is necessary. Here you can increase the file upload limit also.
Compile with Gradle
Compile the code by typing ./gradlew clean build
in the terminal window.
Run it with the command ./gradlew bootRun
Open the http://localhost:8080 and you should see the webpage.
Deployed to Heroku with a tiny-yolo model: https://still-crag-64816.herokuapp.com/
Have a look at my previous project for better understanding of the object detection part: Tensorflow Java API example application or visit my site: https://sites.google.com/view/tensorflow-example-java-api.
The current solution doesn't support the YoloV3 model and unfortunately, I do not have time to implement it, however I would be very happy if I could help to implement and I could review a PR with this feture. For this reason I've started a new branch here: https://github.com/szaza/tensorflow-java-examples-spring/tree/feature/add-yolov3-support; If you are interested in this feature and you would like to be a collabortor, please add a comment for this thread: #2;
Many-many thank for any support!