三分钟体验:SpringBoot用深度学习模型识别数字

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 使用Deeplearning4j训练出来的模型,可以在java应用中使用吗?

  • 当然能,今天咱们花三分钟来体验集成了AI能力的SpringBoot应用

  • 该应用的功能是识别黑白图片中的手写数字(每张图片内只有一个数字),如下图,通过http接口将此图片提交,让SpringBoot应用去识别:
    在这里插入图片描述

  • 下图是postman操作界面的截图,红框中的数字就是SpringBoot应用的识别结果,数字8,与图片一致:
    在这里插入图片描述

  • SpringBoot应用用到的AI模型是LeNet-5,这是个经典的识别模型,常用在卷积网络入门学习中

  • 本篇以体验为主,不涉及具体的开发,后面还会有文章介绍完整的开发过程(包括源码)

环境信息

  • 为了简化体验过程,接下来会用到docker,推荐的环境信息如下:
  1. 操作系统:Ubuntu 16.04.1 LTS 服务器版(MacBook Pro也可以,版本是11.2.3,macOS Big Sur)
  2. docker:20.10.2 Community
  3. 为了加快docker镜像的下载速度,建议您提前做好docker加速配置
  4. 用于提交图片的http工具,我这里是postman
  • 文章标题号称三分钟极速体验,没时间说太多,准备好环境就火速动手啦

部署

  1. 新建名为images的目录,用于存储处理后的文件,我这里完整路径是/home/will/temp/202106/29/images
  2. 新建名为model目录,用于存储稍后要下载的模型文件,我这里完整路径是/home/will/temp/202106/29/model
  3. 下载训练好的模型文件,我准备了两个下载地址,您任选一个即可,一个是csdn的(无需积分):https://download.csdn.net/download/boling_cavalry/19881160,另一个是https://raw.githubusercontent.com/zq2599/blog_download_files/master/files/minist-model.zip
  4. 下载好的模型文件是minist-model.zip,不要解压,直接放进前面新建的model目录
  5. 执行以下命令,会先下载docker镜像文件再创建容器:
docker run \
--rm \
-p 18080:8080 \
-v /home/will/temp/202106/29/images:/app/images \
-v /home/will/temp/202106/29/model:/app/model \
bolingcavalry/dl4j-model-app:0.0.3
  1. 镜像文件有点大(九百多兆…),请您耐心等待,主要是dl4j的依赖库太大了
  2. 当控制台输出如下内容,表示启动成功,并且加载模型成功:
2021-06-29 10:51:55.744  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1748 ms
2021-06-29 10:51:55.852  INFO 1 --- [           main] c.b.p.service.impl.PredictServiceImpl    : load model from [/app/model/minist-model.zip]
2021-06-29 10:51:55.950  INFO 1 --- [           main] org.nd4j.linalg.factory.Nd4jBackend      : Loaded [CpuBackend] backend
2021-06-29 10:51:58.397  INFO 1 --- [           main] org.nd4j.nativeblas.NativeOpsHolder      : Number of threads used for linear algebra: 1
2021-06-29 10:51:58.399  WARN 1 --- [           main] o.n.l.cpu.nativecpu.CpuNDArrayFactory    : *********************************** CPU Feature Check Warning ***********************************
2021-06-29 10:51:58.399  WARN 1 --- [           main] o.n.l.cpu.nativecpu.CpuNDArrayFactory    : Warning: Initializing ND4J with Generic x86 binary on a CPU with AVX/AVX2 support
2021-06-29 10:51:58.399  WARN 1 --- [           main] o.n.l.cpu.nativecpu.CpuNDArrayFactory    : Using ND4J with AVX/AVX2 will improve performance. See deeplearning4j.org/cpu for more details
2021-06-29 10:51:58.399  WARN 1 --- [           main] o.n.l.cpu.nativecpu.CpuNDArrayFactory    : Or set environment variable ND4J_IGNORE_AVX=true to suppress this warning
2021-06-29 10:51:58.399  WARN 1 --- [           main] o.n.l.cpu.nativecpu.CpuNDArrayFactory    : *************************************************************************************************
2021-06-29 10:51:58.407  INFO 1 --- [           main] org.nd4j.nativeblas.Nd4jBlas             : Number of threads used for OpenMP BLAS: 1
2021-06-29 10:51:58.411  INFO 1 --- [           main] o.n.l.a.o.e.DefaultOpExecutioner         : Backend used: [CPU]; OS: [Linux]
2021-06-29 10:51:58.412  INFO 1 --- [           main] o.n.l.a.o.e.DefaultOpExecutioner         : Cores: [32]; Memory: [7.0GB];
2021-06-29 10:51:58.412  INFO 1 --- [           main] o.n.l.a.o.e.DefaultOpExecutioner         : Blas vendor: [OPENBLAS]
2021-06-29 10:51:59.076  INFO 1 --- [           main] o.d.nn.multilayer.MultiLayerNetwork      : Starting MultiLayerNetwork with WorkspaceModes set to [training: ENABLED; inference: ENABLED], cacheMode set to [NONE]
2021-06-29 10:51:59.658  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-06-29 10:51:59.671  INFO 1 --- [           main] c.b.p.PredictNumberApplication           : Started PredictNumberApplication in 6.474 seconds (JVM running for 7.235)
  • 现在SpringBoot应用启动成功了,我们来试试识别图片的功能,这个应用提供了两个接口,分别可以测试白底黑字和黑底白字

