图片处理系统、方法及相关装置和设备与流程

文档序号:17988700发布日期:2019-06-22 00:36阅读:148来源:国知局
图片处理系统、方法及相关装置和设备与流程

本申请涉及计算机视觉技术领域,尤其涉及一种图片处理系统、方法及相关装置和设备。



背景技术:

计算机视觉领域常常需要处理图片分类、识别、检测、分割等任务,为了完成这些任务通常需要利用大规模的训练数据集进行深度神经网络模型训练,基于深度神经网络模型完成这些任务。

而现阶段业务方所采用的训练数据集大部分都是开源的训练数据集,若业务方针对特定场景收集训练数据集,就需要收集成千上万甚至上亿张图片,对这些图片进行预处理以生成满足模型训练要求的训练数据集,然而海量的图片数据积累对图片存储、图片预处理提出越来越高的要求。



技术实现要素:

本申请实施例提供了一种图片处理系统、方法及相关装置和设备,基于分布式存储系统和分布式计算系统,对大规模的图片数据进行分布式存储和分布式预处理,以为模型训练提供满足训练要求的训练数据集。

有鉴于此,本申请第一方面提供了一种图片处理系统,包括:客户端、分布式存储系统和分布式计算系统,所述分布式计算系统包括资源管理节点和多个计算节点;

所述客户端,用于打散图片集并生成索引文件,基于所述索引文件将所述图片集切分成多个顺序文件并将其上传至所述分布式存储系统,根据存储地址向所述资源管理节点提交针对所述多个顺序文件的任务;

所述资源管理节点,用于将所述任务划分成多个子任务,并将其分配给多个第一计算节点,所述第一计算节点为所述多个计算节点中的任一节点;

所述第一计算节点,用于读取所述子任务中的图片数据并将其填入训练数据结构生成结构化数据,向所述资源管理节点发送所述结构化数据;

所述资源管理节点,还用于根据所述任务中图片索引顺序,将所述任务对应的所述结构化数据分配给多个第二计算节点,所述第二计算节点为所述多个计算节点中的任一节点;

所述第二计算节点,用于针对所述结构化数据进行图片预处理操作得到训练数据,并将其按照顺序上传至所述分布式存储系统。

本申请第二方面提供了一种图片处理方法,应用于客户端,包括:

打散图片集并生成索引文件;

基于所述索引文件将所述图片集切分成多个顺序文件;

将所述多个顺序文件上传至所述分布式存储系统,得到所述多个顺序文件对应的存储地址;

根据所述存储地址向所述资源管理节点提交针对所述多个顺序文件的任务,以请求分布式计算系统对所述多个顺序文件进行并行地图片预处理操作得到训练数据上传至所述分布式存储系统,使得所述分布式存储系统中存储的训练数据集的训练数据顺序与所述索引文件顺序相同。

本申请第三方面提供了一种图片处理方法,应用于资源管理节点,包括:

接收针对多个顺序文件的任务;

从分布式存储系统中读取所述任务对应的多个顺序文件,将所述任务划分成多个子任务,将所述多个子任务分配给多个第一计算节点,所述第一计算节点为分布式计算系统中的任一计算节点;

接收所述第一计算节点返回的针对所述任务的结构化数据;

按照所述任务中图片索引顺序,将所述任务对应的所述结构化数据分配给多个第二计算节点,以控制所述第二计算节点针对所述结构化数据进行图片预处理操作得到训练数据,并将其按照顺序上传至所述分布式存储系统,所述第二计算节点为所述分布式计算系统中的任一计算节点。

本申请第四方面提供了一种图片处理装置,包括:

全局打散模块,用于打散图片集并生成索引文件;

切分模块,用于基于所述索引文件将所述图片集切分成多个顺序文件;

存储模块,用于将所述多个顺序文件上传至分布式存储系统得到所述多个顺序文件的存储地址;

任务提交模块,用于根据所述存储地址向所述资源管理节点提交针对所述多个顺序文件的任务,以请求分布式计算系统对所述多个顺序文件进行并行地图片预处理操作得到训练数据上传至所述分布式存储系统,使得所述分布式存储系统中存储的训练数据集的训练数据顺序与所述索引文件顺序相同。

本申请第五方面提供了一种图片处理装置,包括:

第一接收模块,用于接收针对多个顺序文件的任务;

第一分配模块,用于从分布式存储系统中读取所述任务对应的多个顺序文件,将所述任务划分成多个子任务,将所述多个子任务分配给多个第一计算节点,所述第一计算节点为分布式计算系统中的任一计算节点;

第二接收模块,用于接收所述第一计算节点返回的针对所述任务的结构化数据;

第二分配模块,用于按照所述任务中图片索引顺序,将所述任务对应的所述结构化数据分配给多个第二计算节点,以控制所述第二计算节点针对所述结构化数据进行图片预处理操作得到对应的训练数据,并将其按照顺序上传至所述分布式存储系统,所述第二计算节点为分布式存储计算系统中的任一计算节点。

本申请第六方面提供了一种设备,所述设备包括处理器以及存储器:

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行第二方面或第三方面提供的任一项所述的图片处理方法。

本申请第七方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第二方面或第三方面提供的任一项所述的图片处理方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例提供了一种图片处理系统,该系统利用分布式存储系统存储大规模图片数据,利用分布式计算系统对所存储的大规模图片数据进行预处理,生成用于训练神经网络模型的训练数据,进而再利用分布式存储系统存储所生成的训练数据;在需要针对特定场景收集训练数据集的应用场景中,上述图片处理系统基于分布式存储系统为海量图片数据提供可靠的存储途径,并且基于分布式计算系统保证对图片数据进行高效地预处理。此外,利用图片数据训练神经网络模型时,为了保证训练得到的神经网络模型具备较好的性能,通常需要保证用于训练神经网络模型的图片数据是随机打散的,基于此,在本申请实施例提供的图片处理系统中,客户端会对图片集进行打散处理,并且在利用分布式计算系统对图片数据做预处理,以及在利用分布式存储系统存储图片数据的过程中,均会采取特定的处理方式保证所获得的用于训练神经网络模型的训练数据集中的图片数据是打散的,即保证所生成的训练数据集满足神经网络模型的训练需求。

附图说明

图1为本申请实施例提供的图片处理系统的架构示意图;

图2为本申请实施例提供的子任务划分操作的架构示意图;

图3为本申请实施例提供的hadoop架构的图片处理系统的架构示意图;

