一种在手机端实现轻量级目标检测的方法及模型
技术领域
本发明涉及数据识别技术领域,具体的说是一种在手机端实现轻量级目标检测的方法及模型。
背景技术
目标检测(Object Detection)任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观,形状,姿态,加上成像时光照,遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。
传统的目标检测方法,目标区域的特征提取仍然是以手工特征的方式进行特征提取的,例如方向梯度直方图HOG、SIFT等,检测效率低,检测精度低。近年来,随着深度学习的发展,深度卷积神经网络(CNN)在图像目标检测方面已经取得了巨大进展。深度卷积神经网络可以更加精确的提取图像特征信息,从而更加准确确定目标类别以及位置。
随着信息时代的到来,手机已经成为人们生活中必不可少的物品。一方面,通过深度学习训练出的目标检测模型通常包含大量参数,另一方面,目标检测模型体积大并且需要GPU支持,难以部署在手机端。
发明内容
本发明针对目前通过深度学习训练出的目标检测模型因体积过大无法部署在手机端的缺陷,提供一种在手机端实现轻量级目标检测的方法及模型,以在损失较小精度的情况下,减小目标检测模型的参数量和体积,同时,提高目标检测模型的运算速度。
首先,本发明提供一种在手机端实现轻量级目标检测的方法,解决上述技术问题采用的技术方案如下:
一种在手机端实现轻量级目标检测的方法,该方法的实现需要采集图像数据,并对图像数据中的目标物体进行标注,然后利用GhostNet网络和CenterNet网络完成目标检测模型的训练和验证,在验证通过后对目标检测模型进行压缩,实现目标检测模型的轻量化,最后将轻量化后的目标检测模型部署于手机端,进而在手机端进行目标检测。
实现轻量级目标检测方法的具体过程包括:
步骤一、采集图像数据;
步骤二、对图像数据中目标物体的位置和类别进行标注;
步骤三、将标注后图像数据转为VOC格式的数据集,并将数据集划分为训练集和验证集两部分;
步骤四、基于GhostNet网络提取图像特征,基于CenterNet网络对提取的图像特征进行训练,训练得到目标检测模型;
步骤五、将验证集包含的图像数据输入目标检测模型,验证目标检测模型的输出结果与标注结果是否一致;
步骤六、验证结果不一致时,扩大采集的图像数据,返回执行步骤二,验证结果一致时,执行步骤七;
步骤七、对训练得到的目标检测模型进行int8量化,完成目标检测模型的压缩;
步骤八、将压缩的目标检测模型部署到手机端,进而在手机端进行目标检测。
执行步骤二时,使用labelImg工具对图像数据中目标物体的位置和类别进行标注;
执行步骤二后,利用python中opencv包对标注后的图像数据进行增广处理,然后再转为VOC格式的数据集;增广处理的方式包括水平与垂直翻转、模糊处理、亮度变换,在对图像数据进行增广处理的同时,还需要增广图像数据中已标注目标物体的位置和类别。
具体的,训练集包含图像数据的数量多于验证集包含图像数据的数量,且训练集和验证集包含图像数据的数量比例可以是9:1,或者4:1,或者7:3。
详细的,对训练得到的目标检测模型进行int8量化,这一具体过程包括:
引入公式(1),计算q:
其中,r代表真实float32值,q代表映射后int8值,S代表缩放系数,Z代表zero-point,即真实浮点数0映射到int8整数时所对应的值;
基于公式(1)计算q的过程中,还需要引入公式(2)、公式(3),来计算S和Z:
其中round()算子表示:
表示对x向上取整。
可选的,对目标检测模型进行int8量化之前,首先将训练得到的目标检测模型转换为ONNX格式,随后通过x2paddle工具将ONNX格式的目标检测模型转换为paddle格式,最后通过PaddleSlim工具对paddle格式的目标检测模型进行int8量化;
目标检测模型进行int8量化后,通过opt工具将量化后的目标检测模型转换为PaddleLite模型,最后利用PaddleLite将PaddleLite模型部署到手机端即可。
其次,本发明还提供一种在手机端实现轻量级目标检测的模型,解决上述技术问题采用的技术方案如下:
一种在手机端实现轻量级目标检测的模型,实现该模型的结构框架包括:
采集模块,用于采集图像数据;
标注模块,用于对图像数据中目标物体的位置和类别进行标注;
转换划分模块,用于将标注后图像数据转为VOC格式的数据集,并将数据集划分为训练集和验证集两部分;
GhostNet网络模块,用于提取图像特征;
CenterNet网络模块,用于对提取的图像特征进行训练,进而得到目标检测模型;
验证模块,用于将验证集包含的图像数据输入目标检测模型,验证目标检测模型的输出结果与标注结果是否一致;
压缩模块,在目标检测模型的输出结果与标注结果一致时,用于对目标检测模型进行int8量化,得到轻量级目标检测模型,该模型可以部署到手机端,进行目标检测。
进一步的,实现目标检测模型的结构框架还包括:
增广模块,用于对标注后的图像数据进行增广处理;
增广模块选用python中opencv包,增广模块的处理方式包括水平与垂直翻转、模糊处理、亮度变换,在对图像数据进行增广处理的同时,增广模块还需要增广图像数据中已标注目标物体的位置和类别。
进一步的,压缩模块对目标检测模型进行int8量化的具体操作为:
引入公式(1),计算q:
其中,r代表真实float32值,q代表映射后int8值,S代表缩放系数,Z代表zero-point,即真实浮点数0映射到int8整数时所对应的值;
基于公式(1)计算q的过程中,还需要引入公式(2)、公式(3),来计算S和Z:
其中round()算子表示:
表示对x向上取整。
更进一步的,压缩模块对目标检测模型进行int8量化的具体过程包括:
在目标检测模型的输出结果与标注结果一致时,压缩模块首先将训练得到的目标检测模型转换为ONNX格式,随后通过x2paddle工具将ONNX格式的目标检测模型转换为paddle格式,最后通过PaddleSlim工具对paddle格式的目标检测模型进行int8量化;
压缩模块对目标检测模型进行int8量化后,通过opt工具将量化后的目标检测模型转换为PaddleLite模型,最后利用PaddleLite将PaddleLite模型部署到手机端进行目标检测即可。
本发明的一种在手机端实现轻量级目标检测的方法及模型,与现有技术相比具有的有益效果是:
本发明基于GhostNet网络和CenterNet网络,完成目标检测模型的训练,随后,对训练得到的目标检测模型进行int8量化,实现目标检测模型的轻量化,该轻量化的目标检测模型在损失较小精度的情况下,具有体积小、运算速度快的优点,尤其适用于部署在手机端。
附图说明
附图1是本发明实施例一的流程示意图;
附图2是本发明实施例二的框架流程图。
附图中各标号信息表示:
1、采集模块,2、标注模块,3、转换划分模块,4、GhostNet网络模块,5、CenterNet网络模块,6、验证模块,7、压缩模块,8、增广模块,9、目标检测模型,10、轻量级目标检测模型。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
本实施例提出一种在手机端实现轻量级目标检测的方法,该方法的实现需要采集图像数据,并对图像数据中的目标物体进行标注,然后利用GhostNet网络和CenterNet网络完成目标检测模型9的训练和验证,在验证通过后对目标检测模型9进行压缩,实现目标检测模型9的轻量化,最后将轻量化后的目标检测模型9部署于手机端,进而在手机端进行目标检测。
结合附图1,实现轻量级目标检测方法的具体过程包括:
步骤一、采集图像数据;
步骤二、对图像数据中目标物体的位置和类别进行标注;具体实施时,目标物体类别表示为(obj1,obj2,…),目标物体坐标可以表示为P=(x1,y1,x2,y2),其中,(x1,y1)、(x2,y2)分别代表目标物体左上角坐标与右下角坐标;
步骤三、将标注后图像数据转为VOC格式的数据集,并将数据集划分为训练集和验证集两部分;
步骤四、基于GhostNet网络提取图像特征,基于CenterNet网络对提取的图像特征进行训练,训练得到目标检测模型9;
步骤五、将验证集包含的图像数据输入目标检测模型9,验证目标检测模型9的输出结果与标注结果是否一致;
步骤六、验证结果不一致时,扩大采集的图像数据,返回执行步骤二,验证结果一致时,执行步骤七;
步骤七、对训练得到的目标检测模型9进行int8量化,完成目标检测模型9的压缩;
步骤八、将压缩的目标检测模型9部署到手机端,进而在手机端进行目标检测。
执行步骤二时,使用labelImg工具对图像数据中目标物体的位置和类别进行标注;
执行步骤二后,利用python中opencv包对标注后的图像数据进行增广处理,然后再转为VOC格式的数据集;增广处理的方式包括水平与垂直翻转、模糊处理、亮度变换,在对图像数据进行增广处理的同时,还需要增广图像数据中已标注目标物体的位置和类别。
本实施例中,训练集包含图像数据的数量多于验证集包含图像数据的数量,且训练集和验证集包含图像数据的数量比例可以是4:1。
本实施例中,对训练得到的目标检测模型9进行int8量化,这一具体过程包括:
引入公式(1),计算q:
其中,r代表真实float32值,q代表映射后int8值,S代表缩放系数,Z代表zero-point,即真实浮点数0映射到int8整数时所对应的值;
基于公式(1)计算q的过程中,还需要引入公式(2)、公式(3),来计算S和Z:
其中round()算子表示:
表示对x向上取整。
本实施例中,对目标检测模型9进行int8量化之前,首先将训练得到的目标检测模型9转换为ONNX格式,随后通过x2paddle工具将ONNX格式的目标检测模型9转换为paddle格式,最后通过PaddleSlim工具对paddle格式的目标检测模型9进行int8量化;
目标检测模型9进行int8量化后,通过opt工具将量化后的目标检测模型9转换为PaddleLite模型,最后利用PaddleLite将PaddleLite模型部署到手机端即可。
实施例二:
结合附图2,本实施例提出一种在手机端实现轻量级目标检测的模型,实现该模型的结构框架包括:
采集模块1,用于采集图像数据;
标注模块2,用于对图像数据中目标物体的位置和类别进行标注;具体实施时,目标物体类别表示为(obj1,obj2,…),目标物体坐标可以表示为P=(x1,y1,x2,y2),其中,(x1,y1)、(x2,y2)分别代表目标物体左上角坐标与右下角坐标;
转换划分模块3,用于将标注后图像数据转为VOC格式的数据集,并将数据集划分为训练集和验证集两部分;
GhostNet网络模块4,用于提取图像特征;
CenterNet网络模块5,用于对提取的图像特征进行训练,进而得到目标检测模型9;
验证模块6,用于将验证集包含的图像数据输入目标检测模型9,验证目标检测模型9的输出结果与标注结果是否一致;
压缩模块7,在目标检测模型9的输出结果与标注结果一致时,用于对目标检测模型9进行int8量化,得到轻量级目标检测模型10,该模型可以部署到手机端,进行目标检测。
本实施例中,实现轻量级目标检测模型10的结构框架还包括:
增广模块8,用于对标注后的图像数据进行增广处理;
增广模块8选用python中opencv包,增广模块8的处理方式包括水平与垂直翻转、模糊处理、亮度变换,在对图像数据进行增广处理的同时,增广模块8还需要增广图像数据中已标注目标物体的位置和类别。
本实施例中,压缩模块7对目标检测模型9进行int8量化的具体操作为:
引入公式(1),计算q:
其中,r代表真实float32值,q代表映射后int8值,S代表缩放系数,Z代表zero-point,即真实浮点数0映射到int8整数时所对应的值;
基于公式(1)计算q的过程中,还需要引入公式(2)、公式(3),来计算S和Z:
其中round()算子表示:
表示对x向上取整。
本实施例中,压缩模块7对目标检测模型9进行int8量化的具体过程包括:
在目标检测模型9的输出结果与标注结果一致时,压缩模块7首先将训练得到的目标检测模型9转换为ONNX格式,随后通过x2paddle工具将ONNX格式的目标检测模型9转换为paddle格式,最后通过PaddleSlim工具对paddle格式的目标检测模型9进行int8量化;
压缩模块7对目标检测模型9进行int8量化后,通过opt工具将量化后的目标检测模型9转换为PaddleLite模型,最后利用PaddleLite将PaddleLite模型部署到手机端进行目标检测即可。
综上可知,采用本发明的一种在手机端实现轻量级目标检测的方法及模型,基于GhostNet网络和CenterNet网络,完成目标检测模型9的训练,随后,对训练得到的目标检测模型9进行int8量化,实现目标检测模型9的轻量化,该轻量化的目标检测模型9在损失较小精度的情况下,具有体积小、运算速度快的优点,尤其适用于部署在手机端。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。