实例分割方法、装置、电子设备及存储介质与流程

文档序号:29401114发布日期:2022-03-26 00:24阅读:95来源:国知局
实例分割方法、装置、电子设备及存储介质与流程

1.本技术涉及计算机视觉技术领域,具体涉及一种实例分割方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.计算机视觉是用各种成像系统代替视觉器官作为输入敏感手段,由计算机来代替大脑完成处理和解释。
3.其中,实例分割是计算机视觉中的常用处理任务。实例分割,是对图像中每个物体进行区分和标注。实例分割对于行为识别、公共安全、视频监控等领域具有重大的指导意义。
4.通常会采用经过深度学习的网络模型来实现实例分割。但是,在现有技术中,一些精度较高的实例分割模型(例如,yolact++模型)推理速度较慢,导致对图像进行实例分割的实时性较低。


技术实现要素:

5.本技术提供一种实例分割方法、装置、电子设备及计算机可读存储介质,旨在解决由于精度较高的实例分割模型推理速度慢,而导致对图像进行实例分割的实时性较低的问题。
6.第一方面,本技术提供一种实例分割方法,所述方法包括:
7.获取训练好的实例分割模型中的第一子网络、所述训练好的实例分割模型中的第二子网络、以及包含待分割物体的目标图像;
8.分别对所述第一子网络、所述第二子网络进行转换处理,得到所述第一子网络对应的第一加速执行模型、以及所述第二子网络对应的第二加速执行模型;
9.调用所述第一加速执行模型对所述目标图像进行特征提取处理,得到所述目标图像的第一特征数据;
10.根据所述第一特征数据进行预测处理,得到所述目标图像的第二特征数据;
11.调用所述第二加速执行模型对所述第二特征数据进行预测处理,得到所述目标图像的实例分割结果。
12.第二方面,本技术提供一种实例分割装置,所述实例分割装置包括:
13.获取单元,用于获取训练好的实例分割模型中的第一子网络、所述训练好的实例分割模型中的第二子网络、以及包含待分割物体的目标图像;
14.转换单元,用于分别对所述第一子网络、所述第二子网络进行转换处理,得到所述第一子网络对应的第一加速执行模型、以及所述第二子网络对应的第二加速执行模型;
15.分割处理单元,用于调用所述第一加速执行模型对所述目标图像进行特征提取处理,得到所述目标图像的第一特征数据;
16.所述分割处理单元,还用于根据所述第一特征数据进行预测处理,得到所述目标
图像的第二特征数据;
17.所述分割处理单元,还用于调用所述第二加速执行模型对所述第二特征数据进行预测处理,得到所述目标图像的实例分割结果。
18.在本技术一种可能的实现方式中,所述转换单元具体还用于:
19.分别对所述第一子网络、所述第二子网络进行转换处理,得到所述第一子网络对应的第一onnx模型、以及所述第二子网络对应的第二onnx模型;
20.根据预设的推理优化器,对所述第一onnx模型进行转换处理得到所述第一子网络对应的第一加速执行模型,并对所述第二onnx模型进行转换处理得到所述第二子网络对应的第二加速执行模型。
21.在本技术一种可能的实现方式中,所述转换单元具体还用于:
22.获取所述第一子网络的第一模型参数、所述第二子网络的第二模型参数;
23.将所述第一模型参数加载至所述推理优化器的第一基准模型,得到所述第一子网络对应的第一onnx模型;将所述第二模型参数加载至所述推理优化器的第二基准模型,得到所述第二子网络对应的第二onnx模型。
24.在本技术一种可能的实现方式中,所述第二onnx模型、以及所述第二加速执行模型均已设置为动态输入输出。
25.在本技术一种可能的实现方式中,所述分割处理单元具体还用于:
26.初始化所述第一加速执行模型;
27.将所述目标图像输入至所述第一加速执行模型,以调用所述第一加速执行模型对所述目标图像进行特征提取处理,得到所述目标图像的第一特征数据。
28.在本技术一种可能的实现方式中,所述分割处理单元具体还用于:
29.根据所述第一特征数据进行实例分割预测处理,得到所述目标图像的初步分割信息;
30.将所述初步分割信息作为所述目标图像的第二特征数据。
31.在本技术一种可能的实现方式中,所述分割处理单元具体还用于:
32.初始化所述第二加速执行模型;
33.将所述初步分割信息输入至所述第二加速执行模型,以调用所述第二加速执行模型对所述初步分割信息进行置信度预测处理,得到所述初步分割信息的第一置信度;
34.根据所述第一置信度确定所述目标图像的实例分割结果。
35.在本技术一种可能的实现方式中,所述实例分割装置还包括训练单元,所述训练单元具体用于:
36.获取多个训练图像,其中,所述训练图像已标注分割轮廓信息;
37.调用预设实例分割网络中的第一子网络,对所述训练图像进行特征提取处理,得到所述训练图像的图像特征信息;
38.根据所述图像特征信息进行实例分割预测处理,得到所述训练图像的第一分割预测结果、以及所述第一分割预测结果的第二置信度;
39.调用预设实例分割网络中的第二子网络,对所述第一分割预测结果进行置信度预测处理,得到所述初步分割信息的第三置信度;
40.根据所述第三置信度确定所述训练图像的第二分割预测结果;
41.根据所述第二分割预测结果和所述分割轮廓信息,对所述预设实例分割网络进行训练,得到训练好的实例分割模型。
42.第三方面,本技术还提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行本技术提供的任一种实例分割方法中的步骤。
43.第四方面,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行所述的实例分割方法中的步骤。
44.本技术通过根据实例分割模型的网络结构,将实例分割模型拆分为多个子网络(即第一子网络、第二子网络),再分别对每个子网络进行转换为加速执行模型(即第一加速执行模型、第二加速执行模型),从而使得实例分割模型的子网络可以加载至推理优化器(如tensorrt)上。并通过调用第一加速执行模型对目标图像进行特征提取处理,得到目标图像的第一特征数据、调用第二加速执行模型对第二特征数据进行预测处理得到目标图像的实例分割结果,使得实例分割模型的子网络的数据处理过程可以提速,从而实现了实例分割模型的提速,进而提高了实例分割模型的实时性。避免了高精度的实例分割模型无法直接加载至推理优化器上的问题,从而在保证分割精度的基础上,使得实例分割模型可以在实时性上得到提升。
附图说明
45.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
46.图1是本技术实施例提供的实例分割方法的一种流程示意图;
47.图2是本技术实施例中提供的目标图像的一种场景示意图;
48.图3是本技术实施例中提供的步骤s20细化的一个实施例示意图;
49.图4是本技术实施例中提供的步骤s21细化的一个实施例示意图;
50.图5是本技术实施例中提供的实例分割模型加载至推理优化器tensorrt实现实例分割的一个流程示意图;
51.图6是本技术实施例中提供的实例分割装置的一个实施例结构示意图;
52.图7是本技术实施例中提供的电子设备的一个实施例结构示意图。
具体实施方式
53.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
54.在本技术实施例的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术实
施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
55.为了使本领域任何技术人员能够实现和使用本技术,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本技术。在其它实例中,不会对公知的过程进行详细阐述,以避免不必要的细节使本技术实施例的描述变得晦涩。因此,本技术并非旨在限于所示的实施例,而是与符合本技术实施例所公开的原理和特征的最广范围相一致。
56.本技术实施例提供一种实例分割方法、装置、电子设备和计算机可读存储介质。其中,该实例分割装置可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备。
57.首先,在介绍本技术实施例之前,先介绍下本技术实施例关于应用背景的相关内容。
58.随着人工智能技术的发展,深度学习模型在实际的场景中有着越来越多的应用,但是对于一些实时性要求比较高的场景,目前深度学习模型的推理速度有限,许多达到精度要求的模型无法满足推理速度的要求。
59.例如,yolact++模型是针对yolact模型进行改进的实例分割算法,通过增加可变卷积、修改默认框的设置、增加重评分网络来提升算法对于目标物体的检测和分割能力。yolact++模型在检测和分割方面都有着较好的性能,但若是将yolact++模型直接进行部署到机器上,会存在推理速度慢的问题。
60.其中,yolact++模型包括了骨干网络和重评分网络,骨干网络与重评分网络之间并不是无缝衔接的,也就是说骨干网络的输出结果并不是直接作为重评分网络的输入。而是在对骨干网络的输出结果进行解码(decode)、nms(non-maximum suppression,非极大值抑制)等后处理,再将后处理结果作为重评分网络的输入。
61.tensorrt是一个高性能的深度学习推理(inference)优化器,通过将训练好的算法模型转换到tensorrt,可以大幅提升模型的推理速度,使得模型能够适用于对实时性要求较高的场合。
62.但是,由于yolact++模型的骨干网络与重评分网络之间并不是无缝衔接的,骨干网络输出结果的解码、nms等后处理在tensorrt中没有对应的插件实现,因此无法实现将yolact++模型转换到tensorrt,从而导致yolact++模型无法实现提速。
63.基于现有的相关技术存在的上述缺陷,本技术实施例提供了实例分割方法,可以将子网络之间为非无缝衔接的实例分割模型(即两个子网络之间存在后处理过程),加载至深度学习推理优化器中,实现实例分割模型的推理加速,至少在一定程度上克服现有的相关技术所存在的缺陷。
64.本技术实施例实例分割方法的执行主体可以为本技术实施例提供的实例分割装置,或者集成了该实例分割装置的服务器设备、物理主机或者用户设备(user equipment,ue)等不同类型的电子设备,其中,实例分割装置可以采用硬件或者软件的方式实现,ue具体可以为智能手机、平板电脑、笔记本电脑、掌上电脑、台式电脑或者个人数字助理(personal digital assistant,pda)等终端设备。
65.该电子设备可以采用单独运行的工作方式,或者也可以采用设备集群的工作方式,通过应用本技术实施例提供的实例分割方法,可以避免高精度的实例分割模型无法直
接加载至推理优化器上的问题,从而在保证分割精度的基础上,使得实例分割模型可以在实时性上得到提升。
66.下面,开始介绍本技术实施例提供的实例分割方法,本技术实施例中以电子设备作为执行主体,为了简化与便于描述,后续方法实施例中将省略该执行主体。
67.参照图1,图1是本技术实施例提供的实例分割方法的一种流程示意图。需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。该实例分割方法包括步骤s10~s50,其中:
68.s10、获取训练好的实例分割模型中的第一子网络、所述训练好的实例分割模型中的第二子网络、以及包含待分割物体的目标图像。
69.为了更好地了解本技术实施例,下面先介绍一下“包含待分割物体的目标图像”、“第一子网络、第二子网络”、“子网络之间的后处理过程”三个方面的概念。
70.第一方面,包含待分割物体的目标图像。
71.其中,目标图像是指包含待分割物体的图像。
72.请参照图2,图2是本技术实施例中提供的目标图像的一种场景示意图。其中,图2的(a)中表示待分割物体为人的目标图像,图2的(b)中表示待分割物体为狗的目标图像。
73.待分割物体可以根据具体应用场景而定义。例如,为了基于图像对人群进行计数,需要先从图像中分割出每个人的掩码区域,则待分割物体是指人。又如,为了检测图像中狗的品种,需要先从图像中分割出每只狗的掩码区域,则待分割物体是指狗。
74.获取包含待分割物体的目标图像的方式有多种。例如,可以从预设图像数据库获取。又如,应用本技术实施例提供的实例分割方法的电子设备,在硬件上可直接包括摄像头(如用于拍摄公共区域人群的摄像头),并在本地存储该摄像头拍摄得到的图像,可在电子设备内部直接读取;或者,电子设备也可与摄像头建立网络连接,并根据该网络连接从摄像头在线获取摄像头拍摄得到的图像;或者,电子设备也可从存储有摄像头拍摄得到的图像的相关存储介质,读取出摄像头拍摄得到的图像,具体获取方式在此不做限定。
75.第二方面,第一子网络、第二子网络。
76.其中,第一子网络、第二子网络均是指训练好的实例分割模型(后文简称实例分割模型,在没有特别指明的情况下,后文所简称的实例分割模型是指训练好的实例分割模型)中的子网络,第一子网络、第二子网络可以是先后链接的关系。这里区分第一子网络、第二子网络的目的在于:一方面便于区分两个不同的子网络,另一方面便于子网络的输入数据、输出数据、与后处理数据之间的关联。其中,第一子网络和第二子网络为非无缝衔接,即第一子网络和第二子网络之间存在后处理过程,也即步骤s40为第一子网络与第二子网络之间的后处理过程。
77.可以理解的是,虽然本技术实施例中,以实例分割模型拆分为两个子网络实现实例分割加速进行描述。但是,也可以根据实例分割模型的网络结构,将实例分割模型拆分为两个或以上的子网络来实现实例分割加速。比如,拆分为第一子网络、第二子网络、第三子网络,第一子网络和第二子网络之间存在后处理过程、第二子网络和第三子网络之间存在后处理过程。
78.例如,“获取训练好的实例分割模型中的第一子网络、所述训练好的实例分割模型中的第二子网络”可以包括:首先,将训练好的yolact++模型作为训练好的实例分割模型,
并根据yolact++模型的网络结构,将yolact++模型拆分为骨干网络和重评分网络。然后,将骨干网络作为训练好的实例分割模型的第一子网络、将重评分网络作为训练好的实例分割模型的第二子网络。
79.其中,上述yolact++模型仅为实例分割模型的一种举例,具体可以根据实际情况选取训练好的其他类型模型作为训练好的实例分割模型,不以此为限。
80.第三方面,子网络之间的后处理过程。
81.子网络之间的后处理过程,后文简称为后处理过程,或亦称为实例分割模型的后处理过程。
82.在本技术的一些实施例中,第一子网络和第二子网络之间存在的后处理过程为:第一子网络输出目标图像的特征数据后,根据第一子网络输出目标图像的特征数据进行实例分割预测处理(具体可以包括解码、nms等处理),得到目标图像的初步分割信息。最后,再将目标图像的初步分割信息输入第二子网络。
83.可以理解的是,此处第一子网络和第二子网络之间存在的后处理过程(实例分割预测处理、解码处理、nms等处理)仅为举例,第一子网络和第二子网络之间存在的后处理过程可针对具体应用场景的处理需求、及实例分割模型的网络结构而变化。比如,第一子网络用于输出目标图像的特征信息,后处理过程为根据目标图像的特征信息预测出目标图像的检测框信息,第二子网络用于根据检测框信息进行实例分割预测处理得到目标图像的实例分割结果。又如,第一子网络用于输出目标图像的特征信息,后处理过程为根据目标图像的特征信息预测出目标图像的初步分割信息,第二子网络用于对初步分割信息进行置信度预测处理得到初步分割信息的置信度;以便后续根据初步分割信息的置信度确定目标图像的实例分割结果。
84.s20、分别对所述第一子网络、所述第二子网络进行转换处理,得到所述第一子网络对应的第一加速执行模型、以及所述第二子网络对应的第二加速执行模型。
85.第一加速执行模型是指将第一子网络加载至推理优化器后,第一子网络功能实现所对应的执行引擎。第二加速执行模型是指将第二子网络加载至推理优化器后,第二子网络功能实现所对应的执行引擎。
86.由于实例分割模型的子网络之间为非无缝衔接,整个实例分割模型无法直接加载至推理优化器,故在本技术实施例中,通过步骤s20将实例分割模型中拆分后的每个子网络分别进行转化,形成推理优化器的各执行引擎(后续称为engine模型)。以供后续可以直接调用推理优化器的各执行引擎实现实例分割网络各子网络的功能,从而实现实例分割模型加速,进而提高实例分割的实时性。
87.请参照图3,图3是本技术实施例中提供的步骤s20细化的一个实施例示意图。
88.为了使得实例分割模型的各个子网络可以正常加载至推理优化器,在本技术实施例中通过如下步骤s21~s22实现,即步骤s20具体可以包括以下步骤s21~s22,其中:
89.s21、根据预设的推理优化器,分别对所述第一子网络、所述第二子网络进行转换处理,得到所述第一子网络对应的第一onnx模型、以及所述第二子网络对应的第二onnx模型。
90.onnx(open neural network exchange,开放神经网络交换)模型是开放式神经网络交换工具,也就是说可以不管用什么框架训练得到的模型,只要将训练后的模型转换为
onnx模型,就可以放在其他框架上面去执行推理过程。
91.第一onnx模型是指由第一子网络进行转换后得到、并且可以放在推理优化器上面去执行推理过程的onnx模型。
92.第二onnx模型是指由第二子网络进行转换后得到、并且可以放在推理优化器上面去执行推理过程的onnx模型。
93.其中,可以参照“训练后模型转换为onnx模型”的一些现有实现方式,将第一子网络转换为第一onnx模型、将第二子网络转换为第二onnx模型,现有的“训练后模型转换为onnx模型”的实施方式在此不再赘述。
94.请参照图4,图4是本技术实施例中提供的步骤s21细化的一个实施例示意图。
95.在一些实施例中,步骤s21具体可以包括以下步骤s211~s212,其中:
96.s211、获取所述第一子网络的第一模型参数、所述第二子网络的第二模型参数。
97.其中,第一模型参数是指训练后的实例分割网络在第一子网络部分所对应模型参数。
98.第二模型参数是指训练后的实例分割网络在第二子网络部分所对应模型参数。
99.例如,将训练后的yolact++模型的骨干网络作为第一子网络、将训练后的yolact++模型的重评分网络作为第二子网络。则第一模型参数是指训练后的yolact++模型的骨干网络的模型参数,第二模型参数则是指训练后的yolact++模型的重评分网络的模型参数。
100.s212、将所述第一模型参数加载至所述推理优化器的第一基准模型,得到所述第一子网络对应的第一onnx模型;将所述第二模型参数加载至所述推理优化器的第二基准模型,得到所述第二子网络对应的第二onnx模型。
101.其中,第一基准模型、第二基准模型均是指预设的推理优化器的基准onnx模型,即可以放在推理优化器上面去执行推理过程、且参数为默认值的onnx模型。第一基准模型与第二基准模型的区别在于:第一基准模型是采用默认的模型参数,对第一子网络初始化后的onnx模型。第二基准模型是采用默认的模型参数,对第二子网络初始化后的onnx模型。
102.为了方便理解,接以上步骤s211的例子继续说明。
103.例如,将训练后的yolact++模型的骨干网络的模型参数加载至推理优化器(如tensorrt)的第一基准模型,得到第一子网络对应的第一onnx模型。
104.将训练后的yolact++模型的重评分网络的模型参数加载至推理优化器(如tensorrt)的第二基准模型,得到第二子网络对应的第二onnx模型。
105.tensorrt是一个高性能的深度学习推理(inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。tensorrt可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。tensorrt现已能支持tensorflow、caffe、mxnet、pytorch等几乎所有的深度学习框架,将tensorrt和nvidia的gpu结合起来,能在几乎所有的框架中进行快速和高效的部署推理。
106.上述tensorrt仅为预设的推理优化器举例,预设的推理优化器具体可以根据实际情况进行选取,不以此为限。
107.由以上内容可以看出,由于将训练后的模型转换为onnx模型,就可以放在其他框架上面去执行推理过程,通过将第一模型参数加载至推理优化器的第一基准模型,得到第一子网络对应的第一onnx模型;保证了第一子网络能正常加载至推理优化器上。通过将第
二模型参数加载至所述推理优化器的第二基准模型,得到所述第二子网络对应的第二onnx模型;保证了第二子网络能正常加载至推理优化器上。
108.s22、对所述第一onnx模型进行转换处理得到所述第一子网络对应的第一加速执行模型,并对所述第二onnx模型进行转换处理得到所述第二子网络对应的第二加速执行模型。
109.在一些实施例中,步骤s30、s50的执行通过调用推理优化器来完成,步骤s40(即后处理过程)通过电子设备执行。此时,只需将第一onnx模型、第二onnx模型分别转换为推理优化器的两个执行引擎(记为engine模型)。
110.为了方便理解,接以上步骤s212的例子继续说明。
111.例如,一方面,将第一子网络(即骨干网络)对应的第一onnx模型,转换为推理优化器(tensorrt)的一个执行引擎(记为engine模型);并将第一onnx模型转换后的engine模型,作为第一子网络对应的第一加速执行模型。另一方面,第二子网络(即重评分网络)对应的第二onnx模型,转换为推理优化器(tensorrt)的另一个执行引擎(记为engine模型);并将第二onnx模型转换后的engine模型,作为第二子网络对应的第二加速执行模型。
112.在一些实施例中,步骤s30~s50的执行全部通过调用推理优化器来完成,即后处理过程(步骤s40)也通过调用推理优化器来完成。
113.由于实例分割模型的子网络之间为非无缝衔接,整个实例分割模型无法直接加载至推理优化器,也即实例分割模型的后处理过程在推理优化器中没有对应的插件实现。
114.为此,进一步地,编写后处理过程在优化加速器中的插件(简称插件)。即“对所述第一onnx模型进行转换处理得到所述第一子网络对应的第一加速执行模型”具体可以包括:首先,根据后处理过程的初始化参数,获取后处理过程在优化加速器中实现的插件。然后,将插件的输入连接第一onnx模型的输出。最后,对第一onnx模型、插件进行转换,形成推理优化器的一个执行引擎;并将该执行引擎作为第一子网络对应的第一加速执行模型。
115.请参照图5,图5是本技术实施例中提供的实例分割模型加载至推理优化器tensorrt实现实例分割的一个流程示意图。例如,yolact++模型的骨干网络和重评分网络之间的后处理过程为:解码、nms处理等。首先,根据后处理过程的初始化参数,编写yolact++模型的后处理过程(解码、nms处理等)在tensorrt中的插件,将插件的输入连接(骨干网络对应的)第一onnx模型的输出、将插件的输出连接(重评分网络对应的)第二onnx模型的输入。然后,将(骨干网络对应的)第一onnx模型、插件转换为tensorrt的一个执行引擎(engine模型),将(重评分网络对应的)第二onnx模型转换为tensorrt的另一个执行引擎(engine模型)。使得后处理过程(解码、nms处理等)全部在tensorrt上执行。以便在后续步骤s30~s50执行实例分割预测处理时,同时加载两个engine模型进行一次串行推理。
116.由以上内容可以看出,通过分别对第一子网络进行转换处理得到第一子网络对应的第一加速执行模型,并对第二子网络进行转换处理得到所述第二子网络对应的第二加速执行模型;从而使得实例分割模型的第一子网络、第二子网络可以加载至推理优化器上,进而使得实例分割模型能提速,以提高实例分割模型的实时性。
117.s30、调用所述第一加速执行模型对所述目标图像进行特征提取处理,得到所述目标图像的第一特征数据。
118.其中,第一特征数据是指第一加速执行模型对目标图像进行特征提取处理后,所
输出的数据。可以理解的是,第一特征数据可以依据第一子网络对应的网络功能而适应变化。
119.例如,yolact++模型可以拆分为骨干网络(用于输出目标图像的初步分割信息)、重评分网络。因此骨干网络对应的第一加速执行模型也用于输出目标图像的初步分割信息,则此时第一特征数据具体是指目标图像的初步分割信息。
120.在一些实施例中,步骤s30具体可以包括:初始化所述第一加速执行模型;将所述目标图像输入至所述第一加速执行模型,以调用所述第一加速执行模型对所述目标图像进行特征提取处理,得到所述目标图像的第一特征数据。
121.由以上内容可以看出,由于第一加速执行模型是第一子网络加载至推理优化器后的执行引擎,因此,通过调用第一加速执行模型对目标图像进行特征提取处理,得到目标图像的第一特征数据,可以提高第一子网络的数据处理速度,从而提高了实例分割模型的实例分割速度,即提高了实例分割模型的实时性。
122.s40、根据所述第一特征数据进行预测处理,得到所述目标图像的第二特征数据。
123.第二特征数据是指进行后处理过程后所输出的数据。可以理解的是,第二特征数据可以依据后处理过程对应的数据输出而适应变化。
124.在一些实施例中,步骤s40(即后处理过程)不加载至推理优化器上实现。此时步骤s40具体可以包括:首先,根据后处理过程的初始化参数,获取后处理过程在优化加速器中实现的插件。然后,调用插件根据第一特征数据进行预测处理(此处所描述的预测处理是指子网络之间的后处理过程,具体可以参照前述步骤s10中及后文的相关说明,在此不再赘述),得到目标图像的第二特征数据。
125.在一些实施例中,步骤s40(即后处理过程)也可以在推理优化器上执行,即步骤s40也可以通过调用推理优化器完成。此时,第一加速执行模型是指由第一onnx模型、插件进行转换,形成推理优化器的一个执行引擎。步骤s30~s40可以通过第一加速执行模型完成。
126.例如,第一加速执行模型是由yolact++模型的(骨干网络对应的)第一onnx模型、插件转换为tensorrt的一个执行引擎。则步骤s30~s40具体可以通过以下步骤(1)~(6)实现:
127.(1)初始化第一加速执行模型。
128.(2)读取目标图像,对目标图像进行固定尺寸、减去均值、除以方差、bgr图像模式转rgb图像模式等图像预处理操作,并将处理后的图像数据转换为指针数据。
129.(3)定义骨干网络接解码、nms处理后输出的数据指针,包括置信度指针、检测框坐标指针、分割mask指针,分别申请输出指针所需的gpu显存。
130.(4)将输入数据指针和置信度指针、检测框坐标指针、分割mask指针组合一起,形成骨干网络和后处理过程的推理buffer(即缓冲器)。
131.(5)输入骨干网络和后处理过程的推理buffer,进行骨干网络和解码、nms处理的推理,得到目标图像的初步分割信息。
132.(6)将初步分割信息作为目标图像的第二特征数据。
133.s50、调用所述第二加速执行模型对所述第二特征数据进行预测处理,得到所述目标图像的实例分割结果。
134.为了方便理解,接以上步骤s40的例子继续说明。例如,第二加速执行模型是由yolact++模型的(重评分网络对应的)第二onnx模型转换为tensorrt的一个执行引擎。则步骤s50具体可以通过以下步骤(7)~(10)实现:
135.(7)初始化第二加速执行模型。
136.(8)定义重评分网络输入和输出的指针,分别申请输入输出指针所需的gpu显存。按照后处理过程输出的置信度,将大于所设定置信度阈值所对应的分割mask gpu数据拷贝到重评分网络的输入指针,将重评分网络的输入输出指针组合一起,形成重评分网络的推理buffer。
137.(9)输入重评分网络的推理buffer,进行重评分网络的推理。
138.(10)将后处理输出的置信度、检测框坐标、分割mask和重评分网络输出的重评分分数的数据拷贝到cpu上进行简单判定,得到最终的输出,即得到目标图像的实例分割结果。
139.由以上内容可以看出,本技术实施例中通过根据实例分割模型的网络结构,将实例分割模型拆分为多个子网络(即第一子网络、第二子网络),再分别对每个子网络进行转换为加速执行模型(即第一加速执行模型、第二加速执行模型),从而使得实例分割模型的子网络可以加载至推理优化器(如tensorrt)上。并通过调用第一加速执行模型对目标图像进行特征提取处理,得到目标图像的第一特征数据、调用第二加速执行模型对第二特征数据进行预测处理得到目标图像的实例分割结果,使得实例分割模型的子网络的数据处理过程可以提速,从而实现了实例分割模型的提速,进而提高了实例分割模型的实时性。避免了高精度的实例分割模型无法直接加载至推理优化器上的问题,从而在保证分割精度的基础上,使得实例分割模型可以在实时性上得到提升。
140.在一些实施例中,第一子网络用于对图像进行特征提取处理得到图像的特征数据。后处理过程是对第一子网络的输出结果(即图像的特征数据)进行解码、nms等处理,得到图像的初步分割信息。第二子网络用于对初步分割信息进行置信度预测处理,得到初步分割信息的置信度;以便后续根据初步分割信息的置信度确定图像的实例分割结果。第一特征数据是指目标图像的特征信息、第二特征数据是指目标图像的初步分割信息。其中,第一特征数据可以通过对目标图像分别进行一级、多级卷积特征提取、融合后得到。
141.此时步骤s40可以包括:根据所述第一特征数据进行实例分割预测处理,得到所述目标图像的初步分割信息;将所述初步分割信息作为所述目标图像的第二特征数据。
[0142]“根据所述第一特征数据进行实例分割预测处理,得到所述目标图像的初步分割信息;将所述初步分割信息作为所述目标图像的第二特征数据”的实现,具体可以参照以上步骤s40中的举例及步骤(1)~(6)、以及实例分割模型的训练过程步骤a2~a5,在此不再赘述。
[0143]
对应地,此时步骤50具体可以包括:初始化所述第二加速执行模型;将所述初步分割信息输入至所述第二加速执行模型,以调用所述第二加速执行模型对所述初步分割信息进行置信度预测处理,得到所述初步分割信息的第一置信度;根据所述第一置信度确定所述目标图像的实例分割结果。
[0144]“初始化所述第二加速执行模型;将所述初步分割信息输入至所述第二加速执行模型,以调用所述第二加速执行模型对所述初步分割信息进行置信度预测处理,得到所述
初步分割信息的第一置信度;根据所述第一置信度确定所述目标图像的实例分割结果”的实现,具体可以参照以上步骤s50中的举例及步骤(7)~(10)、以及实例分割模型的训练过程步骤a2~a5,在此不再赘述。
[0145]
由以上内容可以看出,由于第二加速执行模型是第二子网络加载至推理优化器后的执行引擎,因此,通过调用第二加速执行模型对初步分割信息进行置信度预测处理,得到所述初步分割信息的第一置信度;以便后续根据第一置信度确定目标图像的实例分割结果,可以提高第二子网络的数据处理速度,从而提高了实例分割模型的实例分割速度,即提高了实例分割模型的实时性。
[0146]
在某些场景下,后处理过程的输出尺寸是动态的,因此第二子网络的输入尺寸也是动态变化,这就导致第二子网络无法直接转换到推理优化器上,即导致了实例分割模型无法直接转换到推理优化器。
[0147]
例如,以实例分割模型是yolact++模型、推理优化器是tensorrt为例。重评分网络的输入尺寸取决于后处理过程(如nms)输出的数量,这个数量是动态的,因此无法将yolact++模型直接转换到tensorrt。
[0148]
在本技术的一些实施例中,为了保证实例分割模型可以直接转换到推理优化器、并实现第二子网络的输入尺寸保持为动态尺寸。具体地,步骤s21、或步骤s212中,在将第二模型参数加载至推理优化器的第二基准模型,得到第二子网络对应的第二onnx模型时,同时将第二onnx模型设置为动态输入输出。步骤s22中,在对第二onnx模型进行转换处理得到第二子网络对应的第二加速执行模型时,同时将第二加速执行模型设置为动态输入输出。
[0149]
由以上内容可以看出,通过在对第二子网络进行转换处理为第二onnx模型时,将第二onnx模型设置为动态输入输出。并在将第二onnx模型进行转换处理为第二加速执行模型时,将第二加速执行模型设置为动态输入输出。使得实例分割模型可以直接转换到推理优化器、并实现第二子网络的输入尺寸保持为动态尺寸。
[0150]
在一些实施例中,实例分割模型可以通过以下步骤a1~a6训练得到,其中:
[0151]
a1、获取多个训练图像。
[0152]
其中,训练图像已标注分割轮廓信息。
[0153]
例如,收集需要进行实例分割的图像形成原始数据集,并划分为训练集(即多个训练图像)和测试集。对原始数据集的所有图像进行标注,包括所有实例(即需要进行实例分割的物体)的检测位置框和分割轮廓图,将检测位置框的坐标和分割轮廓图的坐标存入json格式标注文件。同时,一方面,对json格式标注文件进行格式转换,得到与coco数据集格式一致的标注文件。另一方面,将原始数据集转化为标准的coco数据集格式,以便后续的数据处理。
[0154]
a2、调用预设实例分割网络中的第一子网络,对所述训练图像进行特征提取处理,得到所述训练图像的图像特征信息。
[0155]
在一些实施方式中,预设实例分割网络包括第一子网络、第二子网络。
[0156]
第一子网络用于输出训练图像的图像特征信息。例如,第一网络以训练图像作为输入,对训练图像进行特征提取处理,以训练图像的图像特征信息。
[0157]
a3、根据所述图像特征信息进行实例分割预测处理,得到所述训练图像的第一分割预测结果、以及所述第一分割预测结果的第二置信度。
[0158]
其中,第一分割预测结果是指根据图像特征信息进行实例分割预测处理,所得到的初步的实例分割图。第二置信度是指初步的实例分割图的置信度。
[0159]
a4、调用预设实例分割网络中的第二子网络,对所述第一分割预测结果进行置信度预测处理,得到所述初步分割信息的第三置信度;
[0160]
a5、根据所述第三置信度确定得到所述训练图像的第二分割预测结果。
[0161]
其中,第三置信度是指在模型训练时,初步的实例分割图的置信度。第一置信度、第二置信度、与第三置信度的区别在于:第一置信度是训练好的实例分割模型中的第二子网络,对第一子网络输出的初步实例分割信息进行置信度预测处理所得到的置信度。第二置信度是通过除第二子网络外的其他网络结构部分预测所得到的置信度。第三置信度是预设实例分割网络中的第二子网络,对第一分割预测结果进行置信度预测处理所得到的置信度。
[0162]
第二分割预测结果是指训练图像最终的实例分割结果。
[0163]
第二子网络用于输出训练图像最终的分割预测结果。
[0164]
具体地,首先,调用预设实例分割网络中的第二子网络,对第一分割预测结果进行置信度预测处理,得到第一分割预测结果的第三置信度。然后,计算第二置信度与第三置信度的乘积,得到第一实例分割结果的最终置信度。最后,保留最终置信度大于预设阈值的第一实例分割结果,以作为训练图像的第二分割预测结果。
[0165]
a6、根据所述第二分割预测结果和所述分割轮廓信息,对所述预设实例分割网络进行训练,得到训练好的实例分割模型。
[0166]
例如,根据第二分割预测结果和所述分割轮廓信息,确定预设实例分割网络的训练总损失值。并根据训练总损失值进行反向传播,更新预设实例分割网络的模型参数,直至符合预设的停止训练条件时,将预设实例分割网络作为训练好的实例分割模型。此时,可以采用训练好的实例分割模型用于根据图像进行实例分割。
[0167]
其中,预设的停止训练条件可以根据实际需求而设置。例如,可以是当训练总损失值小于预设值时,或者是训练总损失值基本不再变化时,即相邻多次训练对应的训练总损失值的差值小于预设值;或者是预设实例分割网络训练的迭代次数达到最大迭代次数时。
[0168]
由以上内容可以看出,通过步骤a1~a5训练后得到的实例分割网络,由于经过两次置信度评判后,当第二置信度与第三置信度的乘积大于预设阈值时,才将初步的实例分割图确定为最终的实例分割结果,从而保证了实例分割模型的实例分割精度。
[0169]
由以上内容可以看出,在本技术实施例中,步骤s10和s20的主要目的在于:实现将训练好的实例分割模型加载至推理优化器。步骤s30~s50主要在于:通过推理优化器执行实例分割模型的各个功能结构,从而实现实例分割模型的加速,进而提高对目标图像进行实例分割的实时性。
[0170]
此外,为了验证本技术实施例提供实例分割方法的所带来的效果,还对本技术实施例提供的方案进行了实验测试,具体如下:
[0171]
yolact++模型在1080ti服务器上空卡单条空卡状态下的推理时间为36.4ms。通过将yolact++模型转换成tensorrt,将推理时间缩短至22.5ms,大幅提升了算法的推理速度。可见,通过本技术实施例的实例分割方法实现了tensorrt完全体,可以快速地对图像进行检测和分割,适用于对实时性要求较高的检测分割任务。
[0172]
为了更好实施本技术实施例中实例分割方法,在实例分割方法基础之上,本技术实施例中还提供一种实例分割装置,如图6所示,为本技术实施例中实例分割装置的一个实施例结构示意图,该实例分割装置600包括:
[0173]
获取单元601,用于获取训练好的实例分割模型中的第一子网络、所述训练好的实例分割模型中的第二子网络、以及包含待分割物体的目标图像;
[0174]
转换单元602,用于分别对所述第一子网络、所述第二子网络进行转换处理,得到所述第一子网络对应的第一加速执行模型、以及所述第二子网络对应的第二加速执行模型;
[0175]
分割处理单元603,用于调用所述第一加速执行模型对所述目标图像进行特征提取处理,得到所述目标图像的第一特征数据;
[0176]
所述分割处理单元603,还用于根据所述第一特征数据进行预测处理,得到所述目标图像的第二特征数据;
[0177]
所述分割处理单元603,还用于调用所述第二加速执行模型对所述第二特征数据进行预测处理,得到所述目标图像的实例分割结果。
[0178]
在本技术的一些实施例中,所述转换单元602具体还用于:
[0179]
分别对所述第一子网络、所述第二子网络进行转换处理,得到所述第一子网络对应的第一onnx模型、以及所述第二子网络对应的第二onnx模型;
[0180]
根据预设的推理优化器,对所述第一onnx模型进行转换处理得到所述第一子网络对应的第一加速执行模型,并对所述第二onnx模型进行转换处理得到所述第二子网络对应的第二加速执行模型。
[0181]
在本技术的一些实施例中,所述转换单元602具体还用于:
[0182]
获取所述第一子网络的第一模型参数、所述第二子网络的第二模型参数;
[0183]
将所述第一模型参数加载至所述推理优化器的第一基准模型,得到所述第一子网络对应的第一onnx模型;将所述第二模型参数加载至所述推理优化器的第二基准模型,得到所述第二子网络对应的第二onnx模型。
[0184]
在本技术的一些实施例中,所述第二onnx模型、以及所述第二加速执行模型均已设置为动态输入输出。
[0185]
在本技术的一些实施例中,所述分割处理单元603具体还用于:
[0186]
初始化所述第一加速执行模型;
[0187]
将所述目标图像输入至所述第一加速执行模型,以调用所述第一加速执行模型对所述目标图像进行特征提取处理,得到所述目标图像的第一特征数据。
[0188]
在本技术的一些实施例中,所述分割处理单元603具体还用于:
[0189]
根据所述第一特征数据进行实例分割预测处理,得到所述目标图像的初步分割信息;
[0190]
将所述初步分割信息作为所述目标图像的第二特征数据。
[0191]
在本技术的一些实施例中,所述分割处理单元603具体还用于:
[0192]
初始化所述第二加速执行模型;
[0193]
将所述初步分割信息输入至所述第二加速执行模型,以调用所述第二加速执行模型对所述初步分割信息进行置信度预测处理,得到所述初步分割信息的第一置信度;
[0194]
根据所述第一置信度确定所述目标图像的实例分割结果。
[0195]
在本技术的一些实施例中,所述实例分割装置还包括训练单元(图中未示出),所述训练单元具体用于:
[0196]
获取多个训练图像,其中,所述训练图像已标注分割轮廓信息;
[0197]
调用预设实例分割网络中的第一子网络,对所述训练图像进行特征提取处理,得到所述训练图像的图像特征信息;
[0198]
根据所述图像特征信息进行实例分割预测处理,得到所述训练图像的第一分割预测结果、以及所述第一分割预测结果的第二置信度;
[0199]
调用预设实例分割网络中的第二子网络,对所述第一分割预测结果进行置信度预测处理,得到所述初步分割信息的第三置信度;
[0200]
根据所述第三置信度确定所述训练图像的第二分割预测结果;
[0201]
根据所述第二分割预测结果和所述分割轮廓信息,对所述预设实例分割网络进行训练,得到训练好的实例分割模型。
[0202]
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
[0203]
由于该实例分割装置可以执行本技术如图1至图5对应任意实施例中实例分割方法中的步骤,因此,可以实现本技术如图1至图5对应任意实施例中实例分割方法所能实现的有益效果,详见前面的说明,在此不再赘述。
[0204]
此外,为了更好实施本技术实施例中实例分割方法,在实例分割方法基础之上,本技术实施例还提供一种电子设备,参阅图7,图7示出了本技术实施例电子设备的一种结构示意图,具体的,本技术实施例提供的电子设备包括处理器701,处理器701用于执行存储器702中存储的计算机程序时实现如图1至图5对应任意实施例中实例分割方法的各步骤;或者,处理器701用于执行存储器702中存储的计算机程序时实现如图6对应实施例中各单元的功能。
[0205]
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器702中,并由处理器701执行,以完成本技术实施例。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。
[0206]
电子设备可包括,但不仅限于处理器701、存储器702。本领域技术人员可以理解,示意仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子备还可以包括输入输出设备、网络接入设备、总线等,处理器701、存储器702、输入输出设备以及网络接入设备等通过总线相连。
[0207]
处理器701可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分。
[0208]
存储器702可用于存储计算机程序和/或模块,处理器701通过运行或执行存储在存储器702内的计算机程序和/或模块,以及调用存储在存储器702内的数据,实现计算机装置的各种功能。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0209]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的实例分割装置、电子设备及其相应单元的具体工作过程,可以参考如图1至图5对应任意实施例中实例分割方法的说明,具体在此不再赘述。
[0210]
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0211]
为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本技术如图1至图5对应任意实施例中实例分割方法中的步骤,具体操作可参考如图1至图5对应任意实施例中实例分割方法的说明,在此不再赘述。
[0212]
其中,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁盘或光盘等。
[0213]
由于该计算机可读存储介质中所存储的指令,可以执行本技术如图1至图5对应任意实施例中实例分割方法中的步骤,因此,可以实现本技术如图1至图5对应任意实施例中实例分割方法所能实现的有益效果,详见前面的说明,在此不再赘述。
[0214]
以上对本技术实施例所提供的一种实例分割方法、装置、电子设备及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1