图4为本申请实施例提供的客户端侧的图片处理方法的流程示意图;

图5为本申请实施例提供的资源管理节点侧的图片处理方法的流程示意图;

图6为本申请实施例提供的客户端侧的图片处理装置的结构示意图;

图7为本申请实施例提供的资源管理节点侧的图片处理装置的结构示意图;

图8为本申请实施例提供的一种设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在业务方需要针对特定场景收集训练数据集时,往往需要收集成千上万甚至上亿张图片,通过对这些图片进行预处理,生成满足模型训练要求的训练数据集,而海量图片数据积累对数据存储,以及图片数据的预处理都提出了越来越高的要求,目前,单机已无法完成海量图片数据的存储以及预处理等任务。

为了保证完成对于大规模图片数据的存储以及预处理任务,本申请实施例提供了一种图片处理系统,该系统基于分布式存储系统为海量图片数据提供可靠的存储方式,基于分布式计算系统对海量图片数据进行高效地预处理操作,即该图片处理系统基于分布式处理架构,同时保证满足对于海量图片数据的存储要求以及预处理要求;此外,为了保证用于训练神经网络模型的训练数据集中的图片数据是打散的,上述图片处理系统中的客户端会对图片集进行打散处理,并且在分布式计算系统对图片数据做预处理,以及分布式存储系统对图片数据进行存储的过程中,均会采取特定的处理方式保证最终获得的用于训练神经网络模型的训练数据集中的图片数据是打散的,如此保证最终得到的训练数据集满足神经网络模型的训练需求。

为了便于进一步理解本申请实施例提供的图片处理系统,下面对实际应用中支持上述客户端、分布式存储系统和分布式计算系统运行的硬件设备进行介绍。

图片处理系统中的客户端可以在服务器中运行以实现相应功能,该服务器可以采集大量用于训练神经网络模型的图片数据,并利用所采集的图片数据组成图片集。当然,该客户端也可以运行于其他硬件设备例如终端中,本申请对客户端所依赖的硬件设备不作具体限定。

图片处理系统中的分布式存储系统通常包括多个节点,常见的分布式存储系统中包括的多个节点分别为名称节点(namenode)和多个数据节点(datanode),其中,名称节点可以根据各个数据节点的配置情况(已存储量,未存储量等),相应地为各个数据节点分配存储任务;名称节点和多个数据节点通常分布于不同的服务器,支持名称节点运行的服务器被称为主服务器,其用于管理数据存储和客户端对数据的访问操作;支持数据节点运行的服务器被称为从服务器,其用于存储数据,主服务器可以与各个从服务器通讯。

图片处理系统中的分布式计算系统通常为软件系统,该分布式计算系统包括资源管理节点和多个计算节点,其中,资源管理节点可以根据各个计算节点的配置情况(忙碌状态,未处理的任务量等),相应地为各个计算节点分配计算任务,从而调用计算节点执行相应的任务;该分布式计算系统的应用可以依附于分布式存储系统。

需要说明的是,为了提高数据处理效率,便于分布式计算系统中的计算节点快速地从分布式存储系统中获取图片数据,在分布式存储系统中包括名称节点和多个数据节点的情况下,可以将名称节点和资源管理节点均部署在第一服务器(即主服务器)中;将分布式存储系统中的多个数据节点部署在除去第一服务器之外的多个服务器(即从服务器)中,将分布式计算系统中的多个计算节点部署在已部署有数据节点的多个服务器中。从而,分布式计算系统中的计算节点可以快速地从部署在同一个服务器中的数据节点中,获取图片数据,大大提高了图片数据的获取效率,从而从整体上提高了数据处理效率。

当然,在实际应用中,资源管理节点也可以在分布式存储系统中的从服务器上运行,或者在独立于分布式存储系统的其他服务器上运行;相类似地,计算节点也可以在分布式存储系统中的主服务器上运行,或者在独立于分布式存储系统的其他服务器上运行,在此不对支持分布式计算系统所依赖的硬件设备做任何限定。

下面通过实施例对本申请实施例提供的图片处理系统进行介绍:

参见图1,图1为本申请实施例提供的图片处理系统的工作架构示意图。如图1所示,该图片处理系统中包括客户端110、分布式存储系统120和分布式计算系统130;其中,分布式存储系统120中包括名称节点121和数据节点122,分布式计算系统130中包括资源管理节点131和多个计算节点132。

客户端110,用于打散图片集并生成索引文件,基于所述索引文件将所述图片集切分成多个顺序文件,并将其上传至所述分布式存储系统120,根据存储地址向资源管理节点131提交针对所述多个顺序文件的任务。

在需要针对特定的场景收集训练数据,对深度神经网络模型进行训练时,客户端110可以针对该特定的场景采集大量图片数据,并利用所采集的这些图片数据生成图片集;具体采集图片数据时,客户端110可以与终端设备和/或相关服务器通讯,从这些设备处获取用于训练深度神经网络模型的图片数据,当然,客户端110也可以通过其他方式获取图片数据生成图片集,在此不对客户端110获取图片数据的方式做任何限定。

通常情况下,客户端110所采集的图片数据是具有一定规律的,即图片集中图片数据的排布会存在一定的规律,例如,在图片集中的前100张图片均为对应于猫的图片,图片集中第101张图片到第300张图片均为对应于狗的图片,等等。然而,利用这种存在一定排布规律的图片数据对深度神经网络模型进行训练,通常无法保证训练得到的深度神经网络模型能够有效地对各种对象进行识别,即存在一定排布规律的图片数据并不利于训练深度神经网络模型。

为了保证训练得到的深度神经网络模型具备较好的性能,客户端110会对图片集中的图片数据进行随机打散处理,以保证打散处理后的图片集中的图片数据随机分布,进而利用打散处理后得到的图片数据生成索引文件;例如,假设图片集中的图片数据按照以下顺序排列:图片数据a、图片数据b、图片数据c和图片数据d,对图片集进行打散处理后生成索引文件,索引文件中图片数据a、图片数据b、图片数据c和图片数据d随机打散排布,例如,在索引文件中的图片数据可以按照以下的顺序排布:图片数据d、图片数据a、图片数据b和图片数据c,当然,索引文件中的图片数据的排列顺序还可以为其他顺序,上述排列顺序仅为示例。

