一种图像缓存方法、装置、电子设备及存储介质

阅读: 评论:0

著录项
  • CN202111145887.X
  • 20210928
  • CN113870093A
  • 20211231
  • 上海商汤科技开发有限公司
  • 王志宏
  • G06T1/60
  • G06T1/60 G06F9/54 G06N3/04 G06N3/08

  • 上海市浦东新区自由贸易试验区临港新片区环湖西二路888号C楼
  • 上海(31)
  • 北京派特恩知识产权代理有限公司
  • 马丽;张颖玲
摘要
本公开提供了一种图像缓存方法、装置、电子设备及存储介质,方法包括:利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,多个训练进程与多组图像一一对应;利用多个训练进程中第一训练进程,申请多组图像对应的共享内存,并将申请到的共享内存共享至多个训练进程中与第一训练进程不同的每个训练进程;利用多个训练进程中每个训练进程,分别将多组图像中读取的一组图像,缓存至共享内存,以供多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从共享内存中读取多组图像。
权利要求

1.一种图像缓存方法,其特征在于,包括:

利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,所述多个训练进程与所述多组图像一一对应;

利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存,并将申请到的所述共享内存共享至所述多个训练进程中与所述第一训练进程不同的每个训练进程;

利用所述多个训练进程中每个训练进程,分别将所述多组图像中读取的一组图像,缓存至所述共享内存,以供所述多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从所述共享内存中读取所述多组图像。

2.根据权利要求1所述的方法,其特征在于,所述利用多个训练进程中每个训练进程读取一组图像,得到多组图像,包括:

利用所述多个训练进程中第二训练进程,读取记录图像数据集中每个图像的存储路径的图像路径列表,并将所述图像路径列表广播至所述多个训练进程中与所述第二训练进程不同的每个训练进程;

利用所述多个训练进程中每个训练进程,基于所述图像路径列表,按照对应的预设图像读取策略,从所述图像数据集中读取一组图像,得到所述多组图像。

3.根据权利要求1所述的方法,其特征在于,所述利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存之前,所述方法还包括:

利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中读取的一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小;

利用所述第一训练进程,汇总所述多个内存大小,得到支持存储所述多组图像的整体内存大小;

所述利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存,包括:

利用所述第一训练进程,根据所述整体内存大小申请所述共享内存。

4.根据权利要求3所述的方法,其特征在于,所述利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中对应一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小之后,所述方法还包括:

分别利用所述多个训练进程中每个训练进程,汇总所述多个内存大小,得到所述整体内存大小。

5.根据权利要求3所述的方法,其特征在于,所述利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中读取的一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小,包括:

利用所述多个训练进程中每个训练进程,获取所述多组图像中读取的一组图像的形状信息;

利用所述多个训练进程中每个训练进程,根据所述多组图像中读取的一组图像的形状信息,计算支持缓存读取的一组图像需求的内存大小,得到所述多个内存大小。

6.根据权利要求5所述的方法,其特征在于,所述利用所述多个训练进程中每个训练进程,获取所述多组图像中读取的一组图像的形状信息之后,所述方法还包括:

分别利用所述多个训练进程中每个训练进程,汇总所述多组图像的形状信息,得到信息汇总结果。

7.一种图像缓存装置,其特征在于,包括:

读取模块,用于利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,所述多个训练进程与所述多组图像一一对应;

处理模块,用于利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存,并将申请到的所述共享内存共享至所述多个训练进程中与所述第一训练进程不同的每个训练进程;

缓存模块,用于利用所述多个训练进程中每个训练进程,分别将所述多组图像中读取的一组图像,缓存至所述共享内存,以供所述多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从所述共享内存中读取所述多组图像。

8.根据权利要求7所述的装置,其特征在于,

所述读取模块,具体用于利用所述多个训练进程中第二训练进程,读取记录图像数据集中每个图像的存储路径的图像路径列表,并将所述图像路径列表广播至所述多个训练进程中与所述第二训练进程不同的每个训练进程;利用所述多个训练进程中每个训练进程,基于所述图像路径列表,按照对应的预设图像读取策略,从所述图像数据集中读取一组图像,得到所述多组图像。

9.根据权利要求7所述的装置,其特征在于,

所述处理模块,还用于利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中读取的一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小;利用所述第一训练进程,汇总所述多个内存大小,得到支持存储所述多组图像的整体内存大小;

