掌桥专利:专业的专利平台
掌桥专利
首页

图像识别方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 09:46:20


图像识别方法、装置、计算机设备和存储介质

技术领域

本申请涉及神经网络技术领域,特别是涉及一种图像识别方法、装置、计算机设备和存储介质。

背景技术

随着人工智能浪潮的到来,全社会范围内产生了大量的图像识别和分类的需求,例如人脸识别,车辆识别以及超市购物的识别需求。因为图像识别的算法极其复杂,对计算机产生了极高的要求,导致计算机成本、体积,功耗等成本居高不下。

传统的图像识别算法,需要对图像进行多步骤的预处理,且采用较复杂的识别算法,因此对设备性能要求很高,成本较高,识别速度慢,识别效率低。

发明内容

基于此,有必要针对传统的图像识别算法,需要对图像进行多步骤的预处理,且采用较复杂的识别算法,因此对设备性能要求很高,成本较高,识别速度慢,识别效率低的技术问题,提供一种图像识别方法、装置、计算机设备和存储介质。

一种图像识别方法,所述方法包括:

接收待识别图像;

基于Jetson Nano芯片,采用cuda编程语言对所述待识别图像进行并行预处理,所述预处理包括格式转换、缩放以及归一化;

将预处理后的所述待识别图像输入经训练的神经网络模型,得到图像识别结果。

在其中一个实施例中,所述接收待识别图像包括:

基于http协议接收所述待识别图像。

在其中一个实施例中,所述采用cuda编程语言对所述待识别图像进行并行预处理之前还包括:

基于1/2解码技术对所述待识别图像进行解码,得到yuv待识别图像。

在其中一个实施例中,所述采用cuda编程语言对所述待识别图像进行并行预处理包括:

将所述待识别图像进行分解,得到多个待处理像素数据;

基于所述cuda编程语言对多个所述待处理像素数据进行并行预处理,得到多个标准像素数据;

将多个所述标准像素数据进行组合,得到预处理后的所述待识别图像。

在其中一个实施例中,所述对所述待识别图像进行并行预处理包括:

采用BT.601标准将所述yuv待识别图像转换为BGR待识别图像;

采用双线性插值图像缩放算法将所述BGR待识别图像缩放到预设尺寸;

对缩放后的所述BGR待识别图像进行归一化处理,得到BGR浮点归一化待识别图像。

在其中一个实施例中,所述将预处理后的所述待识别图像输入经训练的神经网络模型,得到图像识别结果之前还包括:

获取训练图像以及对应的训练识别结果;

根据所述训练图像以及对应的训练识别结果建立训练集;

根据所述训练集训练初始神经网络模型,得到经训练的神经网络模型。

在其中一个实施例中,所述将预处理后的所述待识别图像输入经训练的神经网络模型,得到图像识别结果之后还包括:

通过json序列化技术,输出所述图像识别结果。

一种图像识别装置,所述装置包括:

接收模块,用于接收待识别图像;

预处理模块,用于基于Jetson Nano芯片,采用cuda编程语言对所述待识别图像进行并行预处理,所述预处理包括格式转换、缩放以及归一化;

识别模块,用于将预处理后的所述待识别图像输入经训练的神经网络模型,得到图像识别结果。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

接收待识别图像;

基于Jetson Nano芯片,采用cuda编程语言对所述待识别图像进行并行预处理,所述预处理包括格式转换、缩放以及归一化;

将预处理后的所述待识别图像输入经训练的神经网络模型,得到图像识别结果。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

接收待识别图像;

基于Jetson Nano芯片,采用cuda编程语言对所述待识别图像进行并行预处理,所述预处理包括格式转换、缩放以及归一化;

将预处理后的所述待识别图像输入经训练的神经网络模型,得到图像识别结果。