需要说明的是,索引文件中各图片数据对应的存储格式通常为<索引行号,图片数据>,其中,索引行号是指图片集被打散后图片数据对应的排列序号,图片数据具体可以包括:图片原数据和图片属性数据,图片属性数据具体可以包括:图片类别、图片长度、图片宽度和图片通道数等,当然,图片属性数据还可以包括其他数据,在此不对图片属性数据中包括的数据做任何限定。

客户端110生成索引文件后,可以进一步基于所生成的索引文件,将打散后的图片集切分为多个顺序排列的顺序文件(sequencefile);具体的,客户端110可以通过对索引行号相邻的多个图片数据做压缩处理,生成一个顺序文件,由此根据打散图片集后所生成的索引文件相应地生成多个顺序文件;进而,客户端110将所生成的多个顺序文件上传至分布式存储系统120。

需要说明的是,顺序文件的格式通常为<索引行号,序列化的图片数据>,其中,索引行号为顺序文件对应的排列序号,该索引行号是根据顺序文件中包括的各图片数据的索引行号确定的,序列化的图片数据由顺序文件中包括的各图片数据构成,在序列化的图片数据中各图片数据按照其对应的索引行号排列。

由于顺序文件中通常包括多个图片数据,因此,将一个顺序文件上传至分布式存储系统120,实际上等同于同时向分布式存储系统120上传多个图片数据,如此,能够大幅度提高图片数据的上传效率。

分布式存储系统120中通常包括:名称节点121和多个数据节点122,其中,名称节点121用于管理各数据节点,数据节点122用于存储数据。客户端110向分布式存储系统120上传多个顺序文件时,会先向名称节点121发送文件写入请求,该文件写入请求中携带有所要上传的各顺序文件的大小;名称节点121根据各顺序文件的大小以及各数据节点122当前的配置情况,相应地为各顺序文件分配数据节点,并向客户端110返回用于存储各顺序文件的数据节点的存储地址,进而,客户端110可以相应地根据各顺序文件各自对应的存储地址,将各顺序文件相应地存储至分布式存储系统120中的数据节点122。

此外,客户端110还需要根据各顺序文件各自对应的存储地址,向分布式计算系统130中的资源管理节点131提交针对这多个顺序文件的任务,以使分布式计算系统130对这些顺序文件中的图片数据做预处理,生成可以用于训练深度神经网络模型的训练数据。

资源管理节点131,用于将所述任务划分成多个子任务,并将其分配给多个第一计算节点,所述第一计算节点为所述多个计算节点132中的任一节点。

分布式计算系统130中的资源管理节点131接收到客户端110发起的任务后,相应地从各顺序文件对应的存储地址处,获取客户端110上传至分布式存储系统120中的多个顺序文件;进而,资源管理节点131根据这多个顺序文件,将客户端110发起的任务划分为多个子任务,并将这些子任务分配给多个第一计算节点,以利用这些第一计算节点相应地处理这些子任务,此处的第一计算节点可以为分布式计算系统130中多个计算节点中的任意一个节点。

具体的,资源管理节点131从分布式存储系统120中获取到多个顺序文件后,可以针对客户端110发起的任务,解压并获取多个顺序文件得到图片数据,将多个图片数据按照分片大小划分成多个分片,将每个分片作为一个子任务分配给多个第一计算节点,所划分出的分片数通常小于顺序文件的个数。

如图2所示,图2为本申请实施例提供的子任务划分操作的架构示意图;资源管理节点131获取到多个顺序文件后,可以先对这多个顺序文件进行解压处理,得到各个顺序文件中包括的图片数据;需要说明的是,对各个顺序文件进行解压处理后,可以按照各个顺序文件各自对应的索引序号,相应地对解压顺序文件得到的图片数据进行排序,以保证解压各个顺序文件得到的图片数据的排列顺序,与客户端110对图片集进行打散处理后得到的各图片数据的排列顺序一致。

如图2所示,解压各个顺序文件得到其中包括的图片数据后,资源管理节点131可以按照分片大小,将多个图片数据合并为一个分片,此处的分片大小可以根据实际需求来设定;进而,将合并出的各个分片相应地分配给各个第一计算节点,以使各第一计算节点相应地处理为其分配的分片中的图片数据。

在一种可能的实现方式中,资源管理节点131可以根据各个第一计算节点的配置情况,相应地设置每个分片大小;即,资源管理节点131可以按照解压得到的各图片数据的排列顺序,将与每个分片大小对应的图片数据,相应地分配至各个子任务中,从而保证各第一计算节点的计算资源被充分利用。例如,假设1号第一计算节点可以处理5个图片数据,2号第一计算节点可以处理7个图片数据,则资源管理节点可以将序列中前5个图片数据划分至一个分片,将该分片作为一个子任务分配给1号第一计算节点处理,将序列中第6个至第12个图片数据划分至一个分片,将该分配作为一个子任务分配给2号第一计算节点处理。

在另一种可能的实现方式中,资源管理节点131可以为各个分片设置统一的数据阈值,当分片中的图片数据达到该数据阈值时,相应地生成一个子任务,并将其分配给第一计算节点处理。例如,假设各个分片对应的数据阈值为5,即表征每个分片中均包括5个图片数据,当某个分片中的图片数据累积达到5个时,相应地将该分片作为一个子任务分配给一个第一计算节点,进而,在按照上述方式确定下一个子任务。

当然,除了上述两种方式外,资源管理节点131还可以采取其他方式生成多个子任务,在此不对资源管理节点131生成子任务的方式做任何限定。

第一计算节点,用于读取所述子任务中的图片数据,并将其填入训练数据结构生成结构化数据,向所述资源管理节点131发送所述结构化数据。

第一计算节点获取到资源管理节点131分配的子任务后,从该子任务中读取图片数据,并将其填入特定的训练数据结构生成结构化数据,进而向资源管理节点131发送其生成的结构化数据。

需要说明的是,结构化数据的格式通常为<索引行号,结构化图片数据>,其中,索引行号与客户端110所发起的任务中的图片索引顺序对应,即该索引行号与客户端110生成的索引文件中图片数据的索引行号相对应;结构化图片数据对应于特定的数据结构,在结构化图片数据对应的数据结构中图片原数据以及各个图片属性数据分别对应不同的存储位置。

具体生成结构化图片数据时,第一计算节点需要根据结构化图片数据对应的数据结构,对图片数据进行整理,将图片数据中的图片原数据以及各个图片属性数据分布设置于相应的位置,由此生成结构化图片数据。

资源管理节点131,还用于根据所述任务中图片索引顺序,将所述任务对应的结构化数据分配给多个第二计算节点,所述第二计算节点为所述多个计算节点132中的任一节点。

