在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:easyAi开源软件地址:https://gitee.com/ldp_dpsmax/easyAi开源软件介绍:easyAi本包说明:
详细视频教程地址:测试素材下载链接:https://pan.baidu.com/s/1Vzwn3iMPBI-FAXBDrCSglg 框架效果演示结果:
控制台输出演示目前拥有的功能是
目的是
特点是入手门槛低,简单配置,快速上手 为什么做这个包
HELLO WORLD说明:
图像学习部分最简API 说明: //创建图片解析类 Picture picture = new Picture(); //创建一个静态单例配置模板 static TempleConfig templeConfig = new TempleConfig(); //第三个参数和第四个参数分别是训练图片的宽和高,为保证训练的稳定性请保证训练图片大小的一致性 templeConfig.init(StudyPattern.Accuracy_Pattern, true, 640, 640, 2); //将配置模板类作为构造塞入计算类 Operation operation = new Operation(templeConfig); //一阶段 循环读取不同的图片 for (int i = 1; i < 1900; i++) { //读取本地URL地址图片,并转化成矩阵 Matrix a = picture.getImageMatrixByLocal("/Users/lidapeng/Desktop/myDocment/picture/a" + i + ".jpg"); Matrix c = picture.getImageMatrixByLocal("/Users/lidapeng/Desktop/myDocment/picture/c" + i + ".jpg"); //矩阵塞入运算类进行学习,第一个参数是图片矩阵,第二个参数是图片分类标注ID,第三个参数是第一次学习固定false operation.learning(a, 1, false); operation.learning(c, 2, false); } for (int i = 1; i < 1900; i++) { //读取本地URL地址图片,并转化成矩阵 Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".jpg"); Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".jpg"); //将图像矩阵和标注加入进行学习,Accuracy_Pattern 模式 进行第二次学习 //第二次学习的时候,第三个参数必须是 true operation.learning(a, 1, true); operation.learning(c, 2, true); } templeConfig.finishStudy();//结束学习 //获取学习结束的模型参数,并将model保存数据库 ModelParameter modelParameter = templeConfig.getModel(); String model = JSON.toJSONString(modelParameter); 单物体图像识别部分最简API 说明: //读取一张图片,并将其转化为矩阵 Matrix a = picture.getImageMatrixByLocal(fileURL); //返回此图片的分类ID int an = operation.toSee(a); 物体图像识别服务启动初始化API 说明: //创建一个静态单例配置模板类 static TempleConfig templeConfig = new TempleConfig(); //初始化配置模板 templeConfig.init(StudyPattern.Accuracy_Pattern, true, 640, 640, 2); //将配置模板类作为构造塞入计算类 Operation operation = new Operation(templeConfig); //从数据库中读取学习的模型结果,反序列为ModelParameter ModelParameter modelParameter = JSON.parseObject(ModelData.DATA2, ModelParameter.class); //将模型数据注入配置模板类 templeConfig.insertModel(modelParameter); 自然语言分类最简API 说明: //创建模板读取类 TemplateReader templateReader = new TemplateReader(); //读取语言模版,第一个参数是模版地址,第二个参数是文本编码方式 //同时也是学习过程 templateReader.read("/Users/lidapeng/Desktop/myDocment/a1.txt", "UTF-8"); //学习结束获取模型参数 //WordModel wordModel = WordTemple.get().getModel(); //不用学习注入模型参数 //WordTemple.get().insertModel(wordModel); Talk talk = new Talk(); //输入语句进行识别,若有标点符号会形成LIST中的每个元素 //返回的集合中每个值代表了输入语句,每个标点符号前语句的分类 List<Integer> list = talk.talk("帮我配把锁"); System.out.println(list); //这里做一个特别说明,语义分类的分类id不要使用"0",本框架约定如果类别返回数字0,则意味不能理解该语义,即分类失败 //通常原因是模板量不足,或者用户说的话的语义,不在你的语义分类训练范围内 神经网络最简API说明 //创建一个DNN神经网络管理器 NerveManager nerveManager = new NerveManager(...); //构造参数 //sensoryNerveNub 感知神经元数量 即输入特征数量 //hiddenNerverNub 每一层隐层神经元的数量 //outNerveNub 输出神经元数量 即分类的类别 //hiddenDepth 隐层神经元深度,即学习深度 //activeFunction 激活函数 //isDynamic 是否启用动态神经元数量(没有特殊需求建议为静态,动态需要专业知识) public NerveManager(int sensoryNerveNub, int hiddenNerverNub, int outNerveNub, int hiddenDepth, ActiveFunction activeFunction, boolean isDynamic) nerveManager.getSensoryNerves()获取感知神经元集合 //eventId:事件ID //parameter:输入特征值 //isStudy:是否是学习 //E:特征标注 //OutBack 回调类 SensoryNerv.postMessage(long eventId, double parameter, boolean isStudy, Map<Integer, Double> E, OutBack outBack) //每一次输出结果都会返回给回调类,通过回调类拿取输出结果,并通过eventId来对应事件 随机森林最简API说明 //创建一个内存中的数据表 DataTable dataTable = new DataTable(column); //构造参数是列名集合 public DataTable(Set<String> key) //指定主列名集合中该表的主键 dataTable.setKey("point"); //创建一片随机森林 RandomForest randomForest = new RandomForest(7); //构造参数为森林里的树木数量 public RandomForest(int treeNub) //唤醒随机森林里的树木 randomForest.init(dataTable); //将加入数据的实体类一条条插入森林中 randomForest.insert(Object object); //森林进行学习 randomForest.study(); //插入特征数据,森林对该数据的最终分类结果进行判断 randomForest.forest(Object objcet); 如何提升精准度
TempleConfig templeConfig = new TempleConfig(false, true);
TempleConfig templeConfig = new TempleConfig(false, true); templeConfig.setClassifier(Classifier.DNN);
public class Classifier {//分类器 public static final int LVQ = 1;//LVQ分类 public static final int DNN = 2; //使用DNN分类 public static final int VAvg = 3;//使用特征向量均值分类}
//创建图片解析类 Picture picture = new Picture(); //创建一个静态单例配置模板 static TempleConfig templeConfig = new TempleConfig(); //使用DNN分类器 templeConfig.setClassifier(Classifier.DNN); //第三个参数和第四个参数分别是训练图片的宽和高,为保证训练的稳定性请保证训练图片大小的一致性 templeConfig.init(StudyPattern.Accuracy_Pattern, true, 640, 640, 2); //将配置模板类作为构造塞入计算类 Operation operation = new Operation(templeConfig); //一阶段 循环读取不同的图片 for (int i = 1; i < 1900; i++) { //读取本地URL地址图片,并转化成矩阵 Matrix a = picture.getImageMatrixByLocal("/Users/lidapeng/Desktop/myDocment/picture/a" + i + ".jpg"); Matrix c = picture.getImageMatrixByLocal("/Users/lidapeng/Desktop/myDocment/picture/c" + i + ".jpg"); //矩阵塞入运算类进行学习,第一个参数是图片矩阵,第二个参数是图片分类标注ID,第三个参数是第一次学习固定false operation.learning(a, 1, false); operation.learning(c, 2, false); } for (int i = 1; i < 1900; i++) { Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".jpg"); Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".jpg"); operation.normalization(a, templeConfig.getConvolutionNerveManager()); operation.normalization(c, templeConfig.getConvolutionNerveManager()); } templeConfig.getNormalization().avg(); for (int i = 1; i < 1900; i++) { //读取本地URL地址图片,并转化成矩阵 Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".jpg"); Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".jpg"); //将图像矩阵和标注加入进行学习,Accuracy_Pattern 模式 进行第二次学习 //第二次学习的时候,第三个参数必须是 true operation.learning(a, 1, true); operation.learning(c, 2, true); }
for (int i = 1; i < 1900; i++) { Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".jpg"); Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".jpg"); operation.normalization(a, templeConfig.getConvolutionNerveManager()); operation.normalization(c, templeConfig.getConvolutionNerveManager()); } templeConfig.getNormalization().avg();
templeConfig.setDeep(int deep);
//选择分类器 templeConfig.setClassifier(Classifier.DNN); //选择期望矩阵宽度 templeConfig.setMatrixWidth(5); //选择正则化模式 templeConfig.setRzType(RZ.L2); //选择DNN 深度 templeConfig.setDeep(1); //设置学习率 templeConfig.setStudyPoint(0.05); //设置DNN隐层宽度 templeConfig.setHiddenNerveNub(6); //设置正则系数 templeConfig.setlParam(0.015);//0.015 什么样的图片会严重影响准确率
常见抛错
最终说明
精准模式和速度模式的优劣
本包为性能优化而对AI算法的修改
|
请发表评论