上述图像识别方法、装置、计算机设备和存储介质,通过接收待识别图像;基于Jetson Nano芯片,采用cuda编程语言对所述待识别图像进行并行预处理,所述预处理包括格式转换、缩放以及归一化;将预处理后的所述待识别图像输入经训练的神经网络模型,得到图像识别结果的方式,利用cuda编程语言,对待识别图像进行并行预处理,将原来需要多个读写步骤才能完成的预处理步骤在一个读写过程中完成,减小了对设备的负载,降低了对设备性能的要求,且采用神经网络对图像进行识别,大大简化了识别算法,提高了识别速度与识别效率。

附图说明

图1为本发明一实施例的图像识别方法的流程示意图;

图2为本发明一实施例的图像识别装置的结构框图;

图3为本发明一实施例的计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

请参阅图1,图1为本发明一实施例的图像识别方法的流程示意图。

在本实施例中,图像识别方法包括:

S101,接收待识别图像。

可以理解的,通过通信协议接收外部输入的待识别图像。

S102,基于Jetson Nano芯片,采用cuda编程语言对待识别图像进行并行预处理,预处理包括格式转换、缩放以及归一化。

可以理解的,通过Jetson Nano芯片以及cuda编程语言,可以使对预处理图像的格式转换、缩放以及归一化进行并行处理,使原本需要进行三次读写才能完成的预处理在一次读写过程中就完成,大大提高了预处理效率。

示例性地,对待识别图像进行预处理是为了使待识别图像的格式大小等属性满足神经网络模型的输入要求。

S103,将预处理后的待识别图像输入经训练的神经网络模型,得到图像识别结果。

可以理解的,采用经训练的神经网络模型对预处理后的待识别图像进行识别,以克服传统识别算法太过复杂,识别速度慢,精度不高的问题。

人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

生物神经网络主要是指人脑的神经网络,它是人工神经网络的技术原型。人脑是人类思维的物质基础,思维的功能定位在大脑皮层,后者含有大约10^11个神经元,每个神经元又通过神经突触与大约103个其它神经元相连,形成一个高度复杂高度灵活的动态网络。作为一门学科,生物神经网络主要研究人脑神经网络的结构、功能及其工作机制,意在探索人脑思维和智能活动的规律。

人工神经网络是生物神经网络在某种简化意义下的技术复现,作为一门学科,它的主要任务是根据生物神经网络的原理和实际应用的需要建造实用的人工神经网络模型,设计相应的学习算法,模拟人脑的某种智能活动,然后在技术上实现出来用以解决实际问题。因此,生物神经网络主要研究智能的机理;人工神经网络主要研究智能机理的实现,两者相辅相成。

不论何种类型的人工神经网络,它们共同的特点是,大规模并行处理,分布式存储,弹性拓扑,高度冗余和非线性运算。因而具有很高的运算速度,很强的联想能力,很强的适应性,很强的容错能力和自组织能力。这些特点和能力构成了人工神经网络模拟智能活动的技术基础,并在广阔的领域获得了重要的应用。例如,在通信领域,人工神经网络可以用于数据压缩、图像处理、矢量编码、差错控制(纠错和检错编码)、自适应信号处理、自适应均衡、信号检测、模式识别、ATM流量控制、路由选择、通信网优化和智能网管理等等。

人工神经网络的研究已与模糊逻辑的研究相结合,并在此基础上与人工智能的研究相补充,成为新一代智能系统的主要方向。这是因为人工神经网络主要模拟人类右脑的智能行为而人工智能主要模拟人类左脑的智能机理,人工神经网络与人工智能有机结合就能更好地模拟人类的各种智能活动。新一代智能系统将能更有力地帮助人类扩展他的智力与思维的功能,成为人类认识和改造世界的聪明的工具。因此,它将继续成为当代科学研究重要的前沿。

上述图像识别方法,通过接收待识别图像;基于Jetson Nano芯片,采用cuda编程语言对待识别图像进行并行预处理,预处理包括格式转换、缩放以及归一化;将预处理后的待识别图像输入经训练的神经网络模型,得到图像识别结果的方式,利用cuda编程语言,对待识别图像进行并行预处理,将原来需要多个读写步骤才能完成的预处理步骤在一个读写过程中完成,减小了对设备的负载,降低了对设备性能的要求,且采用神经网络对图像进行识别,大大简化了识别算法,提高了识别速度与识别效率。