资源管理节点131接收到第一计算节点返回的结构化数据后,根据任务中图片索引顺序,即根据各结构化数据各自对应的索引行号,相应地将各结构化数据分配至多个第二计算节点,此处的第二计算节点为分布式计算系统中多个计算节点132中的任意一个节点。

需要说明的是,第二计算节点与第一计算节点可以为同一个计算节点,即在同一计算节点上可以既配置第一计算节点的处理程序,又配置第二计算节点的处理程序;当然,第二计算节点与第一计算节点也可以为不同的计算节点,在此不对第一计算节点和第二计算节点的分布情况做任何限定。

具体实现时,资源管理节点131可以根据任务中图片索引顺序,采样生成分割点,根据各分割点确定多个有序的全局区间段,按照全局区间段的顺序向多个有序的第二计算节点分配对应的结构化数据。

具体的,资源管理节点131按照各结构化数据各自对应的索引行号,将各第一计算节点返回的结构化数据排列起来,然后基于按序排列的结构化数据生成分割点,根据所生成的分割点对顺序排列的结构化数据进行分割,以得到多个有序的全局区间段,每个全局区间段中包括多个顺序排列的结构化数据;进而,按照各全局区间段的顺序,向多个有序的第二计算节点分配对应的结构化数据,从而保证按照各第二计算节点对应的顺序,对各第二计算节点处理得到的训练数据进行排序处理,所得到的训练数据的顺序与客户端110打散图片集生成的索引文件的排列顺序一致。

例如,假设资源管理节点131接收到的结构化数据包括:数据1、数据2、数据3、数据4、数据5、数据6和数据7,采样生成的分割点表征需要将所有结构化数据划分至三个全局区间段,其中一段包括3个数据,两段包括2个数据;进而,资源管理节点131将数据1、数据2和数据3划分至第一全局区间段,将数据4和数据5划分至第二全局区间段,将数据6和数据7划分至第三全局区间段;并将第一全局区间段中的结构化数据分配给1号第二计算节点处理,将第二全局区间段中的结构化数据分配给2号第二计算节点处理,将第三全局区间段中的结构化数据分配给3号第二计算节点处理。

第二计算节点,用于针对所述结构化数据进行图片预处理操作得到训练数据,并将其按照顺序上传至所述分布式存储系统。

确定出各第二计算节点需要处理的结构化数据后,各第二计算节点相应地获取其自身需要处理的结构化数据,并针对所获取的结构化数据进行图片预处理操作,从而得到该结构化数据对应的训练数据,该训练数据可以作为训练样本对深度神经网络模型进行训练。

具体实现时,第二计算节点可以将结构化数据中的图片数据解码成像素格式,进而,将像素格式的图片数据以及图片标签作为训练数据存储成二进制文件;该二进制文件具体可以为tfrecord格式文件,当然也可以为其他格式的文件,在此不对二进制文件的格式做任何限定。

具体的,第二计算节点可以采用decode函数对图片数据进行解码处理,从而生成rgb格式的图片到unit8像素格式,生成tfrecord数据作为训练数据,tfrecord格式的数据在图像识别中可以起到很好的作用,其可以将二进制数据和标签数据(图片数据对应的类别标签)存储在同一个文件中。

应理解,第二计算节点还可以采用其他方式对结构化数据做预处理操作,生成训练数据,在此不对第二计算节点所采用的预处理方式做任何限定。

需要说明的是,由于结构化数据中包括有索引行号,该索引行号与客户端110打散图片集生成的索引文件的索引行号相对应,相应地,第二计算节点对结构化数据进行图片预处理得到训练数据后,可以将结构化数据的索引行号相应地赋予该训练数据,该索引行号即可作为训练数据的排序依据,进而,按照各训练数据的顺序将各训练数据上传至分布式存储系统,如此,可以保证上传至分布式存储系统中各训练数据的排列顺序,与客户端110打散图片集后生成的各索引文件的排列顺序相一致。

需要说明的是,第二计算节点在对结构化数据做预处理操作时,还可以调用图形处理器(graphicsprocessingunit,gpu)对应的资源调度器,进行图形处理器加速处理。具体的,第二计算节点可以通过gpu对应的资源调度器,相应地调用gpu,进而调用tensorflow-gpu库中的gpu加速应用程序编程接口(applicationprogramminginterface,api),即实现对结构化数据预处理进行加速,提高结构化数据预处理的处理效率。

本申请实施例提供的图片处理系统基于分布式存储系统为海量图片数据提供可靠的存储方式,基于分布式计算系统对海量图片数据进行高效地预处理操作,即该图片处理系统基于分布式处理架构,同时保证满足对于海量图片数据的存储要求以及预处理要求;此外,为了保证用于训练神经网络模型的训练数据集中的图片数据是打散的,上述图片处理系统中的客户端会对图片集进行打散处理,并且在分布式计算系统对图片数据做预处理,以及分布式存储系统对图片数据进行存储的过程中,均会采取特定的处理方式保证最终获得的用于训练神经网络模型的训练数据集中的图片数据是打散的,如此保证最终得到的训练数据集满足神经网络模型的训练需求。

目前,应用较为广泛、比较具有代表性的分布式系统架构为hadoop,其是由apache基金会所开发的分布式系统基础架构。hadoop实现了一个分布式文件系统(hadoopdistributedfilesystem,hdfs),其具有高容错性的特点,且它提供高吞吐量来访问应用程序的数据,适用于具有大规模数据集的应用程序。hadoop框架最核心的设计包括hdfs和映射归约mapreduce模型,hdfs为海量的数据提供了存储,而mapreduce则为海量的数据提供了计算。

而目前的hadoop系统由于仅采用中央处理器(controlprocessingunit,cpu)提供计算能力,因此,其无法用于实现深度学习算法加速图像编解码等图像预处理任务;并且,对于压缩数据格式即顺序文件的格式,hadoop无法根据解压后的数据拆分为子任务,仅能简单地按照输入的文件数为其分配任务,如此将导致mapreduce并发任务数过多,而单个任务所需处理的数据过少,计算资源利用率过低;此外,hadoop系统的资源调度器还不支持gpu设备以及显存资源的调度。

本申请针对hadoop系统目前存在的问题相应地进行了改进,以提供一种能够支持图片预处理的hadoop系统,下面对本申请实施例提供的基于hadoop架构构建的图片处理系统进行介绍。

