使用Halcon 深度学习 目标检测辨别物件方向的体会

需求:辨别pcb板元件极性方向,如下图

左                                    

运行infer.hdev后

 

 

训练之后,效果还不错 

 使用大恒图像提供的代码(视频最后有百度云盘,可扫码下载)

http://tr.daheng-imaging.com/watch/1101141

 

训练参数:

网络模型:pretrained_dl_classifier_enhanced.hdl

*训练迭代次数   NumEpochs := 300*1.0

*数据扩充比例
AugmentationPercentage := 0
*数据扩充是否支持水平、垂直镜像,可设值'r'、'c'、'rc'、'off'
AugmentationMirror := 'off'   

如果要判断物件方向,AugmentationMirror一定要设置为off

*初始学习率0.0005
InitialLearningRate := 0.0001*1

*最大重叠度
MaxOverlap := 0.2

MaxLevel是在determine_dl_model_detection_param函数中自动计算的,但是好像不准

我给改成固定的了

set_dict_tuple (DLDetectionModelParam, 'min_level', MinLevelToUse)
set_dict_tuple (DLDetectionModelParam, 'max_level', MaxLevelToUse)

改为:

set_dict_tuple (DLDetectionModelParam, 'min_level', 3)
set_dict_tuple (DLDetectionModelParam, 'max_level', 4)

需要根据图片尺寸来设定,图片越大,maxlevel可设置的越大

总结:

1、图片大小最好保持一致,训练和测试用图片尺寸也要一致

2、图片亮度要高,太暗的图片不容易提取特征。

3、图片不能太大,大图片上取小目标,也不好提取特征。

4、maxlevel尽可能的大,虽然层数多,会增加训练时间,但是识别率会提高很多。

5、样本图片尽量多一些,至少超过30张

另外:大恒的代码里会将图片的width和height处理成64的倍数,所以图片的长宽不能小于64像素

  if (Width > MaxWidth)
        tuple_min2(Width, MaxWidth*1.0, Min)
        Scale := Width / Min
    else
        Scale := 1.0
    endif
    Divisor := 64
    Width  := int(int((Width / Scale) / Divisor) * Divisor)
    Height := int(int((Height / Scale) / Divisor) * Divisor)

版权声明:本文为CSDN博主「zhangsansecond」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhangsansecond/article/details/121533688

zhangsansecond

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

目标检测中的先验框(Anchor)

什么是先验框?
了解过目标检测算法的朋友们肯定知道先验框(Anchor)的概念,那么什么是先验框,为什么要有先验框?若要解释这个问题,首先我们需要了解边界框回归原理。
b

YOLOv3学习——锚框和候选区域

YOLOv3学习之锚框和候选区域
单阶段目标检测模型YOLOv3
R-CNN系列算法需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法。近几年,很多研究人员相继