示例性地,图像识别方法应用在Jetson Nano芯片上,通过Jetson Nano芯片来执行。

具体地,Jetson Nano芯片采用Maxwell核心,具备128个CUDA Cores,可用于神经网络加速、图像处理、并行计算等领域。

在另一个实施例中,接收待识别图像包括:基于http协议接收待识别图像。示例性地,图像接口为http://部署IP:8080/matching。部署IP和端口可以通过具体的网络环境决定。在本实施例中,待识别图像为JPEG编码图像。在其它实施例中,可以采用根据实际情况采用其他格式的图像。可以理解的,http协议成熟,应用广泛,可以使用成熟的以太网体系进行数据传输和交互。在其它实施例中,也可以用其他类型的通信协议接收待识别图像,可以根据实际应用场景进行确定。

在另一个实施例中,采用cuda编程语言对待识别图像进行并行预处理之前还包括:基于1/2解码技术对待识别图像进行解码,得到yuv待识别图像。示例性地,当服务端接收到图像二进制数据时,通过读取头文件判断图像尺寸大小。根据协议,该图像大小一般为640x512像素,如果图像尺寸为偶数时,使用1/2解码技术,只读取图像像素的1/4,即宽高各是原尺寸的1/2,像素数是原图像的1/4,就是320x256像素。可以理解的,市面上绝大多数摄像头的成像都为偶数分辨率,奇数分辨率多产生于人工手动裁剪之后的图像。具体地,使用该项解码技术时,解码速度可以提高100%。

YUV,是一种颜色编码方法,常使用在各个视频处理组件中。YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。YUV是编译true-color颜色空间(color space)的种类,Y’UV,YUV,YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

在另一个实施例中,对待识别图像进行并行预处理包括:采用BT.601标准将yuv待识别图像转换为BGR待识别图像;采用双线性插值图像缩放算法将BGR待识别图像缩放到预设尺寸;对缩放后的BGR待识别图像进行归一化处理,得到BGR浮点归一化待识别图像。示例性的,使用Jetson Nano自带的nvidia芯片进行并行图像预处理,Jetson Nano自带的CPU只有4核,同时只能运行4个线程,自带的Nvidia芯片具备128核微型处理器,通过特定的并行编程,可以同时运行128个线程,极大的提升图像处理速度。具体地,通过cuda编程语言读取解码后的图像,使用双线性插值图像缩放算法和bt.601标准,将解码之后的yuv图像,转换为神经网络需要的BGR浮点归一化图像,按照NCHW顺序排序,并将尺寸缩放到神经网络特定的大小。转换公式如下:

R′

G′

B′

可以理解的,传统的预处理过程为从内存中读取yuv待识别图像,对yuv待识别图像进行格式转换,得到BGR待识别图像,将BGR待识别图像写入内存,从内存中读取BGR待识别图像,对BGR待识别图像进行缩放,将缩放后的BGR待识别图像写入内存,从内存中读取缩放后的BGR待识别图像,对BGR待识别图像进行归一化处理,得到BGR浮点归一化待识别图像。这一过程中需要3次读写内存数据,因此处理速度较慢,而本发明实施例的图像识别方法,则是从内存中读取yuv待识别图像,对yuv待识别图像进行格式转换、缩放、归一化处理得到BGR浮点归一化待识别图像,将BGR浮点归一化待识别图像写入内存,只需一个读写过程即可完成。