参见图3,图3为本申请实施例提供的hadoop架构的图片处理系统的结构示意图。如图3所示,该图片处理系统中包括:客户端和hadoop系统,hadoop系统中包括hdfs和mapreduce;其中,hdfs为分布式存储系统,其中包括名称节点和多个数据节点,mapreduce为分布式计算系统,其中包括资源管理节点和多个计算节点;hdfs通常表现为硬件系统,mapreduce通常表现为软件系统,mapreduce的运行依赖于hdfs。

客户端310,用于对原始图片数据做离线图片格式化处理。

hadoop系统的输入数据格式通常包括:文本数据格式、结构化文本和二进制数据格式,文本数据格式和结构化文本可以直接通过hadoop内置的inputformat接口解析,虽然hadoop系统中存储数据大多数为文本格式的数据,但是其也支持存储图像等二进制数据格式的数据;通常情况下,顺序文件sequencefile的存储格式可以适用于大多数应用场景,sequencefile文件格式提供一对键值对(key,value)形式的不可变数据结构,hdfs和mapreduce使用sequencefile文件格式可以使得文件读取具有更高的效率,为此,客户端310需要将原始图片数据转换为sequencefile文件格式,并将其上传至hdfs等待后续分布式处理。

具体实现时,客户端310需要先打散包括有原始图片数据的图片集生成索引文件,基于索引文件将图片集切分为多个sequencefile;具体操作方式与上述图2所示的图片处理系统中客户端210的操作方式相类似,详细参见上述相关描述,此处不再赘述。

需要说明的是,为了确保hdfs块读取性能最优,客户端在切分图片集生成多个sequencefile时,可以按照hdfs的块大小,基于索引文件将图片集依次切分成多个sequencefile,每个sequencefile的大小等于hdfs的块大小;即,客户端在生成sequencefile时,可以按照hdfs的块大小,对若干个索引行号相邻的图片数据做压缩处理生成sequencefile,保证所生成的sequencefile大小与hdfs块大小相同,由此保证hdfs块可以一次性尽可能多地读取图片数据,保证hdfs块读取性能最优。

客户端根据图片集生成多个sequencefile后,可以向hdfs中的名称节点发送文件写入请求,以请求将这多个sequencefile存储至hdfs的数据节点中;相应地,名称节点会根据客户端发送的文件写入请求,向客户端反馈这多个sequencefile分别对应的存储地址,进而,客户端可以将这多个sequencefile分别上传至各存储地址所对应的数据节点;进而,客户端可以向mapreduce中的资源管理节点递交针对这多个sequencefile的任务,以请求mapreduce进行图片预处理操作。

mapreduce接收到客户端提交的任务后,mapreduce中的资源管理节点会将该任务划分为多个子任务,并将各个子任务相应地分配给多个第一计算节点,第一计算节点为mapreduce中多个计算节点中的任意一个节点。

当mapreduce中的资源管理节点以sequencefile作为输入时,通常会默认一个sequencefile对应一个子任务,进而,将该sequencefile分配至第一计算节点;在客户端做离线图片格式化处理的过程中,为了保证hdfs块的读取性能最优,客户端会控制sequencefile的大小与hdfs块的大小基本一致,如此,通常会生成数以百万计的sequencefile。mapreduce针对这数以百万计的sequencefile,相应地生成百万个子任务,由此将带来一个严重的问题:并发子任务数过多,而单个子任务数据过少,导致计算资源的利用率极低。

为了防止上述现象发生,在本申请实施例提供的图片处理系统中,mapreduce中的资源管理节点会自定义子任务生成方法,其在获取到多个sequencefile后,会这多个sequencefile进行解压处理得到图片数据,进而将多个图片数据按照分片大小划分成多个分片,将每个分片作为一个子任务分配给第一计算节点,分片的个数小于sequencefile的个数。

即,资源管理节点读取到多个sequencefile后,会解压并加载这多个sequencefile中包括的图片数据,当图片数据的数量累积达到预设分片大小后,将这些图片数据划分至一个子任务,分配给第一计算节点处理。

实验证明,当预设分片大小即分片数据阈值(splitsize)设置为64mb时,cpu计算最为集中,cpu资源的调度时间和map处理的平均时间最短,使得计算资源的利用率最高。

mapreduce中的第一计算节点用于调用映射map函数,根据子任务中的图片数据生成结构化数据,进而将所生成的结构化数据发送至资源管理节点。此处第一计算节点的具体处理方式,与上述图2所示的图片处理系统中第一计算节点的处理方式相类似,详细参见上述相关描述,此处不再赘述。

mapreduce中的资源管理节点获取到第一计算节点返回的结构化数据后,将这些结构化数据进一步分配给多个第二计算节点,以利用第二计算节点对结构化数据做进一步预处理,该第二计算节点为mapreduce中多个计算节点中的任意一个节点。

基于图片数据对深度神经网络模型进行训练时,通常要求训练数据集中的图片数据的随机打散的,在离线图片格式化处理阶段,客户端已对图片集中的图片数据做了一次随机打散处理,且保留了打散后的图片序号即索引文件中的索引行号。相应地,mapreduce中的资源管理节点获取到多个第一计算节点处理生成的结构化数据后,可以依据离线图片格式化处理阶段生成的图片序号,对所有结构化数据做一次全局排序,如此保证分布式预处理结束后得到的训练数据的排列顺序与离线图片格式化处理阶段图片数据的排列顺序一致,均是随机打散的。

应用hadoop系统处理图片数据时,为了保证最终得到的训练数据的排列顺序,与离线图片格式化处理过程中随机打散图片集后的图片数据的排列顺序是一致的;会重新自定义hadoop中partitioner的处理逻辑,使其在为第二计算节点分配结构化数据时,根据任务中图片索引顺序采样生成分割点,并根据分割点确定多个有序的全局区间段,进而,按照各全局区间段各自对应的顺序,向多个有序的第二计算节点分配对应的结构化数据,如此,保证第二计算节点处理后的训练数据的排序即为任务中图片索引顺序。

第二计算节点具体进行图片预处理操作时,调用归约reduce函数对结构化数据进行图片预处理操作;具体的,第二计算节点进行图片decode解码,生成rgb格式的图片到unit8像素格式,生成tfrecord数据,并将所生成的tfrecord数据上传至hdfs。