所述处理模块,具体用于利用所述第一训练进程,根据所述整体内存大小申请所述共享内存。

10.根据权利要求9所述的装置,其特征在于,

所述处理模块,还用于分别利用所述多个训练进程中每个训练进程,汇总所述多个内存大小,得到所述整体内存大小。

11.根据权利要求9所述的装置,其特征在于,

所述处理模块,具体用于利用所述多个训练进程中每个训练进程,获取所述多组图像中读取的一组图像的形状信息;利用所述多个训练进程中每个训练进程,根据所述多组图像中读取的一组图像的形状信息,计算支持缓存读取的一组图像需求的内存大小,得到所述多个内存大小。

12.根据权利要求11所述的装置,其特征在于,

所述处理模块,还用于分别利用所述多个训练进程中每个训练进程,汇总所述多组图像的形状信息,得到信息汇总结果。

13.一种电子设备,其特征在于,所述电子设备包括:处理器、存储器和通信总线;其中,

所述通信总线,用于实现所述处理器和所述存储器之间的连接通信;

所述处理器,用于执行所述存储器中存储的一个或者多个程序,以实现权利要求1-6任一项所述的图像缓存方法。

14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现权利要求1-6任一项所述的图像缓存方法。

说明书
技术领域

本公开涉及计算机视觉技术领域,尤其涉及一种图像缓存方法、装置、电子设备及存储介质。

神经网络的训练过程分为数据处理和训练两个部分,其中,数据处理阶段主要包含从硬盘中读取图片和对图片进行预处理两个步骤的操作。通常地,为了提高训练速度,会在一台物理机上,启动多个进程来同时利用多张显卡进行训练。

目前,当单个图片的数据比较大的时候,数据处理阶段内,读图片的时间会非常长,那么可能出现训练进程利用前一个图像已经进行了神经网络的训练,而下一个图像还在读取,无法很好地将数据处理和训练并行运行,图像读取耗费时间过长,从而导致神经网络的训练效率较低。

本公开实施例期望提供一种图像缓存方法、装置、电子设备及存储介质。

本公开实施例的技术方案是这样实现的:

本公开实施例提供了一种图像缓存方法,包括:

利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,所述多个训练进程与所述多组图像一一对应;

利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存,并将申请到的所述共享内存共享至所述多个训练进程中与所述第一训练进程不同的每个训练进程;

利用所述多个训练进程中每个训练进程,分别将所述多组图像中读取的一组图像,缓存至所述共享内存,以供所述多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从所述共享内存中读取所述多组图像。

在上述方法中,所述利用多个训练进程中每个训练进程读取一组图像,得到多组图像,包括:

利用所述多个训练进程中第二训练进程,读取记录图像数据集中每个图像的存储路径的图像路径列表,并将所述图像路径列表广播至所述多个训练进程中与所述第二训练进程不同的每个训练进程;

利用所述多个训练进程中每个训练进程,基于所述图像路径列表,按照对应的预设图像读取策略,从所述图像数据集中读取一组图像,得到所述多组图像。

在上述方法中,所述利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存之前,所述方法还包括:

利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中读取的一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小;

利用所述第一训练进程,汇总所述多个内存大小,得到支持存储所述多组图像的整体内存大小;

所述利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存,包括:

利用所述第一训练进程,根据所述整体内存大小申请所述共享内存。

在上述方法中,所述利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中对应一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小之后,所述方法还包括:

分别利用所述多个训练进程中每个训练进程,汇总所述多个内存大小,得到所述整体内存大小。

在上述方法中,所述利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中读取的一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小,包括:

利用所述多个训练进程中每个训练进程,获取所述多组图像中读取的一组图像的形状信息;

利用所述多个训练进程中每个训练进程,根据所述多组图像中读取的一组图像的形状信息,计算支持缓存读取的一组图像需求的内存大小,得到所述多个内存大小。

在上述方法中,所述利用所述多个训练进程中每个训练进程,获取所述多组图像中读取的一组图像的形状信息之后,所述方法还包括:

分别利用所述多个训练进程中每个训练进程,汇总所述多组图像的形状信息,得到信息汇总结果。

本公开实施例提供了一种图像缓存装置,包括:

读取模块,用于利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,所述多个训练进程与所述多组图像一一对应;