在另一个实施例中,采用cuda编程语言对待识别图像进行并行预处理包括将待识别图像进行分解,得到多个待处理像素数据;基于cuda编程语言对多个待处理像素数据进行并行预处理,得到多个标准像素数据;将多个标准像素数据进行组合,得到预处理后的待识别图像。示例性的,CUDA编程体系的储存结构,分为全局内存,共享内存和寄存器,分多步进行的处理流程,从数学上表达就是y=f(x),z=g(y),x是在全局内存的数据,读取速度慢,远远慢于GPU处理的速度,传统做法执行y=f(x)的时候,从全局内存中把x从读取到GPU中进行计算,得到y时,把y储存回全局内存,执行z=g(y)时也是一样的,而本发明实施例的图像识别方法则是直接执行z=g(f(x)),没有中间结果y的储存和读取,将中间临时结果存储在寄存器和共享内存中。然而,寄存器和共享内存空间较小,不可能直接对中间结果进行存储,因此还需要进行合理分配,比如指定加载多少数据到共享内存,加载多少数据到寄存器。具体地,假如待处理图像的尺寸是640×512像素,那么每次加载640×3=1920字节的数据进入共享内存,然后从共享内存中直接每次读取4组,每组3个字节的数据,即12个字节到处理器,每组的每个数据,按照顺序和位置进行双线性插值,得到1个组3个字节的插值后的数据,将这3个字节的数据,进行yuv到BGR的转换,同时把3个单字节的定点数,变成了3个4字节的浮点数,同时做归一化处理,即可实现预处理。像素数据预处理完成后,再进行组合,即可得到预处理后的待识别图像。其中,像素数据的预处理过程是128个线程同时进行的,128个线程同时进行,是通过CUDA调度进行的,因此大大提升了预处理速度,将图像预处理速度提升了100倍。

示例性地,JPEG格式的图像解码之后一般为YCbCr420图像格式,经过加速解码之后为YCbCr444图像格式。BT.601标准定义了这种图像格式转换为RGB/BGR格式的具体数学公式。其中,RGB和BGR都是图像标准的一种,其区别是数据储存的时候颜色顺序的不同。

在另一个实施例中,将预处理后的待识别图像输入经训练的神经网络模型,得到图像识别结果之前还包括:获取训练图像以及对应的训练识别结果;根据训练图像以及对应的训练识别结果建立训练集;根据训练集训练初始神经网络模型,得到经训练的神经网络模型。可以理解的,训练图像为大量已经过识别的图像,对应的训练识别结果为准确识别结果。可以理解的,神经网络经基于训练图像以及对应的训练识别结果的训练集训练之后,只需输入对应格式的待识别图像,即可得到该图像的识别结果。

在另一个实施例中,获取训练图像包括:对训练图像进行图像增强处理,图像增强处理包括对比度调整、亮度调整、随机噪声以及局部裁剪中的至少一种。可以理解的,模型训练时,使用了对比度调整、亮度调整、随机噪声、局部裁剪等图像增强技术,提升了训练图像的质量,提高了模型的泛化性,使模型在实际的应用中保持良好效果。

在另一个实施例中,神经网络模型的框架优选的为PyTorch框架。根据PyTorch框架构建初始神经网络模型,再获取大量的历史数据,对初始神经网络模型进行训练,最终得到训练后的神经网络模型。具体地,使用mobile convolution作为基础的计算单元,结合compound scale技术,通过PyTorch定义了神经网络结构。

在另一个实施例中,将预处理后的待识别图像输入经训练的神经网络模型还包括根据应用场景,将输入分辨率从300x300调整到320x256。可以理解的,这个调整提升了图像的感受域,同时因为分辨率被64整除,可以很好的被芯片加速。

示例性地,可以通过使用TensorRT和fp16半精度量化技术,加速神经网络的读取速度和计算速度,使整体性能提升达到100%。另外,使用算子融合技术,将多个卷积和其他数学计算整合,可以减少数据读取,提升整体模型速度。

