恭喜中国人民解放军国防科技大学姜志杰获国家专利权
买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
龙图腾网恭喜中国人民解放军国防科技大学申请的专利基于模型搜索的两阶段图像分类方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN117636068B 。
龙图腾网通过国家知识产权局官网在2025-04-18发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202311808442.4,技术领域涉及:G06V10/764;该发明授权基于模型搜索的两阶段图像分类方法是由姜志杰;赵玲君;张元良;马迎伟;刘浩然;黄响兵;王冲;白林枭;李姗姗设计研发完成,并于2023-12-26向国家知识产权局提交的专利申请。
本基于模型搜索的两阶段图像分类方法在说明书摘要公布了:本发明公开了基于模型搜索的两阶段图像分类方法,目的是解决现有图像分类方法图像分类准确性不高且分类时间较长等问题。技术方案是:构建图像分类模型库M和含两个搜索模块的图像分类系统,对第一搜索模块进行训练,使用训练好的第一搜索模块根据用户输入的需求文本q在M中进行搜索,得到与q最匹配的20个模型,第二搜索模块为20个模型进行评分及排序得到最优图像分类模型;对最优图像分类模型进行训练,得到训练好的最优图像分类模型;采用训练好的最优图像分类模型对用户上传的无标签图片进行分类。本发明能根据用户选型需求快速准确地从模型库中搜索到合适的图像分类模型,提高图像分类精度和分类速度,降低用户的专业性要求。
本发明授权基于模型搜索的两阶段图像分类方法在权利要求书中公布了:1.一种基于模型搜索的两阶段图像分类方法,其特征在于包括以下步骤:第一步:构建图像分类模型库M,方法是:1.1从Paddleclas库中选择N个图像分类模型构成图像分类模型库M;1.2获取M中模型各种信息,包括模型的名称、模型的参数量、模型的浮点计算量、模型的源代码,方法是:1.2.1从Paddleclas库中获取M中各模型的模型名称、模型的可运行代码文件,模型的可运行代码文件中包括模型定义、训练和测试部分;1.2.2基于ImageNet-1k数据集,对M中的所有模型进行训练和测试,得到模型在ImageNet-1k数据集上的分类准确率;同时,记录每个模型的推理速度,即模型从输入图片到输出预测结果所需的时间;1.2.3通过thop库获取M中各模型的参数量和浮点计算量;参数量表示模型中可训练的权重数量,反映模型的复杂度和存储需求;浮点计算量表示模型进行一次前向传播所需的浮点运算次数,反映模型的计算开销和能耗;1.2.4从模型的可运行代码文件中读取模型的源代码,将模型的源代码命名为模型代码Code;对Code中的可运行代码进行排序;1.2.5将M中每个模型的模型名称、分类准确率、推理速度、参数量、浮点计算量和模型代码形成一条模型信息序列,令任意一个模型的模型信息序列m={Name,Accuracy,Latency,Param,Flops,Code},其中,Name是模型的名称,Accuracy是模型的分类准确率,Latency是模型的推理速度,Param是模型的参数量,Flops是模型的浮点计算量;第二步:构建图像分类系统;图像分类系统由模型搜索模块、图像分类模块、图像分类模型库构成;模型搜索模块由预处理模块、第一搜索模块与第二搜索模块组成,其中,第一搜索模块由第一前馈神经网络层、第一线性分类层组成,第二搜索模块由评分层,排序推荐层构成;图像分类模块由训练模块和分类模块组成;图像分类模型库M存储有模型及与模型一一对应的模型信息序列,包括模型名称、分类准确率、推理速度、参数量、浮点计算量和模型代码;预处理模块与第一搜索模块、图像分类模型库相连,接收用户的输入,采用图像分类模型库M中的模型信息序列分别进行拼接,将用户的输入处理为词级别序列;用户的输入包括用户输入的需求文本q或第一训练集Qa;若预处理模块接收到用户输入的需求文本q,将q与图像分类模型库M中所有的模型信息序列分别进行拼接,形成q的需求文本-模型信息序列的集合SetqM,SetqM={qm1,...qmn,...,qmN},qmn={q,mn},其中,1≤n≤N,N为图像分类模型库M中的模型信息序列数量,mn为M中第n个模型信息序列;利用sentencepiece分词法将SetqM中的N条需求文本-模型信息序列转化为词级别序列,得到SetqM的词级别序列集合G,将G发送给第一前馈神经网络层;G={Gqm1,...,Gqmn,...,GqmN},qmn的词级别序列Gqmn={[CLS],q1,q2,...,qi,...qI,[SEP],mc1,mc2,...,mcj,...,mcJ,[EOS]},其中qi为q中的第i个词,1≤i≤I,I为q中的词个数,mcj表示mn中的第j个词,1≤j≤J,J为mn中的词个数,[CLS]为表示序列开始的特殊词,[SEP]为分隔需求文本序列和模型信息序列的特殊词,[EOS]为表示序列结束的特殊词;第一前馈神经网络层与预处理模块、第一线性分类层相连;第一前馈神经网络层从预处理模块接收G,对Gqm1,...,Gqmn,...,GqmN进行线性映射,得到线性映射后表示fqm1,...,fqmn,...,fqmN,将fqm1,...,fqmn,...,fqmN发送给第一线性分类层;第一线性分类层与第一前馈神经网络层、第二搜索模块相连,对从第一前馈神经层接收的fqm1,...,fqmn,...,fqmN进行线性映射,得到fqm1,...,fqmn,...,fqmN的原始预测向量即第一logits向量,对第一logits向量进行Softmax操作,得到需求文本q与M中每个模型的模型信息序列匹配的概率,取概率最高的前20个模型作为第一搜索模块的输出,将20个模型发送给第二搜索模块;第二搜索模块的评分层与第一线性分类层和排序推荐层相连;评分层从第一线性分类层接收20个模型,并接收用户上传的第二训练集Pa、第二测试集Pt、类别表;评分层根据第二训练集Pa中的图片集合P为第一搜索模块输出的20个模型分别进行评分,得到20个模型的无序分数集合Setscore,Setscore中包含20个模型的分数,将Setscore、第二训练集Pa、第二测试集Pt、类别表发送给排序推荐层;排序推荐层与评分层和图像分类模块相连,对从评分层接收的Setscore中的分数按照从高到低的顺序进行排序,选择分数最高的图像分类模型作为最优图像分类模型,将最优图像分类模型、第二训练集Pa、第二测试集Pt、类别表发送给图像分类模块;最优图像分类模型由第二前馈神经网络层和第二线性分类层组成;图像分类模块中的训练模块与排序推荐层和分类模块相连,从排序推荐层接收最优图像分类模型和第二训练集Pa、第二测试集Pt、类别表;将Pa输入到最优图像分类模型的第二前馈神经网络层,利用Pa对最优图像分类模型进行训练;第二前馈神经网络层对Pa中的图片一一进行线性映射,得到线性映射后的Pa的表示ffPa,将ffPa发送到第二线性分类层;第二线性分类层对ffPa进行线性映射,得到ffPa的原始预测向量即第二logits向量,对第二logits向量进行Softmax操作后得到Pa中的图片对应类别表中每个类别的概率,取最高概率的类别作为该图片的类别;训练模块采用交叉损失熵函数计算损失loss,将loss在最优图像分类模型中进行反向传播来更新最优图像分类模型参数;直到loss不再下降时,停止训练;将训练完成的最优图像分类模型作为训练模块的输出,发送到分类模块;分类模块与训练模块相连,从训练模块接收训练完成的最优图像分类模型,并接收用户上传的无标签图片p;将p输入到训练完成的最优图像分类模型,训练完成的最优图像分类模型的第二前馈神经网络层对p进行线性映射,得到p的线性映射后表示ffp,将ffp发送到训练完成的最优图像分类模型的第二线性分类层,第二线性分类层对ffp进行线性映射,得到p的一个预测向量即第三logits向量,对第三logits向量进行Softmax操作,得到p对应类别表中每个类别的概率,取最高概率的类别作为p的类别;第三步,构建训练模型搜索模块和图像分类模块的数据集,方法如下:3.1准备训练模型搜索模块中的第一搜索模块的数据集,方法是:3.1.1用自然语言描述用户需求,用户需求为“在推理速度前v%的模型中,分类准确率最高的模型”,其中,v代表用户需求的推理速度阈值,取值范围为0<v≤100,根据v保留小数位数的不同,共有vt种取值可能,vt为正整数,即v是一个由vt种取值可能组成的集合,v={v1,v2,...,vvvt,...,vvt};其中,vvt为vt的一种取值可能,1≤vvt≤vt,vvt为正整数;vt的每一种取值可能,都与一条用户需求文本对应,令用户需求文本集合Q={Q1,Q2,...,Qvvt,...,Qvt},Qvvt为第vvt条用户需求文本;3.1.2令vvt=1;3.1.3从Q取第vvt条用户需求文本Qvvt,从M中找到符合Qvvt的模型,方法如下:3.1.3.1将M中每个模型按照模型信息序列中的Latency值从低到高进行排序,筛选出前vvvt%的模型,令为筛选模型集合MM;3.1.3.2将MM中的模型按照模型信息序列中的Accuracy值从高到低进行排序,取Accuracy值最高的模型作为符合第vvt条用户需求文本Qvvt的模型;3.1.4第vvt条用户需求文本Qvvt与符合Qvvt的模型的模型信息序列组成需求-模型对,将这个需求-模型对的标签标记为1;从MM中随机挑选不符合Qvvt的模型,与该模型的模型信息序列组成需求-模型对,将这个需求-模型对的标签标记为0;需求-模型对和其对应的实际标签组成一条样本,每条样本的形式={Qvvt,m,label},其中,Qvvt为第vvt条用户需求文本,m为模型信息序列,label为需求-模型对的标签;将样本放入数据集;3.1.5令vvt=vvt+1,若vvt≤vt,转3.1.3,否则转3.1.6;3.1.6构成一个包含2vt条样本的数据集;3.1.7扩充数据集,构成一个含有6vt个样本的数据集;3.1.8按照8比2的比例将数据集划分为训练集和测试集;训练集中所有样本的需求-模型对构成第一训练集Qa,训练集中的所有样本的标签构成实际标签集合Qa#;令Qa={Qa1,Qa2,···Qao,···,Qao},其中Qao表示Qa中的第o条用户需求文本-模型对,其中1≤o≤O,O为Qa中的样本总数,O=0.8×6vt;Qao={Qo,m},Qo为第o条用户需求文本,m为对应的模型信息序列;测试集中的所有样本的需求-模型对构成第一测试集Qt,测试集中的所有样本的标签构成第一测试集实际标签集合Qt#,Qa用于训练第一搜索模块,Qa#用于在训练第一搜索模块时计算训练损失,校正模型;Qt用于测试第一搜索模块,Qt#用于和测试输出的标签进行比对,衡量进行测试的第一搜索模块的性能;3.2构建训练图像分类模块中训练模块的数据集,该数据集来源于用户上传的有标签的图片集合,方法如下:3.2.1用户根据目标任务从互联网上搜索对应类别的图片,并进行标注;3.2.2对KK1张有标签的图片进行处理,删除重复、模糊的图片,得到KK张不重复的有标签的图片,将KK张有标签的图片通过旋转,裁剪,缩放,翻转,调整亮度和对比度,对KK张有标签的图片进行数据增强,得到数据增强后的KK张有标签的图片;KK是有标签的图片总数;KK≤KK1;3.2.3对增强后的KK张有标签的图片按照8比2的比例划分训练集和测试集,得到第二训练集Pa={Pa1,Pa2,...,Pakk,...,Pa0.8KK},其中,1≤kk≤0.8KK,0.8KK是Pa中有标签的图片总数;同时得到第二测试集Pt,Pt={Pt1,Pt2,...,Ptkkk,...,Pt0.2KK},其中,1≤kkk≤0.2KK,0.2KK是Pt中有标签的图片总数;其中,Pa中的实际标签构成第二训练集实际标签集合Pa#,Pa中的图片构成Pa中的图片集合P,Pt样本中的实际标签构成第二测试集实际标签集合Pt#;Pa用于训练图像分类模块中的训练模块中的最优图像分类模型,Pa#用于在训练最优图像分类模型时计算训练损失,校正最优图像分类模型;Pt用于测试最优图像分类模型,Pt#用于和测试输出的标签进行比对,衡量进行测试的最优图像分类模型的性能;第四步,采用Qa对模型搜索模块中的第一搜索模块进行有监督方式训练,得到不同的网络权重参数,方法如下:4.1初始化权重参数,将第一前馈神经网络层的参数集合WF中的元素初始化为[0,1]的随机数;将第一线性分类层的参数集合WY中的元素初始化为[0,1]的随机数;4.2设置网络训练超参数,包括批处理大小batch_size,网络模型学习率learningrate,序列最长长度,控制梯度累积参数gradient_accumulation_steps;4.3采用有监督的方式训练第一前馈神经网络层和第一线性分类层,每一轮训练得到每个批样本的预测标签序列集合Qa′,计算Qa′与每个批样本的实际标签序列集合Qa##的分布差距,得到损失值,最小化损失值并更新第一前馈神经网络层和第一线性分类层的权重参数,直到满足迭代次数要求,得到第一前馈神经网络层及第一线性分类层的权重参数,方法如下:4.3.1初始化训练迭代参数itretation=1;初始化迭代阈值E,E是[1,10]内的整数;4.3.2令变量bz=1;4.3.3令o=1,令预测标签集合Qa′为空;4.3.4预处理模块从Qa中读取第o个样本Qao,将Qao处理为词级别序列GQao,GQao={[CLS],Q1,...,Qii,...,QII,[SEP],mc1,...,mcjj,…mcJJ,[EOS]},其中,1≤ii≤II,1≤jj≤JJ,Qii为Qao中用户需求文本Qo中的第ii个词,II为Qo中词的总数,mcjj为Qao中模型信息序列mo的第jj个词,JJ为模型信息序列mo中词的数量;将GQao发送给第一前馈神经网络层;4.3.5第一前馈神经网络层从预处理模块接收GQao,利用线性映射方法对GQao进行线性映射,得到GQao线性映射后的表示fQao,即fQao=WF×GQao,将fQao发送给第一线性分类层;4.3.6第一线性分类层从第一前馈神经层接收fQao,将fQao线性映射为二维的第一logits向量,对第一logits向量进行softmax操作,得到Qao对应的MM中每个类别的概率,取最高概率的类别作为Qao的预测标签Qa″,将Qa″加入到预测标签集合Qa′中;4.3.7如果o≤O且o=bz×batch_size,转4.3.8;如果oO,说明Qa的O个样本都已经参与训练,一次迭代训练已经完成,转4.3.9;如果o≤O且obz×batch_size,令o=o+1,转4.3.4;4.3.8第一线性分类层采用交叉损失熵函数计算Qa′和Qa#之间的差距,得到损失值Loss,使用Adam优化算法对Loss最小化,通过反向传播以更新一次第一前馈神经网络层的权重参数WF和第一线性分类层的权重参数WY;令o=o+1,bz=bz+1,如果oO,说明Qa的O个样本都已经参与训练,一次迭代训练已经完成,转4.3.9,否则转4.3.4;4.3.9令itretation=itretation+1,如果itretation≤迭代阈值E,转4.3.2;否则说明训练满足迭代次数要求,训练结束,得到了第一搜索模块中第一前馈神经网络层的权重参数WF、第一线性分类层的权重参数WY,转第五步;第五步,将训练得到的权重参数赋值给第一搜索模块,即将训练得到的WF作为第一前馈神经网络层的网络权重参数,将训练得到的WY作为第一线性分类层权重参数,得到训练好的第一搜索模块;第六步,使用训练好的第一搜索模块根据用户输入的需求文本q在M中进行搜索,得到与q最匹配的20个模型,方法是:6.1预处理模块接收到用户输入的需求文本q,将q与M中模型信息序列m1,...mn,...,mN分别进行拼接,形成序列qm1,...qmn,...,qmN,将qm1,…qmn,...,qmN放到需求文本-模型信息序列集合Setqmn中,即Setqmn={qm1,...qmn,...,qmN},qmn={q,mn},其中,1≤n≤N,N为M中的模型信息序列数量;6.2令n=1,创建空列表list;6.3取Setqmn中的第n条需求文本-模型信息序列qmn,将qmn转化为词级别序列Gqmn,Gqmn={[CLS],q1,q2,...,qi,...qI,[SEP],mc1,mc2,...,mcj,...,mcJ,[EOS]},其中qi表示q中的第i个词,1≤i≤I,I为q中的词个数,mcj表示mn中的第j个词,1≤j≤J,J为mn中的词个数,将Gqmn发送到第一前馈神经网络层;6.4第一前馈神经网络层从预处理模块接收Gqmn,对Gqmn进行线性映射,得到线性映射后表示fqmn,即fqm=WF×Gqmn,将fqmn发送给第一线性分类层;6.5第一线性分类层从第一前馈神经层接收fqmn,将fqmn映射为二维度的第一logits向量,对第一logits向量进行Softmax操作,得到qmn对应每个类别的概率;其中,预测类别为1代表q与mn是对应的,预测类别为0代表q与mn不对应;6.6获取qmn预测类别为1的概率值pqmn,与mn组成概率信息二元组mn,pqmn,存进列表list中;6.7若nN,令n=n+1,转6.3;若n≥N,转6.8;6.8将list按照pqmn的值从高到低进行排序,取前20个二元组,得到m1,pqm1,…,mn,pqmn,…,m20,pqm20,获取m1mn,...,m20对应的图像分类模型,将这20个模型输出给第二搜索模块;第七步,第二搜索模块从第一搜索模块接收20个图像分类模型,并接收用户上传的第二训练集Pa、第二测试集Pt、类别表;为20个图像分类模型进行评分及排序,方法如下:7.1第二搜索模块的评分层从第一搜索模块接收20个模型,对20个图像分类模型依次进行评分,得到模型分数无序集合Setscore,将Setscore发送给排序推荐层;Setscore中包含20个二元组,第mcnt个二元组为mcnt,scorecnt,mcnt为第mcnt个图像分类模型的模型信息序列,scorecnt为第mcnt个图像分类模型在第二训练集Pa的图片集合P上的分数;1≤mcnt≤20;7.2排序推荐层从评分层接收Setscore,将Setscore按照每个模型信息序列对应的分数从高到低的顺序进行排序,将分数最高的模型信息序列对应的模型作为最优图像分类模型,和用户上传的第二训练集Pa、第二测试集Pt、类别表一同发送给图像分类模块;第八步,图像分类模块中的训练模块从排序推荐层接收最优图像分类模型和Pa、Pt、类别表,利用Pa对最优图像分类模型进行训练,方法如下:8.1初始化权重参数,将最优图像分类模型第二前馈神经网络层的参数集合WFF中的元素初始化为[0,1]的随机数;将最优图像分类模型的第二线性分类层的参数集合WYY中的元素初始化为[0,1]的随机数;8.2设置网络训练超参数,包括批处理大小batch_size,网络模型学习率learningrate;8.3采用有监督的方式迭代训练最优图像分类模型的第二前馈神经网络层和第二线性分类层,每一轮训练得到每个批样本的预测标签集合Pa′,计算Pa′与每个批样本的实际标签集合Pa##的分布差距,得到损失值,最小化损失值并更新WFF和WYY,直到满足迭代次数要求,得到第二前馈神经网络层的参数集合WFF及第二线性分类层的的参数集合WYY,方法如下:8.3.1初始化训练迭代参数itretation=1;初始化第二迭代阈值EE,EE是[1,200]内的整数;8.3.2令bz=1;8.3.3令kk=1,令预测标签集合Pa′为空;8.3.4最优图像分类模型的第二前馈神经网络层从Pa中读取第kk个样本Pakk,利用线性映射方法对Pakk进行线性映射,得到Pakk线性映射后的表示fPakk,即fPakk=WFF×Pakk,将fPakk发送给最优图像分类模型的第二线性分类层;8.3.5最优图像分类模型的第二线性分类层从第二前馈神经层接收fPakk,将fPakk线性映射为类别表中类别个数维度的第二logits向量,第二logits向量中包含第kk个样本Pakk未进行归一化的对应每个类别的概率;对第二logits向量进行softmax操作,得到Pak对应的类别表中每个类别的概率,取最高概率的类别作为Pakk的预测标签Pa′",将Pa"′加入到预测标签集合Pa′;8.3.6如果kk≤KK且kk=bz×batch_size,转8.3.7;如果kkKK,说明Pa的KK个样本都已经参与训练,一次迭代训练已经完成,转8.3.8;如果kk≤KK且kkbz×batch_size,令kk=kk+1,转8.3.4;8.3.7第二线性分类层采用交叉损失熵函数计算Pa′和Pa##之间的差距,得到损失值Loss,使用SGD优化算法对Loss最小化,通过反向传播以更新一次最优图像分类模型的权重参数;令kk=kk+1,bz=bz+1,如果kkKK,说明Pa的KK个样本都已经参与训练,一次迭代训练已经完成,转8.3.8,否则转8.3.4;8.3.8令itretation=itretation+1,如果itretation≤第二迭代阈值EE,转8.3.2;否则说明训练满足迭代次数要求,训练结束,得到了最优图像分类模型中第二前馈神经网络层、第二线性分类层的权重参数,即得到了最优的WFF和WYY,转第九步;第九步,训练模块将训练得到的WFF作为最优图像分类模型第二前馈神经网络层的网络权重参数,将训练得到的WYY作为最优图像分类模型的第二线性分类层权重参数,得到训练好的图像分类模型,将训练好的最优图像分类模型和Pa、Pt、类别表发送给分类模块;第十步,分类模块从训练模块接收训练好的最优图像分类模型和Pa、Pt、类别表,并接收用户上传的无标签图片p,对p进行图像分类,得到p的图片类别,方法如下:10.1分类模块从训练模块接收训练好的最优图像分类模型;10.2训练好的最优图像分类模型的第二前馈神经网络层接收用户上传的无标签图片p;对p进行线性映射,得到p线性映射后表示fp,即fp=WFF×p,将fp发送到训练好的最优图像分类模型的第二线性分类层;10.3训练好的最优图像分类模型的第二线性分类层从第二前馈神经网络层接收fp,对照用户上传的类别表,获取类别个数,将fp线性映射为类别表中类别个数维度的第三logits向量,第三logits向量中为用户上传的无标签图片p未进行归一化的对应每个类别的概率;对第三logits向量进行softmax操作,得到p对应的类别表中每个类别的概率,取最高概率的类别作为p的图片类别,完成对p的分类。
如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人中国人民解放军国防科技大学,其通讯地址为:410073 湖南省长沙市开福区德雅路109号;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。