处理模块,用于利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存,并将申请到的所述共享内存共享至所述多个训练进程中与所述第一训练进程不同的每个训练进程;

缓存模块,用于利用所述多个训练进程中每个训练进程,分别将所述多组图像中读取的一组图像,缓存至所述共享内存,以供所述多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从所述共享内存中读取所述多组图像。

在上述装置中,所述读取模块,具体用于利用所述多个训练进程中第二训练进程,读取记录图像数据集中每个图像的存储路径的图像路径列表,并将所述图像路径列表广播至所述多个训练进程中与所述第二训练进程不同的每个训练进程;利用所述多个训练进程中每个训练进程,基于所述图像路径列表,按照对应的预设图像读取策略,从所述图像数据集中读取一组图像,得到所述多组图像。

在上述装置中,所述处理模块,还用于利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中读取的一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小;利用所述第一训练进程,汇总所述多个内存大小,得到支持存储所述多组图像的整体内存大小;

所述处理模块,具体用于利用所述第一训练进程,根据所述整体内存大小申请所述共享内存。

在上述装置中,所述处理模块,还用于分别利用所述多个训练进程中每个训练进程,汇总所述多个内存大小,得到所述整体内存大小。

在上述装置中,所述处理模块,具体用于利用所述多个训练进程中每个训练进程,获取所述多组图像中读取的一组图像的形状信息;利用所述多个训练进程中每个训练进程,根据所述多组图像中读取的一组图像的形状信息,计算支持缓存读取的一组图像需求的内存大小,得到所述多个内存大小。

在上述装置中,所述处理模块,还用于分别利用所述多个训练进程中每个训练进程,汇总所述多组图像的形状信息,得到信息汇总结果。

本公开实施例提供了一种电子设备,所述电子设备包括:处理器、存储器和通信总线;其中,

所述通信总线,用于实现所述处理器和所述存储器之间的连接通信;

所述处理器,用于执行所述存储器中存储的一个或者多个程序,以实现上述图像缓存方法。

本公开实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述图像缓存方法。

本公开实施例提供了一种图像缓存方法、装置、电子设备及存储介质,方法包括:利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,多个训练进程与多组图像一一对应;利用多个训练进程中第一训练进程,申请多组图像对应的共享内存,并将申请到的共享内存共享至多个训练进程中与第一训练进程不同的每个训练进程;利用多个训练进程中每个训练进程,分别将多组图像中读取的一组图像,缓存至共享内存,以供多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从共享内存中读取多组图像。本公开实施例提供的技术方案,利用训练进程,将神经网络训练阶段需要应用的图像预先缓存到共享内存中,从而提高图像读取速度,提高神经网络训练效率。

图1为本公开实施例提供的一种图像缓存方法的流程示意图;

图2为本公开实施例提供的一种示例性的训练进程缓存图像的示意图;

图3为本公开实施例提供的一种图像缓存装置的结构示意图;

图4为本公开实施例提供的一种电子设备的结构示意图。

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。以下实施例用于说明本公开,但不用来限制本公开的范围。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

需要指出,本公开实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换预设的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。

本公开实施例提供了一种图像缓存方法,其执行主体可以是图像缓存装置,例如,图像缓存方法可以由终端设备或服务器或其它电子设备执行,其中,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,图像缓存方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

本公开实施例提供了一种图像缓存方法。图1为本公开实施例提供的一种图像缓存方法的流程示意图。如图1所示,在本公开的实施例中,图像缓存方法主要包括以下步骤:

S101、利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,多个训练进程与多组图像一一对应。

在本公开的实施例中,图像缓存装置利用多个训练进程读取多组图像。

需要说明的是,在本公开的实施例中,多组图像实际上是存储在硬盘上的,图像缓存装置利用多个训练进程中每个训练进程可以读取一组图像,即多个训练进程与多组图像一一对应。具体的训练进程的数量,以及每个训练进程读取的图像可以根据实际需求和应用场景设定,本公开实施例不作限定。

需要说明的是,在本公开的实施例中,对于多个训练进程中每个训练进程,可以执行神经网络训练步骤,用于训练神经网络。

需要说明的是,在本公开的实施例中,每个训练进程读取的一组图像中,可以包括一帧或者多帧图像,具体的每组图像包含的图像数量可以根据实际需求设定,本公开实施例不作限定。

