Building a Custom Processor in Apache NiFi for TensorFlow Using the Java API
Learn how I used TensorFlow's new Java API with Apache NiFi, which uses a custom processor to perform image recognition.
Join the DZone community and get the full member experience.Join For Free
TensorFlow has released a Java API, so I decided to write a quick custom processor to run TensorFlow Inception v3.
It's a simple set of dependencies for Maven:
It's easy to add the new processor NiFi. First, build it using
mvn install (see my build script), then deploy it:
cp nifi-tensorflow-nar/target/nifi-tensorflow-nar-1.0.nar /Volumes/Transcend/Apps/nifi-1.2.0/lib
Once you restart NiFi, you can add the TensorFlow Processor.
An example flow is to the use the very smart
ListFile , which will iterate through a list of files and keep track of the timestamp of files it last accessed. I point to a directory of files and the NiFi processor gets fed a ton of images to very quickly process. This is much faster than my calling out to a script.
I gave it a picture of my RV...
And this is what it guessed. The result of the run is a new attribute, probabilities, which is a string description of what it could be a confidence percentage as text:
- Data Lake 3.0: Containerization, Erasure Coding, GPU Pooling n
- HDF 2.0 Flow for Processing Real-Time Tweets
- Using an ASUS Tinkerboard with TensorFlow and Python
- Setting Up GPU-Enabled TensorFlow to Work With Zeppelin
- IoT Capturing Photos and Analyzing the Image With TensorFlow on a Raspberry Pi
- Analyzing Images in HDF 2.0 With TensorFlow
- Deep Learning IoT Workflows With Raspberry Pi MQTT
Published at DZone with permission of Tim Spann, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.