识别白底黑字

  • 准备一张白底黑字的png图片(画图板,截图工具都可以),例如下面这张:
    在这里插入图片描述
  • 白底黑字识别服务的地址是IP地址:18080/predict-with-white-background,用postman操作如下图,请按照数字顺序操作1-6,可见输入很简单,就一个字段,返回值就是识别结果,符合预期:
    在这里插入图片描述

识别黑底白字

  • 接下来试试黑底白字,准备一张类似下图的png图片:
    在这里插入图片描述

  • 黑底白字识别服务的地址是IP地址:18080/predict-with-black-background,用postman操作如下图,请按照数字顺序操作1-6,返回结果是红框8中的数字,符合预期:
    在这里插入图片描述

  • 至此,SpringBoot结合深度学习模型的体验已经完成,一分钟概览,一分钟部署,一分钟体验,咱们足够高效(下载九百多兆镜像的时间不能算,不敢算…)

  • 此刻您应该能感受到深度学习的魅力了,聪明的您当然会有很多疑问,例如:

  1. 模型是怎么训练出来的?
  2. java代码中如何使用这个模型?
  3. 这些东西怎么做成docker镜像?

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列
  • 17
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
在这个互联网时代,客服可以说必不可少,每个电商网站都应该有一个强大的智能客服对话系统,以满足用户沟通的需求。智能客服对话系统,不仅需要人工的沟通,同时结合人工智能实现智能对话,减少人工客服的成本,势在必行。基于SpringBoot+Python的多语言前后端智能多人聊天系统课程,将以基础知识为根基,带大家完成一个强大的智能客服系统,该系统将包含以下功能:智能对话机器人、单聊、群聊、消息撤回、上线、下线通知、用户动态信息实时提示等。即时通讯和人工智能,在未来的发展趋势,必然需要大批人才,掌握这两个技术势在必行。项目是一个真实可用的项目,商业价值不言而喻。也可以基于课程的基础上进一步完善和优化,所以价值是很高的。本课程包含的技术: 开发工具为:IDEA、WebStorm、PyCharmTensorflowRNNLSTMAnacondaSpringBoot SpringCloudWebsocketSTOMPDjangoVue+Nodejs+jQuery等 课程亮点: 1.与企业接轨、真实工业界产品2.从基础到案例,逐层深入,学完即用3.市场主流的前后端分离架构和人工智能应用结合开发4.多语言结合开发,满足多元化的需求5.涵盖TensorFlow1.x+TensorFlow2.x版本6.智能机器人实战7.即时通讯实战8.多Python环境切换9.微服务SpringBoot10.集成SpringCloud实现统一整合方案 11.全程代码实操,提供全部代码和资料 12.提供答疑和提供企业技术方案咨询 课程目录:第一章、Anaconda以及TensorFlow环境和使用0、智能多人聊天系统课程说明1、智能多人聊天系统之Anaconda讲解2、智能多人聊天系统之Anaconda安装和使用3、智能多人聊天系统之Anaconda之conda命令使用4、智能多人聊天系统之TensorFlow讲解5、智能多人聊天系统之TensorFlow安装和使用6、TensorFlow常量、变量和占位符实战讲解17、TensorFlow常量、变量和占位符实战讲解28、TensorFlow原理补充讲解9、TensorFlow四则运算实战讲10、TensorFlow矩阵操作以及运算实战讲解111、TensorFlow矩阵操作以及运算实战讲解212、TensorFlow均匀分布和正态分布数据实战讲解13、智能多人聊天系统之Numpy实战讲解14、智能多人聊天系统之matplotlib实战讲解15、TensorFlow深度学习DNN讲解16、TensorFlow常用Python扩展包讲解17、TensorFlow常用回归算法以及正则化讲解18、TensorFlow损失函数定义和使用实战讲解19、TensorFlow优化器讲解以及综合案例实战讲解20、智能多人聊天系统之RNN讲解21、智能多人聊天系统之RNN种类讲解22、智能多人聊天系统之RNN代码实战23、智能多人聊天系统之LSTM讲解24、智能多人聊天系统之attention机制讲解25、智能多人聊天系统之Django环境构建及初体验26、智能多人聊天系统之Django开发27、Python章节环境侯建和项目搭建28、Python TensorFlow读取训练数据代码编写29、Python TensorFlow形成语料编码30、Python TensorFlow保存字典文件31、Python TensorFlow构建词向量32、Python TensorFlow构建lstm模型以及attention wrapper33、Python TensorFlow训练代码编写34、Python整体代码讲解35、Python运用模型代码讲解36、SpringBoot讲解以及构建web应用37、Spring Cloud注册中心构建38、智能多人聊天系统之前端Vue项目构建39、SpringBoot+Websocket群聊40、SpringBoot+Websocket昵称群聊41、SpringBoot+Websocket群聊+单聊实战42、SpringBoot+Stomp单聊143、SpringBoot+Stomp单聊244、SpringBoot+Stomp单聊+群聊45、Django Web整合TF代码讲解及Postman调试46、智能客服系统单聊群聊等项目功能代码讲解147、智能客服系统单聊群聊等项目功能代码讲解248、智能客服系统集成机器人对话代码开发讲解49、智能机器人TensorFlow2版本升级实战之训练模型代码讲解50、智能机器人TensorFlow2版本升级实战之预测代码讲解 51、智能机器人TensorFlow2版本升级实战补充讲解
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员欣宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值