具体的,在本公开的实施例中,图像处理装置利用多个训练进程中每个训练进程读取一组图像,得到多组图像,包括:利用多个训练进程中第二训练进程,读取记录图像数据集中每个图像的存储路径的图像路径列表,并将图像路径列表广播至多个训练进程中与第二训练进程不同的每个训练进程;利用多个训练进程中每个训练进程,基于图像路径列表,按照对应的预设图像读取策略,从图像数据集中读取一组图像,得到多组图像。

需要说明的是,在本公开的实施例中,多个训练进程中包括第一训练进程,其中,第一训练进程用于实现共享内存的申请和共享,具体在后续步骤中详述,而第二训练进程,可以与第一训练进程为同一个训练进程,当然,也可以为多个训练进程中,与第一训练进程为不同的任意一个训练进程。具体的第二训练进程可以根据实际需求和应用场景设定,本公开实施例不作限定。

可以理解的是,在本公开的实施例中,图像路径列表中记录了图像数据集中每个图像的存储路径,图像缓存装置利用第二训练进程读取到图像路径列表,并广播至多个训练进程中与第二训练进程不同的每个训练进程,从而实现了多个训练进程中每个训练进程获知图像数据集中每个图像的存储路径,这样,图像缓存装置即可利用多个训练进程中的每个训练进程,基于图像路径列表,进行一组图像的读取。

需要说明的是,在本公开的实施例中,多个训练进程中每个训练进程,都设定有对应的预设图像读取策略,指示了该训练线程需要从图像数据集中读取的一组图像,也就是说,实际上每个训练线程分别读取图像数据集中部分图像。例如,多个训练进程为三个训练进程,具体包括:训练进程1、训练进程2和训练进程3,其中,训练进程1对应的预设图像读取策略为读取图像路径列表中记录的前三分之一的图像,即训练进程1对应读取的一组图像为图像数据集中在图像路径列表中记录的前三分之一的图像,训练进程2对应的预设图像读取策略为读取图像路径列表中记录的中间三分之一的图像,训练进程3对应的预设图像读取策略为读取图像路径列表中记录的后三分之一的图像,即利用三个训练进程,可以实现图像数据集全部图像的读取。具体的每个训练进程对应的预设图像读取策略可以根据实际需求和应用场景设定,本公开实施例不作限定。

需要说明的是,在本公开的实施例中,多组图像可以覆盖整个图像数据集,当然,也可以仅覆盖图像数据集部分特定的图像,本公开实施例不作限定。

S102、利用多个训练进程中第一训练进程,申请多组图像对应的共享内存,并将申请到的共享内存共享至所述多个训练进程中与第一训练进程不同的每个训练进程。

在本公开的实施例中,图像缓存装置在利用多个训练进程读取到多组图像的情况下,利用多个训练进程中第一训练进程,申请多组图像对应的共享内存,并将申请到的共享内存共享至所述多个训练进程中与第一训练进程不同的每个训练进程。

需要说明的是,在本公开的实施例中,第一训练进程可以是多个训练进程中任意一个训练进程,也可以是预先设定的多个训练进程中特定的一个训练进程,其可以与上述第二训练进程为同一训练进程,也可以与上述第二训练进程为不同的训练进程,本公开实施例不作限定。

需要说明的是,在本公开的实施例中,图像缓存装置在利用第一训练进程申请到共享内存之后,即可将共享内存共享至其他训练进程。具体的,图像缓存装置可以利用第一训练进程,将指向共享内存的描述符发送给其他训练进程,其他训练进程根据该描述符,即可获知具体的共享内存。

具体的,在本公开的实施例中,图像缓存装置利用多个训练进程中第一训练进程,申请多组图像对应的共享内存之前,可以执行以下步骤:利用多个训练进程中每个训练进程,计算支持缓存多组图像中读取的一组图像需求的内存大小,得到与多组图像一一对应的多个内存大小;利用第一训练进程,汇总多个内存大小,得到支持存储多组图像的整体内存大小;相应地,图像缓存装置利用多个训练进程中第一训练进程,申请多组图像对应的共享内存,包括:利用第一训练进程,根据整体内存大小申请共享内存。

可以理解的是,在本公开的实施例中,每个训练进程在读取到一组图像的情况下,可以计算缓存该组图像所需要的内存大小,实际上也就是计算该组图像的图像数据量大小。

