CN116258941A - 基于Android平台的yolox目标检测轻量化改进方法 - Google Patents
基于Android平台的yolox目标检测轻量化改进方法 Download PDFInfo
- Publication number
- CN116258941A CN116258941A CN202310233273.XA CN202310233273A CN116258941A CN 116258941 A CN116258941 A CN 116258941A CN 202310233273 A CN202310233273 A CN 202310233273A CN 116258941 A CN116258941 A CN 116258941A
- Authority
- CN
- China
- Prior art keywords
- model
- network
- yolox
- target detection
- android
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/766—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using regression, e.g. by projecting features on hyperplanes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/774—Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V2201/00—Indexing scheme relating to image or video recognition or understanding
- G06V2201/07—Target detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Image Analysis (AREA)
Abstract
基于Android平台的yolox目标检测轻量化改进方法,包括以下步骤;步骤1:收集和准备训练时所需带有标注的图像和对应的标签数据,并对数据进行预处理;步骤2:将原来的BCE交叉熵损失函数替换为现在的varifocalloss损失函数;步骤3:将原有的CSPDarknet网络替换为MobileNet网络;步骤4:采用yolox算法对所述步骤1的数据集进行训练,通过反向传播算法不断优化模型参数;步骤5:转换模型格式:将训练好的MobileNet网络格式转换为Android设备可读取的格式;步骤6:部署模型:将格式转换后部署到Android设备上,并利用Android平台的GPU加速技术加速模型的推理过程;步骤7:实现目标检测。本发明能够在保证目标检测精度的前提下,大幅降低模型的计算和存储开销,提高移动设备上的目标检测性能和效率。
Description
技术领域
本发明属于图像中目标检测技术领域,具体涉及基于Android平台的yolox目标检测轻量化改进方法。
背景技术
随着计算机视觉技术的不断发展,目标检测技术已成为计算机视觉领域的重要研究方向。目标检测技术可以对图像或视频中的目标进行自动识别和定位,广泛应用于交通监控、智能安防、自动驾驶等领域。
目前,移动端目标检测的主流方法是将预训练的深度学习模型移植到移动设备上进行推理。然而,深度学习模型通常具有较大的计算和存储开销,这在移动设备上往往会导致性能和效率问题。
现有的针对移动设备的模型轻量化技术主要采用剪枝、量化和蒸馏等方法,以减少模型的参数量和计算量。但是,这些方法可能会降低模型的准确性和鲁棒性,并且不够灵活和可定制化,无法满足不同应用场景和设备的需求。同时,这些方法通常需要额外的计算和存储资源来进行训练和转换,不利于在移动设备上实时推理和部署。
发明内容
为了克服上述现有技术存在的不足,本发明的目的在于提供基于Android平台的yolox目标检测轻量化改进方法,能够在保证目标检测精度的前提下,大幅降低模型的计算和存储开销,提高移动设备上的目标检测性能和效率。同时,本发明的方法能够充分利用移动设备上的硬件资源,进一步提高目标检测效率,具有实际应用价值。
为了实现上述目的,本发明采用的技术方案是:
基于Android平台的yolox目标检测轻量化改进方法,包括以下步骤;
步骤1:收集和准备训练时所需带有标注的图像和对应的标签数据,并对数据进行预处理;
步骤2:基于yolox模型,在yolox主干层和数据增强层之间引入注意力机制,并以varifocalloss损失函数替换原有的BCE交叉熵损失函数;
步骤3:以MobileNet网络替换原有的CSPDarknet网络,以实现网络轻量化,减小模型大小和运行时的计算量,以便在Android设备上部署和运行;
通过在yolox主干层和数据增强层之间引入注意力机制和替换主干网络模型,可以实现网络轻量化,减小模型大小和运行时的计算量,从而更好地适应移动设备的性能限制;此外,varifocalloss损失函数的引入也可以提高模型在移动设备上的性能表现。相比于现有的针对移动设备的模型轻量化技术,本发明提出的方法能够在保持较高检测精度的前提下,减小模型的大小和运行时的计算量,提高移动设备上的目标检测性能和效率。
步骤4:训练步骤3轻量化改进后的MobileNet网络:采用yolox算法和所述步骤1的数据集,通过反向传播算法不断优化模型参数,使模型能够准确识别和定位目标物体;
步骤5:转换模型格式:将训练好的MobileNet网络格式转换为Android设备可读取的格式;在步骤4中采用轻量化后的MobileNet网络结构进行训练后,需要将训练好的模型转换为Android设备可读取的格式,以便在移动设备上部署和运行。
具体地,将训练好的pth模型转化为onnx模型是转换的第一步,然后再利用脚本工具将onnx模型转换为NCNN格式的模型,以便在移动设备上进行部署和运行。因此,步骤5是在步骤4的基础上,将训练好的模型转换为移动设备可读取的格式的关键步骤。
步骤6:部署模型:将格式转换后部署到Android设备上,并利用Android平台的GPU加速技术加速模型的推理过程;
步骤6是在步骤5的基础上进行的,步骤5中提到将训练好的MobileNet网络转换为NCNN格式的模型以便在移动设备上进行部署和运行,而步骤6则是将格式转换后的NCNN格式的模型部署到Android设备上,并利用Android平台的GPU加速技术加速模型的推理过程。因此,步骤6是步骤5的延续,是在移动设备上进行目标检测的最后一步。
步骤7:实现目标检测:在Android设备上运行部署好的模型,对输入的图像进行目标检测,并返回检测结果。
所述步骤1准备训练时所需的数据集,包括以下步骤:
(1)收集数据:从开放的数据集官网中收集PASCAL VOC数据集,包括JPEGImages、ImageSets和Annotations;其中JPEGImages包含训练的数据集,ImageSets包含每种类型的train.txt、trainval.txt和val.txt文件,Annotations包含每一类的xml文件;
(2)数据预处理:数据预处理是对收集到的原始图像进行预处理,使其适合于模型训练;包括剪裁、缩放、增强,以便于用于模型训练;
首先,将原始图像调整为指定的大小,以便于后续处理;
选取的目标检测原始图像大小为416x416像素;
接下来,将彩色图像转换为灰度图像;这样可以减少数据存储和处理的复杂度,并且可以减少模型训练的时间和计算量;
最后,将图像中的像素值缩放到0到1之间。这样可以使得数据在处理过程中更加稳定,同时可以减小训练过程中的梯度爆炸和梯度消失问题。
所述步骤2包括以下步骤:
(1)注意力机制的引入:在目标检测的主干层和数据增强层之间引入注意力机制,通过对不同特征图的重要性加权来提高模型的准确性;具体而言,本申请使用CBAM注意力模型来实现对特征图的加权操作,在yolox主干层和数据增强层通道之间插入通道-空间注意力机制CBAM模块,CBAM模块是通道-空间注意力机制的一种实现,可以有效提高模型的精度;
注意力模型主要包含两个部分:通道注意力和空间注意力,首先通过通道注意力机制,将将YOLOX主干层提取的特征图分别进行平均池化和最大池化操作,实现聚合特征图的空间信息,生成的平均池化特征和最大池化特征通过共享网络层,将共享网络应用到每个特征后,将平均池化特征和最大池化特征进行元素求和,并将合并的特征通过Sigmiod激活函数输出通道注意映射Mc,空间注意力沿着通道轴对特征图进行平均池化和最大池化操作,使特征图在通道维度上进行压缩,并将两个特征图在通道维度上进行拼接生成一个有效的特征图,随后经过7X7的卷积层,最后,通过Sigmiod函数操作得到最终的通道注意映射Ms;
(2)将原有的BCE交叉熵损失函数替换为VariFacalLoss损失函数;在替换BCE交叉熵损失函数为VariFocalLoss损失函数的过程中,需要修改模型的输出层;输出层包括类别预测分支、置信度预测分支和边界框预测分支,类别预测分支用来预测每个物体属于哪个类别,输出一个长度为C(类别数)的向量,置信度预测分支用来预测每个物体的置信度,即它是物体的概率,输出一个值,边界框预测分支用来预测每个物体的边界框位置,输出4个值;
VariFocalLoss损失函数会引入一个可学习的指数γ,并且将损失函数的计算公式中的权,重调整项进行了修改,从而更加注重难样本的学习。因此,需要对输出层进行相应的修改以适应这种变化。
在YOLOX目标检测网络中,输出层通常包括分类分支和回归分支,在分类分支中,需要对每个目标进行分类,而在回归分支中,需要对每个目标进行位置信息的回归。为了适应VariFocalLoss损失函数的计算,需要对每个目标在分类分支中的预测结果进行处理;
具体而言,需要将分类分支的输出先进行sigmoid函数的处理,然后再将其变成预测概率,根据这个概率来计算VariFocalLoss损失函数;
在物体检测任务中,一般需要对图像中的目标进行分类和位置回归,在输出层的设计上,会有两个分支,分别对应分类和回归任务,对于分类分支的输出,一般会经过一个sigmoid函数,将其压缩到0-1的范围内,然后再转化成对应的预测概率;
使用VariFocalLoss损失函数时,需要根据预测概率来计算损失值,需要对输出层进行相应的修改,在输出层中,需要对分类分支的输出先进行sigmoid函数的处理,然后再将其变成预测概率,将这个预测概率作为VariFocalLoss损失函数中的输入,计算相应的损失值,因为VariFocalLoss损失函数会引入一个可学习的指数γ,并且将损失函数的计算公式中的权重调整项进行了修改,从而更加注重难样本的学习,因此,需要对输出层进行相应的修改以适应这种变化;
在回归分支中,由于VariFocalLoss损失函数只对分类分支进行了修改,因此回归分支的计算方式不需要进行变化。
所述步骤3包括以下步骤:
(1)根据目标检测任务的需求,确定MobileNet网络的输入和输出尺寸,并根据实际情况对MobileNet网络的深度和宽度进行调整;以达到较好的检测效果和计算效率;
所述深度调整,通过增加或减少网络的层数来调整MobileNet网络的深度,以增强网络的表达能力和感受野,所述宽度调整,通过增加或减少网络中每层的通道数来调整MobileNet网络的宽度,以增强网络的特征表达能力;
(2)根据网络结构,将MobileNet网络集成到目标检测模型中,并将原有的CSPDarknet网络对应的层替换成MobileNet网络对应的层;
将CSPDarknet网络中的卷积层或残差块的卷积操作拆分成深度卷积和逐点卷积两部分,然后分别用MobileNet网络中的深度可分离卷积层来替换这两个部分;由于MobileNet网络采用的是深度可分离卷积,其计算方式与普通卷积不同,需要进行相应的调整和兼容;
(3)对替换后的目标检测模型进行训练,并记录和评估模型在测试集上的性能指标;在训练过程中,可以根据需要对网络的学习率、批大小、优化器等进行调整和优化,以提高模型的性能表现;在深度学习领域中,学习率的调整是一项基本的优化策略,以使得模型在训练过程中能够更快地收敛并获得更好的性能,学习率的选择需要根据具体任务和网络结构进行调整,通常使用学习率衰减、学习率预热等方法来优化学习率的选择。此外,批大小、优化器等参数也需要根据具体情况进行调整以提高模型性能
本发明采用学习率衰减的方法,即随着训练的进行,逐渐减小学习率的值,以避免训练过程中出现梯度爆炸或梯度消失等问题。批大小是指每次训练时输入的样本数量,需要根据GPU的内存大小和具体任务的复杂度进行调整。批大小越大,可以更充分地利用GPU的并行计算能力,加快训练速度,但同时也会增加GPU的内存占用和模型的泛化误差。
所述步骤4对网络模型进行训练,包括下列步骤:
(1)采用步骤1预处理后的数据集;
(2)将数据集按照8:2的比例划分为数据集和验证集;
(3)将经过预处理后的数据集输入到YOLOX目标检测网络中,网络的预测值pred与真实值gt输入到损失函数L中,通过以下公式求取损失值
Loss=L(pred,gt)
其中,L表示损失函数,pred表示网络输出的预测值,gt表示真实值。根据损失函数L对网络参数进行优化,使用梯度下降法更新神经网络参数。设当前神经网络参数为,则更新公式为:
(4)通过一轮参数更新后,需要使用验证集对模型进行检验,以验证模型的泛化能力。具体而言,将验证集输入到YOLOX网络中,计算预测结果与真实结果之间的损失度量,也就是验证集损失度。设验证集大小为N,第i个样本的预测框为,真实框为,则验证集损失度L计算如下:
其中,S是每个格子预测框的数量,C是目标类别数,和分别表示第i个样本的第j个格子中第c个类别的预测值和真实值,和分别表示第i个样本的第j个格子是否存在目标的预测值和真实值,和分别表示第i个样本的第j个格子中的置信度预测值和真实值,表示第i个样本的第j个格子中与真实框有最大交并比的预测框的索引集合和是两个权重系数,用于平衡存在目标的格子和不存在目标的格子的权重。
通过计算验证集损失度,可以评估当前模型的表现,如果损失度较高,则需要继续训练,直到达到预定的停止条件;
(5)每迭代两次,将数据集中的图片,输入到经过优化的YOLOX目标检测网络中进行训练,获得模型的精度。优化后的YOLOX目标检测网络具有更高的检测精度和更快的检测速度;
(6)重复以上步骤直到epoch达到300轮后结束,此时模型已经收敛。
所述步骤5包括以下步骤:
(1)导出训练好的模型:从所述步骤4中训练好的yolox模型中导出网络结构和参数。
(2)选择目标格式:根据Android设备和部署框架的要求,选择合适的目标格式,在本发明中选择ONNX格式。
(3)进行格式转换:利用相关工具对导出的ONNX模型转换成NCNN格式,并进行优化,以适应Android设备的硬件环境和部署框架的要求。
(4)验证转换结果:对转换后的模型进行验证,确保其与原模型的输出结果一致,并能够在Android设备上进行推理操作。
所述步骤6包括以下步骤:
(1)确定Android设备的硬件环境:根据Android设备的CPU、GPU、内存等硬件环境,确定合适的模型大小、精度和部署方式。
(2)选择部署框架:根据Android设备的硬件环境和目标检测需求,选择合适的部署框架,在本发明中,选择PyTorch Mobile框架作为部署框架。
(3)转换模型格式:将训练好的模型格式转换为Android设备可读取的格式,在本发明中,选择将模型转换为ONNX格式,然后转换为NCNN。
(4)部署模型到Android设备:将转换后的模型和部署框架一起打包成应用程序,部署到Android设备上。
(5)进行性能测试和优化:在Android设备上测试和优化部署好的模型,以提高模型的推理速度和精度。
所述步骤7包括以下步骤:
(1)加载转换后的模型:将部署好的模型加载到Android设备上,并准备好输入数据。
(2)图像预处理:对输入图像进行预处理,如缩放、裁剪、归一化等操作,以适应模型输入的格式和大小。
(3)执行模型推理:将预处理后的图像输入模型,执行目标检测推理操作,得到检测结果。
(4)后处理:对检测结果进行后处理,如筛选、非极大值抑制(NMS)、边框解码、类别预测等操作,以得到最终的目标检测结果。
(5)可视化结果:将目标检测结果可视化,如绘制边框、标注类别等操作,以便于用户查看和理解。
本发明的有益效果:
本发明一方面提高了目标检测的检测效率:它在保持原有目标检测的准确性的同时,进一步提高了目标检测的检测效率。而且本发明将原有CSPDarknet模型替换成MobileNet模型,实现了轻量化,减少了模型的存储空间和计算量,提高了模型在移动设备上的实时性能。
另一方面实现了移动端的实时目标检测:本发明基于Android平台,可以在移动设备上实现实时目标检测,无需借助云端计算资源。这对于一些对实时性要求较高的应用场景非常有益,比如智能交通、安防监控等领域,它可以应用于多个领域,目标检测技术在很多领域都有广泛的应用,比如智能家居、智能医疗、智能零售等。本发明基于Android平台,可以在多个领域中实现目标检测应用,拓展了技术的应用范围。本发明实现了在移动设备上实时目标检测,可以为用户提供更加便捷、高效、安全的智能服务体验。这对于一些对用户体验要求较高的应用场景非常有益,比如智能家居、智能零售等领域。
综上所述,本发明的有益效果包括提高目标检测的准确性、实现了移动端的实时目标检测、可以应用于多个领域以及提高了用户体验。
附图说明
图1为本发明的整体流程图。
图2为原有yolox深度学习网络模型结构图。
图3为引入注意力机制的yolox深度学习网络模型结构图。
图4为修改主干网络后的yolox深度学习网络模型结构图。
图5为本发明模型转换流程图。
图6为本发明在Android平台上的运行流程图。
图7为本发明目标检测效果示意图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
设定如下场景:带有GPU的服务器一台,下载完成的PASCAL VOC2007数据集,一个台Android手机,模型转换代码、Android studio平台。待检测的数据为工位办公环境中涉及到公共数据集的物体类别和数据集中的部分图片。
如图1所示,本发明实施步骤如下:
1)服务器端环境部署
在服务器端安装GPU版本的pytorch智能计算框架,下载并安装Android的开发工具Android studio。
2)准备VOC数据集
从开放的数据集官网中收集PASCAL VOC数据集,包括JPEGImages、ImageSets和Annotations。其中JPEGImages包含训练的数据集,ImageSets包含每种类型的train.txt、trainval.txt和val.txt文件,Annotations包含每一类的xml文件;
3)改进损失函数,并引入注意力机制
首先,在主干层和数据增强层通道之间插入通道-空间注意力机制CBAM模块;CBAM模块被插入在主干层和数据增强层通道之间,用于对这两个模块中提取的特征进行处理。在CBAM模块中,首先进行通道注意力机制处理,以提高模型对特征通道的关注度。接着进行空间注意力机制处理,以增强对不同空间位置的特征提取能力。CBAM模块的输出特征图再与主干层和数据增强层中提取的特征进行融合,最终作为后续处理的输入,如图3所示,在引入注意力机制的yolox深度学习网络模型中,CBAM模块被插入在主干层和数据增强层通道之间,用于对这两个模块中提取的特征进行处理。具体地,CBAM模块的输入是主干层和数据增强层中的特征图,经过通道注意力机制和空间注意力机制的处理后,输出的特征图再与主干层和数据增强层中提取的特征进行融合。在这个过程中,CBAM模块通过一个瓶颈结构对输入特征图进行处理,首先通过一个全局平均池化操作,得到每个通道的全局平均值和最大值,然后将这两个值作为输入,分别通过两个全连接层得到通道注意力权重和空间注意力权重。接着,利用这两个权重,将输入特征图进行加权平均,得到经过注意力机制处理后的特征图。最终,经过注意力机制处理的特征图再与主干层和数据增强层中提取的特征进行融合,得到最终的特征图作为后续处理的输入。这样,注意力机制可以使得网络更加关注重要的特征通道和空间位置,从而提高模型的准确性。接下来,将原有的BCE交叉熵损失函数替换为VariFacalLoss损失函数;替换BCE交叉熵损失函数为VariFocalLoss损失函数后,模型在训练过程中会为正负样本加上权重值,控制正负样本对总损失函数值的共享权重,使得模型在训练过程中更专注于难分的样本,进而提高目标检测的准确性。
4)通过替换主干网络来轻量化模型
如图4所示,将原来的CSPDarknet网络替换成MobileNet网络,实现网络轻量化,来减小模型大小和运行时的计算量,以便在Android设备上部署和运行。在原有的yolox深度学习网络中,使用了CSPDarknet网络作为主干网络,但为了在Android设备上高效部署和运行目标检测应用,需要将CSPDarknet网络替换成轻量化的MobileNet网络。因此,可以使用MobileNet网络替换掉原来CSPDarknet网络中的主干网络部分,并进行对应的层替换,如前面所述。这样,通过减小模型大小和计算量,提高模型的运行效率和推理速度,可以满足在Android设备上部署和运行目标检测应用的要求。同时,由于MobileNet网络具有较小的模型大小和较快的推理速度,因此可以在较低的计算资源下运行。采取这些手段的目的是为了实现在Android设备上高效部署和运行目标检测应用。MobileNet网络是一种轻量级的网络模型,具有较小的模型大小和较快的推理速度,而且可以在较低的计算资源下运行。通过将CSPDarknet网络替换为MobileNet网络,可以显著减小模型大小和计算量,提高模型的运行效率和推理速度,从而满足在Android设备上部署和运行目标检测应用的要求。
经过对比实验,使用MobileNet网络作为主干网络,可以使得模型大小减小至原来的约1/10,同时推理速度也得到了显著提升,可以在Android设备上快速地进行目标检测。这样的轻量化操作可以使得目标检测应用更加普及化和实用化,提高用户的体验感和应用的推广价值。
5)训练YOLOX模型
将数据集输入到YOLOX神经网络当中,将网络的预测值与真实值输入到损失函数中,求取损失值,并根据梯度下降法对神经网络参数进行更新;每通过一轮参数更新后,将验证集输入到YOLOX网络中进行验证,计算验证机损失度。每迭代两次后,将数据集中的图片,输入到训练好的模型当中,获得模型的精度;重复以上步骤直到epoch达到300轮后结束,此时模型已经收敛。
6)模型转换
如图5所示,将训练好的模型通过转换代码,将pth转化为onnx模型,再利用脚本工具将onnx转化为NCNN格式的模型。采取这些转换手段的目的是为了提高模型在不同平台上的可移植性和部署效率。通过将训练好的PyTorch模型转换为ONNX格式,可以使得该模型可以被更多的深度学习框架和硬件加速器所支持和使用。而将ONNX模型进一步转换为NCNN格式的模型,则是为了更好地支持在移动设备等嵌入式设备上的部署和应用。
通过将模型从一种格式转换为另一种格式,可以达到模型压缩和轻量化的效果,同时还可以减少模型在部署和运行时的计算量和内存占用。这可以帮助我们在硬件资源受限的情况下,仍然能够高效地运行目标检测任务,使得应用具有更好的性能和响应速度。同时,模型转换也可以加快模型在不同平台上的部署和应用速度,提高模型的实际应用价值。
7)模型部署
如图6所示,将转换后的模型格式部署到Android设备上并利用Android平台的GPU加速技术加速模型的推理过程。部署转换后的模型格式到Android设备上并利用Android平台的GPU加速技术加速模型的推理过程的目的是为了提高模型的运行速度和响应能力,使得在移动设备上进行目标检测任务时能够更加流畅和高效。通过利用GPU加速技术,可以显著提升模型的计算速度和能力,从而减少推理时间和延迟,增加实时性和交互性,提高用户体验。此外,通过在移动设备上进行推理过程,还可以保护用户隐私,避免数据泄露的风险。
8)实现目标检测
在Android设备上运行部署好的模型,对输入的图像进行目标检测,并返回检测结果。在检测过程中,可以采用多种优化策略,如图像预处理、非极大值抑制等,以提高检测的精度和效率。针对Android设备上运行部署好的模型进行目标检测,需要对输入的图像进行预处理,如图像大小调整、归一化、通道转换等操作,以适应模型的输入要求。同时,为了提高检测的精度和效率,还可以采用非极大值抑制(NMS)等优化策略,对检测结果进行后处理,去除重叠的框和置信度较低的框,保留最终的检测结果,检测结果如图7所示。
所述步骤1中,数据集的质量和数量对模型的训练和性能至关重要。因此,需要选择与目标检测任务相关的数据集,并对其进行预处理和清理,以便于后续的模型训练和评估;
所述步骤2中,在原有轻量化模型的主干层和数据增强层之间插入通道-空间注意力机制CBAM模块,使得模型在处理图像时能够自动关注与目标检测相关的重要特征,提高网络的关注度和抗干扰能力。将原有的BCE交叉熵损失函数替换为VariFocal Loss损失函数,提高模型的分类性能和对难易样本的识别能力。VariFocal Loss在损失函数中引入可变的重点参数,使得模型更加关注难以分类的样本,从而提高模型的分类性能。
所述步骤3中,针对移动设备等资源受限的场景下的目标检测任务,通过替换主干网络模型来实现轻量化和高效运行。将CSPDarknet网络替换成MobileNet网络的方法,该方法可以减小模型大小和计算量,并降低目标检测的耗时,提高检测速度和效率。MobileNet网络是一种基于深度可分离卷积的轻量化网络结构,具有较小的模型体积和计算量,同时保证较高准确率,非常适合在移动设备上部署和运行。
所述步骤4中使用数据集,对改进后的目标检测模型进行训练,并记录模型的性能指标,性能指标为准确率、召回率、精度。其中,准确率表示模型正确预测的正样本比例;召回率表示模型正确检测出的正样本比例;精度表示模型正确预测的所有样本比例;同时,对训练过程中的学习率和权重衰减进行调整,以提高模型的性能表现;在网络训练过程中,采用批量归一化技术,在每个批次中对输入数据进行标准化处理,加速模型的收敛速度和提高模型的泛化能力;
所述步骤6中,部署过程中需要考虑到设备的硬件性能和限制,采用合适的框架和优化技术来提高模型的推理速度和效率。同时,也需要考虑到模型的安全性和稳定性,确保模型的正确性和可靠性。
所述步骤7中,在检测过程中,可以采用多种优化策略,如图像预处理、非极大值抑制等,以提高检测的精度和效率。同时,也需要考虑到用户的使用体验和反馈,根据用户的需求和反馈进行模型优化和改进,提高模型的实际应用价值。
本发明提出了一种针对移动设备的目标检测方法,包括利用神经网络对图像或视频进行自动识别和定位,以及使用模型压缩和精简算法来降低模型的计算和存储开销。该方法可以显著提高移动设备上的目标检测性能和效率,并可广泛应用于交通监控、智能安防、自动驾驶等领域。
YOLOX是一种基于YOLO系列算法的目标检测方法,具有高效、精确、轻量级等优点,在计算机视觉领域得到广泛应用。随着移动设备的普及,将YOLOX算法应用于Android平台上,对实现移动端目标检测具有重要意义。
因此,本发明提出了一种基于Android平台的YOLOX目标检测轻量化方法,采用了将原有参数量较大的主干网络替换成参数计算量较小的轻量化网络,以提高移动设备上的目标检测性能和效率。
采取这些优化策略的目的是为了在保证检测精度的前提下,提高检测的效率,减少计算量和内存占用,以适应Android设备的计算资源限制。通过预处理和优化策略的组合使用,可以在Android设备上实现较为快速和准确的目标检测,满足实际应用需求。
以上所披露的仅为本发明一种实例而已,当然不能以此来限定本发明权利范围,本领域普通技术人员可以理解实现上述实例的流程,按照本发明权利要求作出等同变化。
Claims (8)
1.基于Android平台的yolox目标检测轻量化改进方法,其特征在于,包括以下步骤;
步骤1:收集和准备训练时所需带有标注的图像和对应的标签数据,并对数据进行预处理;
步骤2:基于yolox模型,在yolox主干层和数据增强层之间引入注意力机制,并以varifocalloss损失函数替换原有的BCE交叉熵损失函数;
步骤3:以MobileNet网络替换原有的CSPDarknet网络
步骤4:训练步骤3轻量化改进后的MobileNet网络:采用yolox算法和所述步骤1的数据集,通过反向传播算法不断优化模型参数,使模型能够准确识别和定位目标物体;
步骤5:转换模型格式:将训练好的MobileNet网络格式转换为Android设备可读取的格式;
步骤6:部署模型:将格式转换后部署到Android设备上,并利用Android平台的GPU加速技术加速模型的推理过程;
步骤7:实现目标检测:在Android设备上运行部署好的模型,对输入的图像进行目标检测,并返回检测结果。
2.根据权利要求1所述的基于Android平台的yolox目标检测轻量化改进方法,其特征在于,所述步骤1准备训练时所需的数据集,包括以下步骤:
(1)收集数据:从开放的数据集官网中收集PASCAL VOC数据集,包括JPEGImages、ImageSets和Annotations;其中JPEGImages包含训练的数据集,ImageSets包含每种类型的train.txt、trainval.txt和val.txt文件,Annotations包含每一类的xml文件;
(2)数据预处理:数据预处理是对收集到的原始图像进行预处理,使其适合于模型训练;
首先,将原始图像调整为指定的大小,选取的目标检测原始图像;
接下来,将彩色图像转换为灰度图像;
最后,将图像中的像素值缩放。
3.根据权利要求1所述的基于Android平台的yolox目标检测轻量化改进方法,其特征在于,所述步骤2包括以下步骤:
(1)使用CBAM注意力模型来实现对特征图的加权操作,在yolox主干层和数据增强层通道之间插入通道-空间注意力机制CBAM模块;
注意力模型主要包含两个部分:通道注意力和空间注意力,首先通过通道注意力机制,将将YOLOX主干层提取的特征图分别进行平均池化和最大池化操作,实现聚合特征图的空间信息,生成的平均池化特征和最大池化特征通过共享网络层,将共享网络应用到每个特征后,将平均池化特征和最大池化特征进行元素求和,并将合并的特征通过Sigmiod激活函数输出通道注意映射Mc,空间注意力沿着通道轴对特征图进行平均池化和最大池化操作,使特征图在通道维度上进行压缩,并将两个特征图在通道维度上进行拼接生成一个有效的特征图,随后经过卷积层,最后,通过Sigmiod函数操作得到最终的通道注意映射Ms;
(2)将原有的BCE交叉熵损失函数替换为VariFacalLoss损失函数;在替换BCE交叉熵损失函数为VariFocalLoss损失函数的过程中,需要修改模型的输出层;输出层包括类别预测分支、置信度预测分支和边界框预测分支,类别预测分支用来预测每个物体属于哪个类别,输出一个长度为C(类别数)的向量,置信度预测分支用来预测每个物体的置信度,即它是物体的概率,输出一个值,边界框预测分支用来预测每个物体的边界框位置,输出4个值;
VariFocalLoss损失函数会引入一个可学习的指数γ,并且将损失函数的计算公式中的权,重调整项进行了修改;
在YOLOX目标检测网络中,输出层包括分类分支和回归分支,在分类分支中,需要对每个目标进行分类,而在回归分支中,需要对每个目标进行位置信息的回归;为了适应VariFocalLoss损失函数的计算,需要对每个目标在分类分支中的预测结果进行处理;
将分类分支的输出先进行sigmoid函数的处理,然后再将其变成预测概率,根据这个概率来计算VariFocalLoss损失函数;
使用VariFocalLoss损失函数时,需要根据预测概率来计算损失值,需要对输出层进行相应的修改,在输出层中,需要对分类分支的输出先进行sigmoid函数的处理,然后再将其变成预测概率,将这个预测概率作为VariFocalLoss损失函数中的输入,计算相应的损失值;
在回归分支中,由于VariFocalLoss损失函数只对分类分支进行了修改,因此回归分支的计算方式不需要进行变化。
4.根据权利要求1所述的基于Android平台的yolox目标检测轻量化改进方法,其特征在于,所述步骤3包括以下步骤:
(1)根据目标检测任务的需求,确定MobileNet网络的输入和输出尺寸,并根据实际情况对MobileNet网络的深度和宽度进行调整;
所述深度调整,通过增加或减少网络的层数来调整MobileNet网络的深度,所述宽度调整,通过增加或减少网络中每层的通道数来调整MobileNet网络的宽度;
(2)根据网络结构,将MobileNet网络集成到目标检测模型中,并将原有的CSPDarknet网络对应的层替换成MobileNet网络对应的层;
将CSPDarknet网络中的卷积层或残差块的卷积操作拆分成深度卷积和逐点卷积两部分,然后分别用MobileNet网络中的深度可分离卷积层来替换这两个部分;由于MobileNet网络采用的是深度可分离卷积,其计算方式与普通卷积不同,需要进行相应的调整和兼容;
(3)对替换后的目标检测模型进行训练,并记录和评估模型在测试集上的性能指标。
5.根据权利要求1所述的基于Android平台的yolox目标检测轻量化改进方法,其特征在于,所述步骤(4)对网络模型进行训练,包括下列步骤:
(1)采用步骤1预处理后的数据集;
(2)将数据集按照比例划分为数据集和验证集;
(3)将经过预处理后的数据集输入到YOLOX目标检测网络中,网络的预测值pred与真实值gt输入到损失函数L中,通过以下公式求取损失值
Loss=L(pred,gt)
其中,L表示损失函数,pred表示网络输出的预测值,gt表示真实值。根据损失函数L对网络参数进行优化,使用梯度下降法更新神经网络参数。设当前神经网络参数为,则更新公式为:
(4)通过一轮参数更新后,需要使用验证集对模型进行检验,以验证模型的泛化能力。具体而言,将验证集输入到YOLOX网络中,计算预测结果与真实结果之间的损失度量,也就是验证集损失度。设验证集大小为N,第i个样本的预测框为,真实框为,则验证集损失度L计算如下:
其中,S是每个格子预测框的数量,C是目标类别数,和分别表示第i个样本的第j个格子中第c个类别的预测值和真实值,和分别表示第i个样本的第j个格子是否存在目标的预测值和真实值,和分别表示第i个样本的第j个格子中的置信度预测值和真实值,表示第i个样本的第j个格子中与真实框有最大交并比的预测框的索引集合和是两个权重系数,用于平衡存在目标的格子和不存在目标的格子的权重;
通过计算验证集损失度,评估当前模型的表现,如果损失度较高,则需要继续训练,直到达到预定的停止条件;
(5)每迭代两次,将数据集中的图片,输入到经过优化的YOLOX目标检测网络中进行训练,获得模型的精度;
(6)重复以上步骤直到模型已经收敛。
6.根据权利要求1所述的基于Android平台的yolox目标检测轻量化改进方法,其特征在于,所述步骤5包括以下步骤:
(1)导出训练好的模型:从所述步骤4中训练好的yolox模型中导出网络结构和参数;
(2)选择目标格式:根据Android设备和部署框架的要求,选择合适的目标格式;
(3)进行格式转换:利用相关工具对导出的ONNX模型转换成NCNN格式,并进行优化;
(4)验证转换结果:对转换后的模型进行验证,确保其与原模型的输出结果一致,并能够在Android设备上进行推理操作。
7.根据权利要求1所述的基于Android平台的yolox目标检测轻量化改进方法,其特征在于,所述步骤6包括以下步骤:
(1)确定Android设备的硬件环境:根据Android设备的CPU、GPU、内存等硬件环境,确定合适的模型大小、精度和部署方式;
(2)选择部署框架:根据Android设备的硬件环境和目标检测需求,选择合适的部署框架;
(3)转换模型格式:将训练好的模型格式转换为Android设备可读取的格式;
(4)部署模型到Android设备:将转换后的模型和部署框架一起打包成应用程序,部署到Android设备上;
(5)进行性能测试和优化:在Android设备上测试和优化部署好的模型,。
8.根据权利要求1所述的基于Android平台的yolox目标检测轻量化改进方法,其特征在于,所述步骤7包括以下步骤:
(1)加载转换后的模型:将部署好的模型加载到Android设备上,并准备好输入数据;
(2)图像预处理:对输入图像进行预处理;
(3)执行模型推理:将预处理后的图像输入模型,执行目标检测推理操作,得到检测结果;
(4)后处理:对检测结果进行后处理,以得到最终的目标检测结果;
(5)可视化结果:将目标检测结果可视化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310233273.XA CN116258941A (zh) | 2023-03-13 | 2023-03-13 | 基于Android平台的yolox目标检测轻量化改进方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310233273.XA CN116258941A (zh) | 2023-03-13 | 2023-03-13 | 基于Android平台的yolox目标检测轻量化改进方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116258941A true CN116258941A (zh) | 2023-06-13 |
Family
ID=86686082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310233273.XA Pending CN116258941A (zh) | 2023-03-13 | 2023-03-13 | 基于Android平台的yolox目标检测轻量化改进方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116258941A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116883862A (zh) * | 2023-07-19 | 2023-10-13 | 北京理工大学 | 一种光学遥感图像多尺度目标检测方法及装置 |
CN116883691A (zh) * | 2023-09-07 | 2023-10-13 | 广州英码信息科技有限公司 | 一种边缘设备的高帧率多路目标检测方法 |
CN117314840A (zh) * | 2023-09-12 | 2023-12-29 | 中国科学院空间应用工程与技术中心 | 地外天体表面小型撞击坑检测方法、系统、存储介质及设备 |
CN117392613A (zh) * | 2023-12-07 | 2024-01-12 | 武汉纺织大学 | 一种基于轻量化网络的电力作业安全监测方法 |
CN118205907A (zh) * | 2024-03-22 | 2024-06-18 | 浙江公链信息科技有限公司 | 一种机械臂供包方法和系统 |
-
2023
- 2023-03-13 CN CN202310233273.XA patent/CN116258941A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116883862A (zh) * | 2023-07-19 | 2023-10-13 | 北京理工大学 | 一种光学遥感图像多尺度目标检测方法及装置 |
CN116883862B (zh) * | 2023-07-19 | 2024-02-23 | 北京理工大学 | 一种光学遥感图像多尺度目标检测方法及装置 |
CN116883691A (zh) * | 2023-09-07 | 2023-10-13 | 广州英码信息科技有限公司 | 一种边缘设备的高帧率多路目标检测方法 |
CN116883691B (zh) * | 2023-09-07 | 2023-11-07 | 广州英码信息科技有限公司 | 一种边缘设备的高帧率多路目标检测方法 |
CN117314840A (zh) * | 2023-09-12 | 2023-12-29 | 中国科学院空间应用工程与技术中心 | 地外天体表面小型撞击坑检测方法、系统、存储介质及设备 |
CN117392613A (zh) * | 2023-12-07 | 2024-01-12 | 武汉纺织大学 | 一种基于轻量化网络的电力作业安全监测方法 |
CN117392613B (zh) * | 2023-12-07 | 2024-03-08 | 武汉纺织大学 | 一种基于轻量化网络的电力作业安全监测方法 |
CN118205907A (zh) * | 2024-03-22 | 2024-06-18 | 浙江公链信息科技有限公司 | 一种机械臂供包方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116258941A (zh) | 基于Android平台的yolox目标检测轻量化改进方法 | |
CN113221687B (zh) | 一种压板状态识别模型的训练方法及压板状态识别方法 | |
EP3767536A1 (en) | Latent code for unsupervised domain adaptation | |
US20240161474A1 (en) | Neural Network Inference Acceleration Method, Target Detection Method, Device, and Storage Medium | |
CN112528961B (zh) | 一种基于Jetson Nano的视频分析方法 | |
CN113128478B (zh) | 模型训练方法、行人分析方法、装置、设备及存储介质 | |
CN114332666A (zh) | 一种基于轻量化神经网络模型的图像目标检测方法及系统 | |
CN113420871B (zh) | 图像质量的评估方法、装置、存储介质及电子装置 | |
CN113177538A (zh) | 一种视频循环识别方法、装置、计算机设备及存储介质 | |
CN111369430A (zh) | 基于移动深度学习引擎的移动端人像智能背景替换方法 | |
CN116306813A (zh) | 一种基于yolox轻量化及网络优化的方法 | |
CN112132207A (zh) | 基于多分支特征映射目标检测神经网络构建方法 | |
Zhang et al. | Vulcan: Automatic Query Planning for Live {ML} Analytics | |
CN113741863A (zh) | 基于算法模型的应用程序生成方法、电子设备及存储介质 | |
CN114973173A (zh) | 驾驶场景数据的分类方法、装置、电子设备及存储介质 | |
CN111339952B (zh) | 基于人工智能的图像分类方法、装置及电子设备 | |
CN114170560A (zh) | 一种基于深度强化学习的多设备边缘视频分析系统 | |
CN118381921B (zh) | 一种机巡图像高质量压缩管理方法、系统、介质及设备 | |
CN117152542B (zh) | 一种基于轻量化网络的图像分类方法和系统 | |
CN118429329B (zh) | 基于rd-yolo网络的道路病害识别方法及装置 | |
CN115410116B (zh) | 一种多任务的视频异常检测方法、装置、设备及介质 | |
CN113011555B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN118433330B (zh) | 一种利用大模型降低边端监控误报率的方法 | |
CN117911964B (zh) | 一种车辆安全检测的方法 | |
CN114898152A (zh) | 嵌入式弹性自扩展通用学习框架 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |