What is TensorFlow ? Example with springboot and maven
1. TensorFlow is an open-source software library developed by Google Brain team for machine
learning and artificial intelligence applications.
It is one of the most widely used libraries for building and training machine learning models.
2. TensorFlow uses a data flow graph to represent a machine learning model.
In this graph, nodes represent mathematical operations, and edges represent the input/output
relationships between these operations.
A TensorFlow model consists of a set of operations arranged in a graph, with each operation taking
one or more tensors as input and producing one or more tensors as output.
3. TensorFlow supports a wide range of machine learning techniques, including deep learning, neural
networks, and reinforcement learning.
It provides a flexible and efficient framework for building
and training machine learning models, with support for distributed computing, GPU acceleration,
and a variety of
programming languages, including Python, C++, and Java.
4. TensorFlow has become a popular choice for machine learning applications in industry and
academia, with applications ranging from image and speech recognition
to natural language
processing and robotics. Its popularity is due to its ease of use, flexibility, and scalability.
Example:
Here is a high-level overview of how to implement image classification using TensorFlow,
Maven, and Java Spring Boot:
Create a new controller class, for example ImageClassificationController.java, and add the following code:<dependencies> <dependency> <groupId>org.tensorflow</groupId> <artifactId>tensorflow</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.5.4</version> </dependency> </dependencies>
import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.tensorflow.DataType; import org.tensorflow.Graph; import org.tensorflow.Session; import org.tensorflow.Tensor; @RestController public class ImageClassificationController { private static byte[] loadImage(String path) throws IOException { BufferedImage img = ImageIO.read(new File(path)); int height = img.getHeight(); int width = img.getWidth(); int channels = 3; byte[] data = new byte[height * width * channels]; int pixel = 0; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { int rgb = img.getRGB(j, i); data[pixel++] = (byte) ((rgb >> 16) & 0xFF); data[pixel++] = (byte) ((rgb >> 8) & 0xFF); data[pixel++] = (byte) (rgb & 0xFF); } } return data; } @PostMapping("/classifyImage") public String classifyImage(@RequestParam("imagePath") String imagePath) throws Exception { // Load the TensorFlow model byte[] graphBytes = TensorFlowModelLoader.load("path/to/model.pb"); try (Graph g = new Graph()) { g.importGraphDef(graphBytes); // Create a new session to run the graph try (Session s = new Session(g)) { // Load the image data byte[] imageBytes = loadImage(imagePath); // Create a tensor from the image data Tensor inputTensor = Tensor.create(new long[] {1, imageBytes.length}, ByteBuffer.wrap(imageBytes)); // Run the graph on the input tensor Tensor outputTensor = s.runner() .feed("input", inputTensor) .fetch("output") .run() .get(0); // Print the predicted label DataType<?> outputDataType = outputTensor.dataType(); long[] outputShape = outputTensor.shape(); Object[] output = new Object[outputTensor.numElements()]; outputTensor.copyTo(output); return "Prediction: " + output[0]; } } } }
Replace the path/to/model.pb with the actual path to your TensorFlow model file. Run the Spring Boot application, and then send a POST request to the /classifyImage endpoint with the imagePath parameter set to the path of the image file you want to classify.
Comments
Post a Comment