需要说明的是,通常情况下,计算节点中可以部署mapreduce程序,而mapreduce会同时包括mapper和reducer两部分,mapper部分可以理解为通过调用map函数实现相应映射功能,reducer部分可以理解为通过调用reduce函数实现相应归约功能,则利用第一计算节点根据图片数据生成结构化数据,实质上就是调用计算节点中配置的map函数对图片数据进行处理,生成结构化数据;利用第二计算节点对结构化数据进行图片预处理,实质上就是调用计算节点中配置的reduce函数做预处理操作。

需要说明的是,mapreduce在对图片数据进行处理的过程中,需要通过调用cpu资源和gpu资源来对图片数据进行处理,hadoop自身的资源调度器yarn可以支持cpu资源的调度,因此,如图3所示,在需要调用cpu资源时,mapreduce可以直接利用资源调度器yarn调用cpu资源。

对于gpu资源的调用,mapreduce可以启动第三方资源调度器,提供gpu资源调度接口;具体的,如图3所示,当mapreduce程序启动时,第二计算节点可以调用公共接口访问第三方资源调度器,第三方资源调度器在验证第二计算节点的指纹身份通过后,可以相应地按照第二计算节点的指纹向第二计算节点返回显卡标识,进而,配置第三方资源调度器的资源映射,例如,一个第二计算节点资源包括:cpu48cores,250gbmem,gpu8*teslam40,240gbmem,映射关系1teslam40→5cores,即5个第二计算节点复用一个gpu显卡,第三方资源调度器可以实时获取可调用的显卡标识。

需要说明的是,除了可以使用第三方资源调度器调用gpu资源外,还可以通过其他方式调用gpu资源;例如,使用可同时支持cpu调度和gpu调度的资源调度器,如kubernetes调度器,从而实现资源调度器的统一。

相比于传统的hadoop分布式系统仅能单纯地调用cpu计算资源,本申请实施例提供的图片处理系统引入了gpu资源调度,在reduce阶段支持gpu加速,如此保证计算机视觉图片处理的gpu资源被充分利用,同时支持训练数据集中图片数据的全局打散;此外,重新定义了hadoop的子任务生成逻辑,解决了hadoop对压缩文件的调度缺陷,保证reduce计算资源的集中,cpu资源利用率也得以提高。

针对上述实施例描述的图片处理系统,本申请实施例还提供了应用于客户端和应用于资源管理节点的图片处理方法,下面先对本申请实施例提供的客户端侧的图片处理方法进行介绍。

参见图4,图4为本申请实施例提供的客户端侧的图片处理方法的流程示意图;需要说明的是,该图片处理方法的执行主体即客户端,在实际应用中通常为服务器;如图4所示,该图片处理方法包括以下步骤:

步骤401:打散图片集并生成索引文件。

在需要针对特定的场景收集训练数据,对深度神经网络模型进行训练时,客户端可以针对该特定的场景采集大量图片数据,并利用所采集的这些图片数据生成图片集;具体采集图片数据时,客户端可以与终端设备和/或相关服务器通讯,从这些设备处获取用于训练深度神经网络模型的图片数据,当然,客户端也可以通过其他方式获取图片数据生成图片集,在此不对客户端获取图片数据的方式做任何限定。

由于存在一定排布规律的图片数据不利于训练深度神经网络模型,因此,客户端会对图片集中的图片数据进行随机打散处理,以保证打散处理后的图片集中的图片数据随机分布,进而利用打散处理后得到的图片数据生成索引文件。

需要说明的是,索引文件中图片数据的存储格式通常为<索引行号,图片数据>,其中,索引行号是指图片集被打散后图片数据对应的排列序号,图片数据具体可以包括:图片原数据和图片属性数据,图片属性数据具体可以包括:图片类别、图片长度、图片宽度和图片通道数等,当然,图片属性数据还可以包括其他数据,在此不对图片属性数据中包括的数据做任何限定。

步骤402:基于所述索引文件将所述图片集切分成多个顺序文件。

生成索引文件后,客户端可以进一步基于所生成的索引文件,将打散后的图片集切分为多个顺序排列的顺序文件;具体的,客户端可以通过对索引文件中索引行号相邻的多个图片数据做压缩处理,生成一个顺序文件,由此根据打散图片集后所生成的所有索引文件相应地生成多个顺序文件。

需要说明的是,顺序文件的格式通常为<索引行号,序列化的图片数据>,其中,索引行号为顺序文件对应的排列序号,该索引行号是根据顺序文件中包括的各图片数据的索引行号确定的,序列化的图片数据由顺序文件中包括的各图片数据构成,在序列化的图片数据中各图片数据按照其对应的索引行号排列。

需要说明的是,当所应用的分布式存储系统为hdfs时,客户端为了保证hdfs块具有最优的读取性能;客户端在切分顺序文件时,可以按照hdfs的块大小,基于各个索引文件将图片集依次切分成多个顺序文件,每个顺序文件的大小等于hdfs的块大小。

步骤403:将所述多个顺序文件上传至所述分布式存储系统,得到所述多个顺序文件对应的存储地址。

客户端向分布式存储系统上传多个顺序文件时,会先向分布式存储系统中的名称节点发送文件写入请求,该文件写入请求中携带有所要上传的各顺序文件的大小;名称节点根据各顺序文件的大小以及分布式存储系统中的各数据节点当前的配置情况,相应地为各顺序文件分配数据节点,并向客户端返回用于存储各顺序文件的数据节点的存储地址;进而,客户端可以相应地根据各顺序文件各自对应的存储地址,将各顺序文件相应地存储至分布式存储系统中的数据节点。

步骤404:根据所述存储地址向所述资源管理节点提交针对所述多个顺序文件的任务,以请求分布式计算系统对所述多个顺序文件进行并行地图片预处理操作得到训练数据上传至所述分布式存储系统,使得所述分布式存储系统中存储的训练数据集的训练数据顺序与所述索引文件顺序相同。

客户端还需要根据各顺序文件各自对应的存储地址,向分布式计算系统中的资源管理节点提交针对这多个顺序文件的任务,以使分布式计算系统对这些顺序文件中的图片数据做预处理,生成可以用于训练深度神经网络模型的训练数据,以及分布式计算系统在得到训练数据后将其上传至分布式存储系统,从而使得分布式存储系统中存储的训练数据集的训练数据顺序与索引文件顺序相同。

