项目简介
一、项目背景
国务院发布的《新一代人工智能发展规划》文件指明我国已经将人工智能上升为国家战略,本项目正是基于此文件的提出而进行开发。为此,根据鄙人所学习的课程知识,立志设计并实现一套对外提供智能算法接口(比如车牌识别、表情识别、密码学算法等)的服务器(服务器集群)软件系统。
二、项目要求
1.算法来自本地而不能再来自互联网上其它的服务器或服务器应用软件系统
2.系统必须包括登录用户信息验证模块
3.对外能提供连接Web或客户机或手机或物联网设备等客户端的接口
三、开发目的
本项目是鄙人大三期末课设课题作业。首先,意旨在考核中取得优异的成绩;其次,项目目前属于开发初产品,任有很多不足之处和待完善的地方,后续有时间会考虑继续完善,并且做的更系统一些(主要是还自己有很多知识有待去学哈哈哈);最后,其实项目基础框架已经搭好了,也方便后期升级,集群拓展等,如果大家有兴趣,欢迎来fork或star,帮我一起完善,并给予我您宝贵的意见。
四、开发技术
项目是采用前后端分离的一个开发模式,在开发技术上会更加符合现如今的一个互联网趋势。
技术架构在 Get Start 中已经和大家进行了介绍,【智能算法系统】的基础架构是基于 RuoYi-Vue-Plus 框架所集成的软件系统,且该系统针对 分布式集群
场景有全方位升级以及更好的拓展支持,这里就不再赘述。
下面是项目中算法模型主要用到的技术:
JavaCV
1. JavaCV 简介
JavaCV 是一款基于JavaCPP 调用方式(JNI的一层封装),由多种开源计算机视觉库组成的包装库,封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算机视觉领域的常用库和实用程序类。
JavaCV 基于Apache License Version 2.0协议和GPLv2两种协议
JavaCV 支持Windows、Linux、MacOS,Android、IOS在内的Java平台上调用这些接口。
最开始Javacv是googlecode下面的一个项目,后来迁移到了github,因此JavaCV相关的包名也由com.googlecode.javacv改为org.bytedeco.javacv。
github地址:https://github.com/bytedeco/javacv
2. JavaCV其他特点
另外JavaCV还带有硬件加速的全屏幕图像显示(CanvasFrame),易于在多个内核中执行并行代码(并行),用户友好的几何和色彩的相机和投影仪校准(GeometricCalibrator,ProCamGeometricCalibrator,ProCamColorCalibrator ),检测和特征点(ObjectFinder),一类是实现投影,摄像系统(直接图像对齐设置匹配主要GNImageAligner,ProjectiveTransformer,ProjectiveGainBiasTransformer,ProCamTransformer和ReflectanceInitializer),以及在JavaCV类杂项功能。
3. JavaCV 相关例子
短视频录制:
https://github.com/peirenlei/FFmpegRecorder
https://github.com/CrazyOrr/FFmpegRecorder
短视频录制 + 拉流存储 + 视频转播:
https://github.com/lmylr/LyMedia
OpenCV
1.OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
2.OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。
3.OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。
下图为OpenCV与当前其他主流视觉函数库的性能比较:
Deeplearning4j
官网:https://deeplearning4j.konduit.ai/
1. Deeplearning4j简介
Deeplearning4j是为Java和Java虚拟机编写的开源深度学习库,是广泛支持各种深度学习算法的运算框架。Deeplearning4j可以实施的技术包括受限玻尔兹曼机、深度置信网络、深度自动编码器、堆叠式降噪自动编码器、循环神经张量网络,以及word2vec、doc2vec和GloVe。这些算法全部包括分布式并行版本,与Hadoop和Spark集成。Skymind是Deeplearning4j的商业支持机构。
2. Deeplearning主要组件
组件 | 介绍 |
---|---|
Deeplearning4j ScalNet |
Jvm和Spark上运行神经网络构建、训练和部署的基础框架库 |
ND4J/libND4J | 支持CPU/GPU加速的高性能数值计算库,可以说是JVM上的Numpy |
SameDiff | 用于符合微分和计算图库 |
DataVec | 数据处理库,提供采样、过滤、变换等操作 |
Arbiter | 神经网络超参数搜索和优化库 |
RL4J | JVM上的强化学习库 |
Model Import | 模型导入库,可以导入ONNX,TensorFlow,Keras(Caffe)模型 |
Jumpy | ND4J对应python语言API |
Python4j | 可以在JVM里运行python脚本语言 |
3. Deeplearning图示
Deeplearning是神经网络高层API库,用于构建具有各种层的MultiLayerNetworks和ComputationGraphs,支持从其他框架导入模型和在Apache Spark上进行分布式训练。
5. Deeplearning技术栈与工作流
6. Deeplearning可视化界面