纵有疾风起
人生不言弃

如何从0到1开发一款互联网+人工智能落地应用

近几年人工智能项目如火如荼,但是大多处于研究阶段,由于需要用到GPU,纯CPU计算耗时较久,因此落地的互联网项目更是少之又少。本文通过一个实际的人工智能舌诊项目,简单介绍下如何从0到1开发一款互联网+人工智能落地应用。

本文内容:

1、准备训练图片数据;

2、选择开源神经网络算法模型;

3、得到训练模型,加载模型,执行预测。

本文需要一点机器视觉和神经网络基础知识

1、准备训练图片数据

以识别人脸图片为例

下载人脸图片数据集,收集目标图片,可以从百度图片下载,建议使用爬虫,PHP语言推荐使用php-spider,Python语言有很多开源爬虫框架;

谷歌或者百度即可

标注图片

安装yolo-mark

GitHub地址:https://github.com/AlexeyAB/Yolo_mark.git

安装MSVS2015

下载OpenCV 4.x windows安装包,官网有下载,下载完后解压到指定目录,如:e:\opencv;

导出yolo-mark源码,用 vs 打开 yolo_mark.sln,更改工程中的OpenCV的路径为本机安装路径:

右击项目 =》属性 =》 C/C++ =》通用 =》附加目录 =》 添加一行: e:\opencv\opencv\build\include

右击项目 =》属性 =》 链接器 =》通用 =》附加目录 =》 添加一行: e:\opencv\opencv\build\x64\vc14\lib

选择编译环境为 x64 & Release,然后右击项目 =》 生成 x64/Release/yolo_mark.cmd;

复制训练样本图片到 x64/Release/data/img;

打开 x64/Release/data/obj.data,更改classes= 1,表示只有一个类型,根据实际情况更改;

打开 x64/Release/data/obj.names,清空文件,输入face,多个的话一行一个;

双击 x64/Release/yolo_mark.cmd,运行即可标注。

标注说明

标注的框只需要包含目标对象即可

如果提示确实dll文件,从OpenCV安装目录opencv\build\bin复制对应的文件到 x64/Release/ 目录下即可

按数字键选择对应的类型(从0开始)后再标注

2、选择开源神经网络算法模型

目前速度最快的开源神经网络算法非yolo莫属,DNN网络采用yolo-v3,和v2版本相比,增加了网络的层级,支持检测小目标。

训练步骤

安装Yolo_mark,github地址:https://github.com/AlexeyAB/Yolo_mark ,上面介绍的比较详细,需要注意以下几点:

只支持OpenCV 2.x and OpenCV 3.x,OpenCV安装参考之前的教程;

编译完成后,运行x64/Release/yolo_mark.cmd,如果提示缺失opencv_ffmpeg3xx_64.dll,复制OpenCV 安装目录下的opencv_ffmpeg3xx_64.dll,到yolo_mark.cmd同级目录下

标注图片,参考教程:https://blog.csdn.net/qq_33485434/article/details/80597381 ;

训练网络:复制x64/Release/data目录下的所有文件到darknet安装目录对应的data目录下,更改cfg/yolov3.cfg中的classes参数,和对应的卷积层参数,具体参考:https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects

常用命令:

训练命令:darknet.exe detector train data/obj.data cfg/yolov3.cfg /backup/yolov3.weights -map 如果没有权重文件,可以省略,会随机生成一个权重文件。

测试命令:darknet.exe detector test data/obj.data cfg/yolov3.cfg yolov3_final.weights,yolov3_final.weights为结束训练后的权重文件

3、得到训练模型,加载模型,执行预测

本文介绍训练完神经网络后,在实际应用小程序“AI看舌”中的使用。欢迎大家分享给有需要的人

准备配置文件和权重文件,具体教程参考前面的教程。更改配置文件为test模式,准备map值最高的权重文件。上传到服务器。

服务器安装OpenCV,centos需要注意设置 OpenCV 的系统库环境变量

新建SpringBoot项目,导入本地OpenCV包,查看之前的教程,通过Java调用OpenCV的DNN模块加载权重文件和配置文件,给出预测;

打包SpringBoot,上传到服务器,通过Java -jar 方式运行,也可以打包成docker镜像,然后上传到镜像服务器,通过docker运行。

具体参考我的github项目:GitHub – lwhua/aikanshe: 使用SpingBoot、OpenCV、yolo开发舌诊小程序

AI看舌,欢迎推荐给与需要的人:AI看舌 – 爱看舌,用AI看舌,专业的人工智能舌诊小程序,开启人工智能舌诊新时代。

文章转载于:https://www.jianshu.com/p/d5b5364095ed

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 如何从0到1开发一款互联网+人工智能落地应用
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录