C#基于Halcon深度学习分类例程DeepLearning_Classification_MNIST_Halcon

用C#写的基于Halcon深度学习分类例程,可以当分类工具使用,能够快速训练和测试分类模型,操作非常直观方便!

本例基于Halcon深度学习,运行需要安装Halcon深度学习环境,参考https://blog.csdn.net/xuanbi8560/article/details/80911015

本例软件配置如下:
1、halcon-19.05.0.0-windows.exe
2、halcon-19.05.0.0-windows-deep-learning.exe
3、cuda_10.1.243_426.00_win10.exe
4、cudnn-10.1-windows10-x64-v7.6.4.38.zip
5、Visual Studio 2019
硬件配置:
CPU:英特尔 Core i7-6700HQ @ 2.60GHz 四核
GPU:Nvidia GeForce GTX 950M ( 2 GB / 联想 )

简要操作过程:

1 预处理图像
1.1 选择图像目录
所选目录可以是同时包含训练图像和测试图像的主目录,也可以是训练图像目录或测试图像目录,优先选择主目录.如本例提供图片选择mnist_images、Train_images或Test_images目录(不知道本例图片在哪的请先将“mnist_images.rar”解压后使用). 如果使用要其它图像数据集进行训练和测试,需要目录格式与本例一致.

1.2 预处理图像
在进行此步图像预处理时,如果使用其它图像,可以先对图像进行裁剪、旋转、翻转或滤波等普通图像处理,然后再使用深度学习算法处理图像使其能够用于训练.参考Halcon算子描述preprocess_dl_classifier_images.
预处理后的数据会自动保存在mnist_images\Preprocessed_images文件夹内.如果提示已有预处理好的数据,可以跳过此步直接开始训练,也可以选择删除已有数据重新预处理图像.

C#基于Halcon深度学习分类例程DeepLearning_Classification_MNIST_Halcon_第1张图片

2 训练分类器
2.1 参数设置
建议使用不同参数设置多次进行训练,了解不同参数设置对训练的影响,可以找到更好的训练参数设置.
注意:BatchSize太大容易导致显存溢出,太小可能不收敛;NumEpochs训练次数越多需要时间越长;LearningRate学习率太大收敛速度快但可能会陷入局部最优,学习率太小收敛速度慢,所需训练次数多;TrainingPercent训练数据太少可能会过拟合;ValidationPercent用于验证的数据比例.
学习率变化曲线表达公式:LearningRate(Epoch) = InitialLearningRate * Math.Pow(LearningRateStepRatio , Math.Floor(Epoch / LearningRateStepEveryNthEpoch));

2.2 训练分类器
训练过程时间可能较长,需要耐心等待...

C#基于Halcon深度学习分类例程DeepLearning_Classification_MNIST_Halcon_第2张图片

2.3 保存分类器
训练完成会自动保存训练模型结果,训练模型默认保存名称为"classifier+图像文件夹名称.hdl",默认保存目录为当前程序运行目录,点击此按钮可以手动另存到其它地方,分类器扩展名应为.hdl

2.4 误差分析
以验证数据集计算训练模型的预测值与实际值得差异,生成混淆矩阵显示.可以分析哪类数据容易被识别错误.

C#基于Halcon深度学习分类例程DeepLearning_Classification_MNIST_Halcon_第3张图片

3 图像识别测试
3.1 读取分类器
如果已有训练好的分类器,可以不进行前面1、2两步,直接读取已训练好的分类器进行测试.如果刚刚完成了分类器训练,此步也可以不操作,程序会默认将前面训练的结果用于测试.

3.2 测试分类器
测试图像可以手动选择新图像测试,也可以随机从测试图片文件夹中自动选择图片;注意,测试图像也需要使用训练模型时相同的深度学习算法处理预处理图像后再测试.

C#基于Halcon深度学习分类例程DeepLearning_Classification_MNIST_Halcon_第4张图片

除了本例图像外,还可以使用其他图像集进行训练和测试

C#基于Halcon深度学习分类例程DeepLearning_Classification_MNIST_Halcon_第5张图片

源代码地址:https://github.com/675491918/DeepLearning_MNIST_Halcon


本人也是初学者,练习写的,欢迎下载学习交流,转帖请引用本文地址https://www.51halcon.com/thread-3881-1-1.html

 

 

你可能感兴趣的:(Halcon,Deep,Learning,C#,MNIST,Classification)