在上述图片处理方法中,客户端通过会对图片集进行打散处理,保证用于训练神经网络模型的训练数据集中的图片数据是随机打散的,并且在分布式计算系统对图片数据做预处理,以及分布式存储系统对图片数据进行存储的过程中,均会采取特定的处理方式,保证最终存储的训练数据集的训练数据顺序与客户端打散处理后的索引文件顺序相同,以为模型训练提供可靠的训练数据集;此外,该图片处理方法还基于分布式存储系统为海量图片数据提供可靠的存储方式,基于分布式计算系统对海量图片数据进行高效地预处理操作,同时保证满足对于海量图片数据的存储要求以及预处理要求。

接下来,对本申请实施例提供的资源管理节点侧的图片处理方法进行介绍。参见图5,图5为本申请实施例提供的资源管理节点侧的图片处理方法的流程示意图;需要说明的是,该图片处理方法的执行主体即资源管理节点,在实际应用中通常为服务器;如图5所示,该图片处理方法包括以下步骤:

步骤501:接收针对多个顺序文件的任务。

步骤502:从分布式存储系统中读取所述任务对应的多个顺序文件,将所述任务划分成多个子任务,将所述多个子任务分配给多个第一计算节点,所述第一计算节点为分布式计算系统中的任一计算节点。

分布式计算系统中的资源管理节点接收到客户端发起的任务后,相应地从各顺序文件对应的存储地址处,获取客户端上传至分布式存储系统中的多个顺序文件;进而,资源管理节点根据这多个顺序文件,将客户端发起的任务划分为多个子任务,并将这些子任务分配给多个第一计算节点,以利用这些第一计算节点相应地处理这些子任务,此处的第一计算节点可以为分布式计算系统中多个计算节点中的任意一个节点。

具体实现时,资源管理节点从分布式存储系统中获取到多个顺序文件后,可以针对客户端发起的任务,解压并获取多个顺序文件得到图片数据,将多个图片数据按照分片大小划分成多个分片,将每个分片作为一个子任务分配给多个第一计算节点,所划分出的分片数通常小于顺序文件的个数。

具体的,资源管理节点获取到多个顺序文件后,可以先对这多个顺序文件进行解压处理,得到各个顺序文件中包括的图片数据;需要说明的是,对各个顺序文件进行解压处理后,可以按照各个顺序文件各自对应的索引序号,相应地对解压顺序文件得到的图片数据进行排序,以保证解压各个顺序文件得到的图片数据的排列顺序,与客户端对图片集进行打散处理后得到的各图片数据的排列顺序一致。

解压各个顺序文件得到其中包括的图片数据后,资源管理节点可以按照分片大小,将多个图片数据合并为一个分片,此处的分片大小可以根据实际需求来设定;进而,将合并出的各个分片相应地分配给各个第一计算节点,以使各第一计算节点相应地处理为其分配的分片中的图片数据。

在一种可能的实现方式中,资源管理节点可以根据各个第一计算节点的配置情况,相应地设置每个分片大小;即,资源管理节点可以按照解压得到的各图片数据的排列顺序,将与每个分片大小对应的图片数据,相应地分配至各个子任务中,从而保证各第一计算节点的计算资源被充分利用。

在另一种可能的实现方式中,资源管理节点可以为各个分片设置统一的数据阈值,当分片中的图片数据达到该数据阈值时,相应地生成一个子任务,并将其分配给第一计算节点处理。

当然,除了上述两种方式外,资源管理节点还可以采取其他方式生成多个子任务,在此不对资源管理节点生成子任务的方式做任何限定。

步骤503:接收所述第一计算节点返回的针对所述任务的结构化数据。

第一计算节点获取到资源管理节点分配的子任务后,从该子任务中读取图片数据,并将其填入特定的训练数据结构生成结构化数据,进而向资源管理节点发送其生成的结构化数据。

需要说明的是,结构化数据的格式通常为<索引行号,结构化图片数据>,其中,索引行号与客户端所发起的任务中的图片索引顺序对应,即该索引行号与客户端生成的索引文件的索引行号相对应;结构化图片数据对应于特定的数据结构,在结构化图片数据对应的数据结构中图片原数据以及各个图片属性数据分别对应不同的存储位置。

步骤504:按照所述任务中图片索引顺序,将所述任务对应的所述结构化数据分配给多个第二计算节点,以控制所述第二计算节点针对所述结构化数据进行图片预处理操作得到训练数据,并将其按照顺序上传至所述分布式存储系统,所述第二计算节点为所述分布式计算系统中的任一计算节点。

资源管理节点接收到第一计算节点返回的结构化数据后,根据任务中图片索引顺序,即根据各结构化数据各自对应的索引行号,相应地将各结构化数据分配至多个第二计算节点,以使第二计算节点针对为其分配的结构化数据进行图片预处理操作得到训练数据,并将所生成的训练数据按序上传至分布式存储系统中;此处的第二计算节点为分布式计算系统中多个计算节点中的任意一个节点。

需要说明的是,第二计算节点与第一计算节点可以为同一个计算节点,即在同一计算节点上可以既配置第一计算节点的处理程序,又配置第二计算节点的处理程序;当然,第二计算节点与第一计算节点也可以为不同的计算节点,在此不对第一计算节点和第二计算节点的分布情况做任何限定。

具体实现时,资源管理节点可以根据任务中图片索引顺序,采样生成分割点,根据各分割点确定多个有序的全局区间段,按照全局区间段的顺序向多个有序的第二计算节点分配对应的结构化数据。

具体的,资源管理节点按照各结构化数据各自对应的索引行号,将各第一计算节点返回的结构化数据排列起来,然后基于按序排列的结构化数据生成分割点,根据所生成的分割点对顺序排列的结构化数据进行分割,以得到多个有序的全局区间段,每个全局区间段中包括多个顺序排列的结构化数据;进而,按照各全局区间段的顺序,向多个有序的第二计算节点分配对应的结构化数据,从而保证按照各第二计算节点对应的顺序,对各第二计算节点处理得到的训练数据进行排序处理,所得到的训练数据的顺序与客户端打散图片集生成的索引文件的排列顺序一致。

在上述图片处理方法中,资源管理节点从分布式存储系统中读取自身接收的任务对应的多个顺序文件,将该任务划分成多个子任务,将多个子任务分配给多个第一计算节点;接收到第一计算节点返回的结构化数据后,按照任务中图片索引顺序,将任务对应的结构化数据分配给多个第二计算节点,以控制第二计算节点对结构化数据进行图片预处理操作得到训练数据,并将其按序上传至分布式存储系统;该方法基于分布式存储系统为海量图片数据提供可靠的存储方式,基于分布式计算系统对海量图片数据进行高效地预处理操作,同时保证满足对于海量图片数据的存储要求以及预处理要求;此外,在分布式计算系统对图片数据做预处理,以及分布式存储系统对图片数据进行存储的过程中,均会采取特定的处理方式保证最终获得的用于训练神经网络模型的训练数据集中的图片数据是打散的。

