|
|
|
@ -5,6 +5,8 @@ import org.wlld.MatrixTools.Matrix;
|
|
|
|
|
import org.wlld.config.Classifier;
|
|
|
|
|
import org.wlld.config.RZ;
|
|
|
|
|
import org.wlld.config.StudyPattern;
|
|
|
|
|
import org.wlld.function.Sigmod;
|
|
|
|
|
import org.wlld.function.Tanh;
|
|
|
|
|
import org.wlld.imageRecognition.*;
|
|
|
|
|
import org.wlld.imageRecognition.segmentation.Watershed;
|
|
|
|
|
import org.wlld.nerveEntity.ModelParameter;
|
|
|
|
@ -19,59 +21,69 @@ public class FoodTest {
|
|
|
|
|
|
|
|
|
|
public static void rain() throws Exception {//降雨
|
|
|
|
|
Picture picture = new Picture();
|
|
|
|
|
Matrix matrix = picture.getImageMatrixByLocal("D:\\share\\cai/i1.jpg");
|
|
|
|
|
Matrix matrix = picture.getImageMatrixByLocal("D:\\share\\cai/d1.jpg");
|
|
|
|
|
Watershed watershed = new Watershed(matrix);
|
|
|
|
|
watershed.rainfall();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void food() throws Exception {
|
|
|
|
|
Picture picture = new Picture();
|
|
|
|
|
TempleConfig templeConfig = new TempleConfig();
|
|
|
|
|
templeConfig.setClassifier(Classifier.DNN);
|
|
|
|
|
templeConfig.isShowLog(true);
|
|
|
|
|
templeConfig.setSoftMax(true);
|
|
|
|
|
templeConfig.setTh(0);
|
|
|
|
|
//templeConfig.setMatrixWidth(5);
|
|
|
|
|
templeConfig.setStudyPoint(0.02);
|
|
|
|
|
templeConfig.setRzType(RZ.L1);
|
|
|
|
|
templeConfig.setlParam(0.016);//0.015
|
|
|
|
|
Picture picture = new Picture();//创建图片解析类
|
|
|
|
|
TempleConfig templeConfig = new TempleConfig();//创建配置模板类
|
|
|
|
|
templeConfig.setClassifier(Classifier.DNN);//使用DNN 分类器
|
|
|
|
|
//templeConfig.setActiveFunction(new Sigmod());//设置激活函数
|
|
|
|
|
templeConfig.setDeep(2);//设置深度 深度神经网络 深度越深速度越慢
|
|
|
|
|
//数量越大越准 但是影响量比较小 不绝对 盲试
|
|
|
|
|
templeConfig.setHiddenNerveNub(9);//设置隐层神经元数量
|
|
|
|
|
templeConfig.isShowLog(true);//输出打印数据
|
|
|
|
|
//
|
|
|
|
|
//templeConfig.setSoftMax(true);//启用最后一层的SOFTMAX
|
|
|
|
|
//templeConfig.setTh(-1);//设置阈值
|
|
|
|
|
templeConfig.setStudyPoint(0.012);//设置学习率 0-1
|
|
|
|
|
templeConfig.setRzType(RZ.L1);//设置正则函数
|
|
|
|
|
templeConfig.setlParam(0.015);//设置正则参数
|
|
|
|
|
|
|
|
|
|
templeConfig.init(StudyPattern.Accuracy_Pattern, true, 640, 480, 2);
|
|
|
|
|
Operation operation = new Operation(templeConfig);
|
|
|
|
|
Operation operation = new Operation(templeConfig);//计算类
|
|
|
|
|
// 一阶段
|
|
|
|
|
for (int j = 0; j < 2; j++) {
|
|
|
|
|
for (int i = 1; i < 233; i++) {//一阶段
|
|
|
|
|
for (int i = 1; i < 101; i++) {//一阶段
|
|
|
|
|
System.out.println("study1===================" + i);
|
|
|
|
|
//读取本地URL地址图片,并转化成矩阵
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\6\\a/a" + i + ".jpg");
|
|
|
|
|
Matrix b = picture.getImageMatrixByLocal("D:\\pic\\6\\b/b" + i + ".jpg");
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\1/a" + i + ".jpg");
|
|
|
|
|
Matrix b = picture.getImageMatrixByLocal("D:\\pic\\2/b" + i + ".jpg");
|
|
|
|
|
operation.learning(a, 1, false);
|
|
|
|
|
operation.learning(b, 2, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 二阶段
|
|
|
|
|
for (int i = 1; i < 233; i++) {
|
|
|
|
|
// 二阶段 归一化
|
|
|
|
|
for (int i = 1; i < 101; i++) {
|
|
|
|
|
System.out.println("avg==" + i);
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\6\\a/a" + i + ".jpg");
|
|
|
|
|
Matrix b = picture.getImageMatrixByLocal("D:\\pic\\6\\b/b" + i + ".jpg");
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\1/a" + i + ".jpg");
|
|
|
|
|
Matrix b = picture.getImageMatrixByLocal("D:\\pic\\2/b" + i + ".jpg");
|
|
|
|
|
operation.normalization(a, templeConfig.getConvolutionNerveManager());
|
|
|
|
|
operation.normalization(b, templeConfig.getConvolutionNerveManager());
|
|
|
|
|
}
|
|
|
|
|
templeConfig.getNormalization().avg();
|
|
|
|
|
for (int j = 0; j < 5; j++) {
|
|
|
|
|
for (int i = 1; i < 233; i++) {
|
|
|
|
|
|
|
|
|
|
for (int j = 0; j < 3; j++) {
|
|
|
|
|
for (int i = 1; i < 101; i++) {
|
|
|
|
|
System.out.println("j==" + j + ",study2==================" + i);
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\6\\a/a" + i + ".jpg");
|
|
|
|
|
Matrix b = picture.getImageMatrixByLocal("D:\\pic\\6\\b/b" + i + ".jpg");
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\1/a" + i + ".jpg");
|
|
|
|
|
Matrix b = picture.getImageMatrixByLocal("D:\\pic\\2/b" + i + ".jpg");
|
|
|
|
|
operation.learning(a, 1, true);
|
|
|
|
|
operation.learning(b, 2, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
templeConfig.finishStudy();//结束学习
|
|
|
|
|
ModelParameter modelParameter = templeConfig.getModel();
|
|
|
|
|
String model = JSON.toJSONString(modelParameter);
|
|
|
|
|
System.out.println(model);
|
|
|
|
|
|
|
|
|
|
int wrong = 0;
|
|
|
|
|
int allNub = 0;
|
|
|
|
|
for (int i = 1; i <= 232; i++) {
|
|
|
|
|
for (int i = 1; i <= 100; i++) {
|
|
|
|
|
//读取本地URL地址图片,并转化成矩阵
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\6\\a/a" + i + ".jpg");
|
|
|
|
|
Matrix a = picture.getImageMatrixByLocal("D:\\pic\\1/a" + i + ".jpg");
|
|
|
|
|
allNub++;
|
|
|
|
|
int an = operation.toSee(a);
|
|
|
|
|
if (an != 1) {
|
|
|
|
@ -80,9 +92,7 @@ public class FoodTest {
|
|
|
|
|
}
|
|
|
|
|
double wrongPoint = ArithUtil.div(wrong, allNub);
|
|
|
|
|
System.out.println("错误率:" + (wrongPoint * 100) + "%");
|
|
|
|
|
ModelParameter modelParameter = templeConfig.getModel();
|
|
|
|
|
String model = JSON.toJSONString(modelParameter);
|
|
|
|
|
System.out.println(model);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|