需要说明的是,在本公开的实施例中,多个训练进程之间可以进行通信交互,与第一训练进程不同的每个训练进程,可以将计算出的支持缓存读取的一组图像的内存大小通知给第一训练进程,第一训练进程即可汇总多组图像对应的多个内存大小,从而得到支持存储多组图像的整体内存大小,再申请与整体内存大小匹配的共享内存,也就是多组图像对应的共享内存。整体内存大小,实际上也就是多组图像的图像数据量大小。

具体的,在本公开的实施例中,图像缓存装置利用多个训练进程中每个训练进程,计算支持缓存多组图像中读取的一组图像需求的内存大小,得到与多组图像一一对应的多个内存大小,包括:利用多个训练进程中每个训练进程,获取多组图像中读取的一组图像的形状信息;利用多个训练进程中每个训练进程,根据多组图像中读取的一组图像的形状信息,计算支持缓存读取的一组图像需求的内存大小,得到多个内存大小。

需要说明的是,在本公开的实施例中,图像缓存装置可以利用多个训练进程中每个训练进程,获取读取的一组图像的形状信息,其中,对于一帧图像而言,其形状信息可以包括该图像的数据类型等信息,每个训练进程根据对应一组图像的形状信息,可以计算出支持缓存读取的一组图像需求的内存大小。

具体的,在本公开的实施例中,图像缓存装置利用多个训练进程中每个训练进程,计算支持缓存多组图像中读取的一组图像需求的内存大小,得到与多组图像一一对应的多个内存大小之后,还可以执行以下步骤:分别利用多个训练进程中每个训练进程,汇总多个内存大小,得到整体内存大小。

需要说明的是,在本公开的实施例中,图像缓存装置在利用每个训练进程计算出支持缓存读取的一组图像需求的内存大小的情况下,还可以分别利用每个训练进程进行多个内存大小的汇总,这样,每个训练进程都可以获知到多组图像的大小。

具体的,在本公开的实施例中,图像缓存装置利用多个训练进程中每个训练进程,获取多组图像中读取的一组图像的形状信息之后,还可以执行以下步骤:分别利用多个训练进程中每个训练进程,汇总多组图像的形状信息,得到信息汇总结果。

需要说明的是,在本公开的实施例中,图像缓存装置在利用每个训练进程获取到读取的一组图像的形状信息的情况下,还可以分别利用每个训练进程进行多组图像的形状信息的汇总,这样,每个训练进程都可以获知到多组图像的形状信息,这样,每个训练进程在后续从共享内存中进行图像读取时,可以基于获知的形状信息进行特定图像的选择再进行读取。

S103、利用多个训练进程中每个训练进程,分别将多组图像中读取的一组图像,缓存至共享内存,以供多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从共享内存中读取多组图像。

在本公开的实施例中,图像缓存装置在利用第一训练进程将共享内存共享至多个训练进程中其他训练进程之后,即多个训练进程均获知共享内存,从而可以利用多个训练进程中每个训练进程,分别将多组图像中读取的一组图像,缓存至共享内存。

可以理解的是,在本公开的实施例中,图像缓存装置利用多个训练进程中每个训练进程,分别将多组图像中读取的一组图像,缓存至共享内存,实际上就是实现了将多组图像全部缓存到共享内存中。对于每个训练进程而言,其获知缓存多组图像的共享内存,因此,在后续执行神经网络训练步骤的期间,可以从共享内存中进行图像的读取,具体可以读取共享内存中缓存的多组图像中任意的图像,用于进行神经网络训练,从而提高了图像读取速度,相应地,也就提高了神经网络训练速度。

需要说明的是,在本公开的实施例中,上述图像缓存方法,较佳的,适用于神经网络训练中,用于训练的单帧图像数据量较大,但是,图像的总图像数据较少,即图像数量较少的应用场景。

图2为本公开实施例提供的一种示例性的训练进程缓存图像的示意图。如图2所示,训练进程1读取图像路径列表,然后将这个路径列表广播给训练进程2和训练进程3。每个训练进程根据图像路径列表,确定出自己需要读取的一组图像,并且从硬盘中读取对应的一组图片。每个训练进程根据读到的图片,计算出缓存本进程的这些图片所需要的内存大小,然后汇总,这样所有训练进程都知道了整个图像数据集的大小。训练进程1根据汇总出来的整体内存大小,申请对应的共享内存,并将这块共享内存共享给其他的进程。最后,每个进程将自己之前读到的图片,缓存到这块共享内存的对应位置,后续每个进程在训练的过程中,都可以读这块共享内存的图像。

