SpringBoot用深度学习模型识别数字:开发详解,java面试宝典pdf百度云

本文详细介绍了如何使用SpringBoot结合深度学习模型识别数字。内容包括处理图片文件、模型位置、Docker镜像制作等。核心代码在PredictServiceImpl类中,实现了MultiLayerNetwork.predict方法进行预测。
摘要由CSDN通过智能技术生成

spring.servlet.multipart.max-file-size=10MB

处理图片文件的目录

predict.imagefilepath=/app/images/

模型所在位置

predict.modelpath=/app/model/minist-model.zip

  • 将处理图片所需的静态方法集中在ImageFileUtil.java的文件中,主要是save(存到磁盘上)、resize(缩放)、colorRevert(反色)、clear(清理)、getGrayImageFeatures(提取特征,操作和训练时的是一样的):

package com.bolingcavalry.commons.utils;

import lombok.extern.slf4j.Slf4j;

import org.datavec.api.split.FileSplit;

import org.datavec.image.loader.NativeImageLoader;

import org.datavec.image.recordreader.ImageRecordReader;

import org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator;

import org.nd4j.linalg.api.ndarray.INDArray;

import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;

import org.nd4j.linalg.dataset.api.preprocessor.ImagePreProcessingScaler;

import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.util.UUID;

@Slf4j

public class ImageFileUtil {

/**

  • 调整后的文件宽度

*/

public static final int RESIZE_WIDTH = 28;

/**

  • 调整后的文件高度

*/

public static final int RESIZE_HEIGHT = 28;

/**

  • 将上传的文件存在服务器上

  • @param base 要处理的文件所在的目录

  • @param file 要处理的文件

  • @return

*/

public static String save(String base, MultipartFile file) {

// 检查是否为空

if (file.isEmpty()) {

log.error(“invalid file”);

return null;

}

// 文件名来自原始文件

String fileName = file.getOriginalFilename();

// 要保存的位置

File dest = new File(base + fileName);

// 开始保存

try {

file.transferTo(dest);

} catch (IOException e) {

log.error(“upload fail”, e);

return null;

}

return fileName;

}

/**

  • 将图片转为28*28像素

  • @param base 处理文件的目录

  • @param fileName 待调整的文件名

  • @return

*/

public static String resize(String base, String fileName) {

// 新文件名是原文件名在加个随机数后缀,而且扩展名固定为png

String resizeFileName = fileName.substring(0, fileName.lastIndexOf(".")) + “-” + UUID.randomUUID() + “.png”;

log.info(“start resize, from [{}] to [{}]”, fileName, resizeFileName);

try {

// 读原始文件

BufferedImage bufferedImage = ImageIO.read(new File(base + fileName));

// 缩放后的实例

Image image = bufferedImage.getScaledInstance(RESIZE_WIDTH, RESIZE_HEIGHT, Image.SCALE_SMO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值