近几年人工智能项目如火如荼,但是大多处于研究阶段,由于需要用到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看舌,专业的人工智能舌诊小程序,开启人工智能舌诊新时代。