本公开实施例提供了一种图像缓存方法,包括:利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,多个训练进程与多组图像一一对应;利用多个训练进程中第一训练进程,申请多组图像对应的共享内存,并将申请到的共享内存共享至多个训练进程中与第一训练进程不同的每个训练进程;利用多个训练进程中每个训练进程,分别将多组图像中读取的一组图像,缓存至共享内存,以供多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从共享内存中读取多组图像。本公开实施例提供的图像缓存方法,利用训练进程,将神经网络训练阶段需要应用的图像预先缓存到共享内存中,从而提高图像读取速度,提高神经网络训练效率。

本公开实施例提供了一种图像缓存装置。图3为本公开实施例提供的一种图像缓存装置的结构示意图。如图3所示,图像缓存装置包括:

读取模块301,用于利用多个训练进程中每个训练进程读取一组图像,得到多组图像;其中,所述多个训练进程与所述多组图像一一对应;

处理模块302,用于利用所述多个训练进程中第一训练进程,申请所述多组图像对应的共享内存,并将申请到的所述共享内存共享至所述多个训练进程中与所述第一训练进程不同的每个训练进程;

缓存模块303,用于利用所述多个训练进程中每个训练进程,分别将所述多组图像中读取的一组图像,缓存至所述共享内存,以供所述多个训练进程中每个训练进程在执行神经网络训练步骤的期间,从所述共享内存中读取所述多组图像。

在本公开一实施例中,所述读取模块301,具体用于利用所述多个训练进程中第二训练进程,读取记录图像数据集中每个图像的存储路径的图像路径列表,并将所述图像路径列表广播至所述多个训练进程中与所述第二训练进程不同的每个训练进程;利用所述多个训练进程中每个训练进程,基于所述图像路径列表,按照对应的预设图像读取策略,从所述图像数据集中读取一组图像,得到所述多组图像。

在本公开一实施例中,所述处理模块302,还用于利用所述多个训练进程中每个训练进程,计算支持缓存所述多组图像中读取的一组图像需求的内存大小,得到与所述多组图像一一对应的多个内存大小;利用所述第一训练进程,汇总所述多个内存大小,得到支持存储所述多组图像的整体内存大小;

所述处理模块302,具体用于利用所述第一训练进程,根据所述整体内存大小申请所述共享内存。

在本公开一实施例中,所述处理模块302,还用于分别利用所述多个训练进程中每个训练进程,汇总所述多个内存大小,得到所述整体内存大小。

在本公开一实施例中,所述处理模块302,具体用于利用所述多个训练进程中每个训练进程,获取所述多组图像中读取的一组图像的形状信息;利用所述多个训练进程中每个训练进程,根据所述多组图像中读取的一组图像的形状信息,计算支持缓存读取的一组图像需求的内存大小,得到所述多个内存大小。

在本公开一实施例中,所述处理模块302,还用于分别利用所述多个训练进程中每个训练进程,汇总所述多组图像的形状信息,得到信息汇总结果。

本公开实施例提供了一种电子设备。图4为本公开实施例提供的一种电子设备的结构示意图。如图4所示,在本公开的实施例中,电子设备包括:处理器401、存储器402和通信总线403;其中,

所述通信总线403,用于实现所述处理器401和所述存储器402之间的连接通信;

所述处理器401,用于执行所述存储器402中存储的一个或者多个程序,以上述图像缓存方法。

本公开实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述图像缓存方法。计算机可读存储介质可以是是易失性存储器(volatile memory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(non-volatile memory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(flash memory),硬盘(Hard DiskDrive,HDD)或固态硬盘(Solid-State Drive,SSD);也可以是包括上述存储器之一或任意组合的各自设备,如移动电话、计算机、平板设备、个人数字助理等。

本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程信号处理设备的处理器以产生一个机器,使得通过计算机或其他可编程信号处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程信号处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程信号处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本公开的较佳实施例而已,并非用于限定本公开的保护范围。

本文发布于:2023-04-14 23:05:43,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86904.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图