针对上文描述的图片处理方法,本申请还提供了对应的图片处理装置,以使上述图片处理方法在实际中得以应用和实现。

参见图6,图6是与上文图4所示的图片处理方法对应的一种图片处理装置600的结构示意图,该图片处理装置600包括:

全局打散模块601,用于打散图片集并生成索引文件;

切分模块602,用于基于所述索引文件将所述图片集切分成多个顺序文件;

存储模块603,用于将所述多个顺序文件上传至分布式存储系统得到所述多个顺序文件的存储地址;

任务提交模块604,用于根据所述存储地址向所述资源管理节点提交针对所述多个顺序文件的任务,以请求分布式计算系统对所述多个顺序文件进行并行地图片预处理操作得到训练数据上传至所述分布式存储系统,使得所述分布式存储系统中存储的训练数据集的训练数据顺序与所述索引文件顺序相同。

可选的,在图6所示的图片处理装置的基础上,所述分布式存储系统为分布式文件系统,其中,切分模块602具体用于:

按照所述分布式文件系统的块大小,基于所述索引文件将所述图片集依次切分成所述多个顺序文件,每个顺序文件的大小等于所述分布式文件系统的块大小。

在上述图片处理装置中,客户端通过会对图片集进行打散处理,保证用于训练神经网络模型的训练数据集中的图片数据是随机打散的,并且在分布式计算系统对图片数据做预处理,以及分布式存储系统对图片数据进行存储的过程中,均会采取特定的处理方式,保证最终存储的训练数据集的训练数据顺序与客户端打散处理后的索引文件顺序相同,以为模型训练提供可靠的训练数据集;此外,该图片处理装置还基于分布式存储系统为海量图片数据提供可靠的存储方式,基于分布式计算系统对海量图片数据进行高效地预处理操作,同时保证满足对于海量图片数据的存储要求以及预处理要求。

参见图7,图7是与上文图5所示的图片处理方法对应的一种图片处理装置700的结构示意图,该图片处理装置700包括:

第一接收模块701,用于接收针对多个顺序文件的任务;

第一分配模块702,用于从分布式存储系统中读取所述任务对应的多个顺序文件,将所述任务划分成多个子任务,将所述多个子任务分配给多个第一计算节点,所述第一计算节点为分布式计算系统中的任一计算节点;

第二接收模块703,用于接收所述第一计算节点返回的针对所述任务的结构化数据;

第二分配模块704,用于按照所述任务中图片索引顺序,将所述任务对应的所述结构化数据分配给多个第二计算节点,以控制所述第二计算节点针对所述结构化数据进行图片预处理操作得到对应的训练数据,并将其按照顺序上传至所述分布式存储系统,所述第二计算节点为分布式存储计算系统中的任一计算节点。

可选的,在图7所示的图片处理装置的基础上,所述第二分配模块704具体用于:

根据所述任务中图片索引顺序,采样生成分割点,根据所述分割点确定多个有序的全局区间段,按照全局区间段的顺序向多个有序的第二计算节点分配对应的所述结构化数据。

可选的,在图7所示的图片处理装置的基础上,所述第一分配模块702具体用于:

针对所述任务,解压并获取所述多个顺序文件得到图片数据,将所述多个图片数据按照分片大小划分成多个分片,将每个分片作为一个子任务分配给所述第一计算节点,所述分片的个数小于所述顺序文件的个数。

在上述图片处理装置中,资源管理节点从分布式存储系统中读取自身接收的任务对应的多个顺序文件,将该任务划分成多个子任务,将多个子任务分配给多个第一计算节点;接收到第一计算节点返回的结构化数据后,按照任务中图片索引顺序,将任务对应的结构化数据分配给多个第二计算节点,以控制第二计算节点对结构化数据进行图片预处理操作得到训练数据,并将其按序上传至分布式存储系统;该装置基于分布式存储系统为海量图片数据提供可靠的存储方式,基于分布式计算系统对海量图片数据进行高效地预处理操作,同时保证满足对于海量图片数据的存储要求以及预处理要求;此外,在分布式计算系统对图片数据做预处理,以及分布式存储系统对图片数据进行存储的过程中,均会采取特定的处理方式保证最终获得的用于训练神经网络模型的训练数据集中的图片数据是打散的。

本申请还提供了一种图片处理设备,该设备具体可以为服务器,图8是本申请实施例提供的一种服务器结构示意图,该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。

服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作系统841,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的步骤可以基于该图8所示的服务器结构。

当该服务器作为客户端时,cpu822用于执行如下步骤:

打散图片集并生成索引文件;

基于所述索引文件将所述图片集切分成多个顺序文件;

将所述多个顺序文件上传至所述分布式存储系统,得到所述多个顺序文件对应的存储地址;

根据所述存储地址向所述资源管理节点提交针对所述多个顺序文件的任务,以请求分布式计算系统对所述多个顺序文件进行并行地图片预处理操作得到训练数据上传至所述分布式存储系统,使得所述分布式存储系统中存储的训练数据集的训练数据顺序与所述索引文件顺序相同。

可选的,cpu822还可以执行本申请实施例中客户端侧的图片处理方法任一具体实现方式的方法步骤。

当该服务器作为资源管理节点时,cpu822具体用于执行如下步骤:

接收针对多个顺序文件的任务;

从分布式存储系统中读取所述任务对应的多个顺序文件,将所述任务划分成多个子任务,将所述多个子任务分配给多个第一计算节点,所述第一计算节点为分布式计算系统中的任一计算节点;

接收所述第一计算节点返回的针对所述任务的结构化数据;

按照所述任务中图片索引顺序,将所述任务对应的所述结构化数据分配给多个第二计算节点,以控制所述第二计算节点针对所述结构化数据进行图片预处理操作得到训练数据,并将其按照顺序上传至所述分布式存储系统,所述第二计算节点为所述分布式计算系统中的任一计算节点。

可选的,cpu822还可以执行本申请实施例中资源管理节点侧的图片处理方法任一具体实现方式的方法步骤。

本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种图片处理方法中的任意一种实施方式。

本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的一种图片处理方法中的任意一种实施方式。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1