乐趣区

关于云计算:三分钟极速体验JAVA版目标检测YOLO4

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;

本篇概览

  • 检测照片中的物体,用 Java 能够实现吗?
  • 能够,明天咱们用起码的工夫、最简略的操作来体验这个实用的性能,您提交一张一般照片后,会看到下图成果,原照片上的狗子、人、马都被辨认进去,每个辨认框的左上角是类别和置信度,最初,图片左上角还有本次辨认所用工夫:

  • 接下来请随本文一起入手来实现上述成果,整个过程分三步实现:
  • 下载模型和配置文件
  • 运行 docker 容器,这是个 web 服务,咱们用浏览器拜访此服务,提交照片实现检测
  • 验证成果(在浏览器上关上 web 页面,提交图片,期待检测后果)

危险提前告知

  • 为了简化操作,接下来会用到 docker,对应的镜像体积微小,达到了恐怖的 1.57G,建议您为本人的 docker 做好减速配置,能够缩小下载等待时间;
  • 因为 opencv 体积宏大,再加上 javacv 的依赖库也不小,这才导致超大镜像的呈现,还望您多多海涵,题目中的《三分钟》是要去掉镜像的等待时间的,您要是感觉欣宸的题目起得很无耻,我感觉您是对的…

环境信息

  • 本次实战举荐的环境信息如下:
  • 操作系统:Ubuntu 16(MacBook Pro 也能够,版本是 11.2.3,macOS Big Sur)
  • docker:20.10.2 Community
  • 不多说了,立刻入手!

下载模型和配置文件

  • 本次实战所须要的文件有两种下载方式,您二选一即可
  • 第一种是从官网下载,从上面这三个地址别离下下载:
  1. YOLOv4 配置文件: https://raw.githubusercontent…
  2. YOLOv4 权重: https://github.com/AlexeyAB/d…
  3. 分类名称: https://raw.githubusercontent…
  • 第二种是从 csdn 下载(无需积分),上述三个文件我已打包放在此:https://download.csdn.net/dow…
  • 上述两种形式无论哪种,最终都会失去三个文件:yolov4.cfg、yolov4.weights、coco.names,请将它们放在同一目录下,我是放在这里:<font color=”blue”>/home/will/temp/202110/19/model</font>
  • 新建一个目录用来寄存照片,我这里新建的目录是:<font color=”blue”>/home/will/temp/202110/19/images</font>,留神要确保该目录能够读写
  • 最终目录构造如下所示:
/home/will/temp/202110/19/
├── images
└── model
    ├── coco.names
    ├── yolov4.cfg
    └── yolov4.weights

运行 docker 容器

  • 执行以下命令即可实现服务部署 (留神方才提到的两个目录都被映射到容器中了):
sudo docker run \
--rm \
--name yolodemo \
-p 8080:8080 \
-v /home/will/temp/202110/19/images:/app/images \
-v /home/will/temp/202110/19/model:/app/model \
bolingcavalry/yolodemo:0.0.1
  • 控制台会输入 springboot 的启动信息:
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
(()\___ | '_ |'_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.8)

2021-10-19 07:39:20.112  INFO 1 --- [main] c.b.yolodemo.YoloDemoApplication         : Starting YoloDemoApplication using Java 1.8.0_292 on 06e6b68f43ca with PID 1 (/app started by root in /)
2021-10-19 07:39:20.115  INFO 1 --- [main] c.b.yolodemo.YoloDemoApplication         : No active profile set, falling back to default profiles: default
2021-10-19 07:39:20.997  INFO 1 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-10-19 07:39:21.010  INFO 1 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-10-19 07:39:21.010  INFO 1 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.48]
2021-10-19 07:39:21.083  INFO 1 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-10-19 07:39:21.084  INFO 1 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 915 ms
2021-10-19 07:39:21.157 ERROR 1 --- [main] c.b.y.controller.YoloServiceController   : file.encoding is utf-8
2021-10-19 07:39:23.449  INFO 1 --- [main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2021-10-19 07:39:23.627  INFO 1 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-10-19 07:39:23.640  INFO 1 --- [main] c.b.yolodemo.YoloDemoApplication         : Started YoloDemoApplication in 3.893 seconds (JVM running for 4.329)
2021-10-19 07:39:49.872  INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-10-19 07:39:49.872  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-10-19 07:39:49.873  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
  • 部署实现,接下来体验服务验证成果

验证成果

  • 浏览器拜访 <font color=”blue”>http://192.168.50.27:8080</font>,这里的 <font color=”red”>192.168.50.27</font> 请改成 docker 宿主机 IP(要敞开防火墙!),可见操作页面如下图(欣宸的前端开发程度渣到令人发指,果然不是空穴来风):

  • 依照上图红框的提醒,抉择一张照片并点击 <font color=”blue”> 提交 </font> 按钮,短暂期待后展现如下页面:

  • 去看 docker 的控制台,也输入了辨认的日志:
2021-10-19 07:39:57.830   : 文件 [person.jpg], 大小 [113880]
2021-10-19 07:39:59.303   : 一共检测到 3 个指标
2021-10-19 07:39:59.306   : 类别 [person],置信度 [99.78939%]
2021-10-19 07:39:59.307   : 类别 [dog],置信度 [99.45358%]
2021-10-19 07:39:59.307   : 类别 [horse],置信度 [98.37547%]
  • 动物辨认成果挺好:

  • 至此,Java 版指标检测的体验已实现,也就三分钟的事件,咱们足够高效 (下载超大镜像的工夫不能算,不敢算…)
  • 此刻您应该能感触到 Java 在指标辨认畛域的魅力了,聪慧的您当然会有很多疑难,例如:
  • 用了啥技术?(别通知我只用 springboot,不信)
  • 写了啥代码?
  • 运行环境好不好配置?只有 jar 依赖吗?还须要其余操作吗?
  • 有坑么?
  • 其实从题目就能够看出,和 YOLO 无关,java 与 YOLO4,有点小期待了吗?
  • 这些疑难在接下来的文章中会齐全揭秘,而后您也能轻易做出集成了指标辨认的 SpringBoot 利用了,敬请期待,欣宸原创不会辜负您。
    https://github.com/zq2599/blog_demos
退出移动版