在另一个实施例中,得到图像识别结果包括通过TopK算法,选取最相似的5个分类结果。具体地,神经网络模型的输出结果是一个长度为N的数组,N代表着模型可以进行N类物体的识别。数组中每个位置代表了一类物体,其中的每个值代表着输入图像数据和该类的近似度,数值分数越高,输入数据是该分类的可能性就越大。最终的输出结果,是数组中数值最高的5个种类的索引编号以及具体的值。示例性地,在Jetson Nano上,该模型的推理时间小于85毫秒,Top1准确度大于92%,Top5大于99.5%。

在另一个实施例中,将预处理后的待识别图像输入经训练的神经网络模型,得到图像识别结果之后还包括:通过json序列化技术,输出图像识别结果。具体地,通过cgo接口将识别结果返回给iris web框架,再通过json序列化技术,输出识别结果。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

上述图像识别方法,通过接收待识别图像;基于Jetson Nano芯片,采用cuda编程语言对待识别图像进行并行预处理,预处理包括格式转换、缩放以及归一化;将预处理后的待识别图像输入经训练的神经网络模型,得到图像识别结果的方式,利用cuda编程语言,对待识别图像进行并行预处理,将原来需要多个读写步骤才能完成的预处理步骤在一个读写过程中完成,减小了对设备的负载,降低了对设备性能的要求,且采用神经网络对图像进行识别,大大简化了识别算法,提高了识别速度与识别效率。

应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图2所示,提供了一种图像识别装置,包括:接收模块10、预处理模块20和识别模块30,其中:

接收模块10,用于接收待识别图像。

接收模块10,还用于基于http协议接收待识别图像。

预处理模块20,用于基于Jetson Nano芯片,采用cuda编程语言对待识别图像进行并行预处理,预处理包括格式转换、缩放以及归一化。

预处理模块20,还用于:

将待识别图像进行分解,得到多个待处理像素数据;

基于cuda编程语言对多个待处理像素数据进行并行预处理,得到多个标准像素数据;

将多个标准像素数据进行组合,得到预处理后的待识别图像。

预处理模块20,还用于:

采用BT.601标准将yuv待识别图像转换为BGR待识别图像;

采用双线性插值图像缩放算法将BGR待识别图像缩放到预设尺寸;

对缩放后的BGR待识别图像进行归一化处理,得到BGR浮点归一化待识别图像。

识别模块30,用于将预处理后的待识别图像输入经训练的神经网络模型,得到图像识别结果。

图像识别装置还包括:解码模块。

解码模块,用于基于1/2解码技术对待识别图像进行解码,得到yuv待识别图像。

图像识别装置还包括:训练模块。

训练模块,用于:

获取训练图像以及对应的训练识别结果;

根据训练图像以及对应的训练识别结果建立训练集;

根据训练集训练初始神经网络模型,得到经训练的神经网络模型。

关于图像识别装置的具体限定可以参见上文中对于图像识别方法的限定,在此不再赘述。上述图像识别装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图像识别方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

该计算机设备可以基于获取到的计算机程序指令,执行本申请实施例中的图像识别方法,从而实现结合图1描述的图像识别方法。

本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

另外,结合上述实施例中的计算机程序指令方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种计算机程序指令方法。

上述图像识别方法、装置、计算机设备和存储介质,通过接收待识别图像;基于Jetson Nano芯片,采用cuda编程语言对待识别图像进行并行预处理,预处理包括格式转换、缩放以及归一化;将预处理后的待识别图像输入经训练的神经网络模型,得到图像识别结果的方式,利用cuda编程语言,对待识别图像进行并行预处理,将原来需要多个读写步骤才能完成的预处理步骤在一个读写过程中完成,减小了对设备的负载,降低了对设备性能的要求,且采用神经网络对图像进行识别,大大简化了识别算法,提高了识别速度与识别效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。不同实施例中的技术特征体现在同一附图中时,可视为该附图也同时披露了所涉及的各个实施例的组合例。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 图像识别方法及装置、图像获取方法及设备、计算机设备及非易失性计算机可读存储介质
  • 图像识别方法、装置、计算机设备及计算机可读存储介质
技术分类

06120112297358