CN110908784B - 图像标注方法、装置、设备及存储介质 - Google Patents

图像标注方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110908784B
CN110908784B CN201911099856.8A CN201911099856A CN110908784B CN 110908784 B CN110908784 B CN 110908784B CN 201911099856 A CN201911099856 A CN 201911099856A CN 110908784 B CN110908784 B CN 110908784B
Authority
CN
China
Prior art keywords
downloading
image
thread
downloaded
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911099856.8A
Other languages
English (en)
Other versions
CN110908784A (zh
Inventor
戈洋洋
黄淋淋
朱峻林
李景才
王秀峰
方啸
侯广大
刘晨楠
林辰
堵明明
蒋子赟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhijia Usa
Suzhou Zhijia Technology Co Ltd
Original Assignee
Zhijia Usa
Suzhou Zhijia Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhijia Usa, Suzhou Zhijia Technology Co Ltd filed Critical Zhijia Usa
Priority to CN201911099856.8A priority Critical patent/CN110908784B/zh
Publication of CN110908784A publication Critical patent/CN110908784A/zh
Application granted granted Critical
Publication of CN110908784B publication Critical patent/CN110908784B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种图像标注方法、装置、设备及存储介质,属于人工智能技术领域。本申请通过线程池,来执行图像下载任务,通过主线程,来执行图像标注的任务,由于线程池和主线程相互独立,线程池执行任务的过程和主线程执行任务的过程不会相互干扰,避免了图像下载任务对图像标注任务造成阻塞。利用线程池中的各个下载线程,以异步的方式来下载图像集中的各个图像,免去了同一时刻只能下载一个图像、图像下载完成后才能下载其他图像或者标注其他图像所带来的时间成本,使得图像集中的不同图像能够并行下载,能够极大地节省图像标注的时间,提高了图像标注的效率和性能。

Description

图像标注方法、装置、设备及存储介质
技术领域
本申请涉及人工智能技术领域,特别涉及一种图像标注方法、装置、设备及存储介质。
背景技术
在人工智能技术以及机器学习技术中,为了通过模型来识别出图像的类别,通常会预先对图像集中的图像进行标注,利用已标注的图像集,对模型进行训练,以使模型在训练的过程中,通过图像和图像的标签,学习出如何预测一张未知图像的类别。由此可见,图像标注的过程对于人工智能技术而言是至关重要的。
目前,图像标注的方法通常是:当要对某个网站的图像集进行标注时,浏览器的主线程,以同步的方式,逐个下载图像集中的每个图像,并逐个标注图像集中的每个图像。以图像集包括N个图像为例,浏览器的主线程会将每个图像的下载过程分别作为一个任务,将每个图像的标注过程也分别作为一个任务,得到N个下载任务和N个标注任务,然后在每个时间点执行其中的一个任务,当执行该任务完成后,再执行下一个任务。其中,N为正整数。
采用上述方法时,一旦浏览器的主线程执行图像下载任务,则浏览器的主线程无法执行图像标注任务,使得图像标注任务需要等待图像下载任务执行完成后才能执行,因此,图像下载任务会阻塞图像标注任务,导致图像标注任务的执行速度过慢,致使图像标注的效率低下。
发明内容
本申请实施例提供了一种图像标注方法、装置、设备及存储介质,能够解决相关技术中图像下载任务阻塞图像标注任务导致图像标注效率低下的问题。
所述技术方案如下:
一方面,提供了一种图像标注方法,所述方法包括:接收下载指令,所述下载指令用于指示通过浏览器下载待标注的图像集;为所述浏览器创建线程池,所述线程池包括至少一个下载线程,每个下载线程为独立与所述浏览器的主线程的线程;通过所述至少一个下载线程,对所述图像集进行异步下载;通过所述浏览器的主线程,对所述图像集中已下载的图像进行标注。
可选地,所述通过所述至少一个下载线程,对所述图像集进行异步下载,包括:将所述图像集中每个图像的地址添加至目标队列;对于所述至少一个下载线程中的每个下载线程,通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址;通过所述下载线程,根据所述目标图像的地址下载所述目标图像。
可选地,所述通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址,包括:通过所述下载线程,检测所述目标图像的状态;如果所述目标图像处于未下载状态,通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址;所述通过所述下载线程,根据所述目标图像的地址下载所述目标图像之后,所述方法还包括:如果检测到所述目标图像已下载成功,通过所述下载线程,将所述目标队列中所述目标图像的状态更新为已下载状态;或者,通过所述下载线程,从所述目标队列中删除所述目标图像的地址。
可选地,所述为所述浏览器创建线程池,包括:根据所述图像集中待下载的图像数量,确定下载线程的目标数量,创建具有所述目标数量个下载线程的线程池,所述下载线程的目标数量和所述待下载的图像数量正相关;或者,创建具有预设数量个下载线程的线程池。
可选地,所述为所述浏览器创建线程池之后,所述方法还包括:检测所述线程池中处于空闲状态的下载线程的数量,如果所述下载线程的数量低于第一阈值,创建下载线程,将创建的下载线程添加至所述线程池;或者,检测所述线程池中处于空闲状态的下载线程的数量,如果所述下载线程的数量高于第二阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程;或者,检测所述图像集中待下载的图像数量,如果所述待下载的图像数量低于第三阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程;或者,检测所述图像集中已下载的图像数量,如果所述已下载的图像数量高于第四阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程。
可选地,所述通过所述至少一个下载线程,对所述图像集进行异步下载之后,所述方法还包括:当检测到所述图像集中的每个图像均已下载完成时,释放所述线程池中的每个下载线程。
可选地,所述为所述浏览器创建线程池,包括:通过服务工作者脚本,创建多个服务工作者,作为所述线程池。
另一方面,提供了一种图像标注装置,所述装置包括:
接收模块,用于接收下载指令,所述下载指令用于指示通过浏览器下载待标注的图像集;创建模块,用于为所述浏览器创建线程池,所述线程池包括至少一个下载线程,每个下载线程为独立与所述浏览器的主线程的线程;下载模块,用于通过所述至少一个下载线程,对所述图像集进行异步下载;标注模块,用于通过所述浏览器的主线程,对所述图像集中已下载的图像进行标注。
可选地,所述下载模块,包括:添加子模块,用于将所述图像集中每个图像的地址添加至目标队列;读取子模块,用于对于所述至少一个下载线程中的每个下载线程,通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址;下载子模块,用于通过所述下载线程,根据所述目标图像的地址下载所述目标图像。
可选地,所述下载模块,还包括:检测子模块,用于通过所述下载线程,检测所述目标图像的状态;所述读取子模块,用于如果所述目标图像处于未下载状态,通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址;所述装置还包括:更新模块,用于如果检测到所述目标图像已下载成功,通过所述下载线程,将所述目标队列中所述目标图像的状态更新为已下载状态;或者,通过所述下载线程,从所述目标队列中删除所述目标图像的地址。
可选地,所述装置还包括:确定模块,用于根据所述图像集中待下载的图像数量,确定下载线程的目标数量;所述创建模块,用于创建具有所述目标数量个下载线程的线程池,所述下载线程的目标数量和所述待下载的图像数量正相关。
可选地,所述创建模块,用于创建具有预设数量个下载线程的线程池。
可选地,所述装置还包括:检测模块,用于检测所述线程池中处于空闲状态的下载线程的数量;所述创建模块,还用于如果所述下载线程的数量低于第一阈值,创建下载线程,将创建的下载线程添加至所述线程池。
可选地,所述装置还包括:检测模块,用于检测所述线程池中处于空闲状态的下载线程的数量;释放模块,用于如果所述下载线程的数量高于第二阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程。
可选地,所述装置还包括:检测模块,用于检测所述图像集中待下载的图像数量;释放模块,用于如果所述待下载的图像数量低于第三阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程。
可选地,所述装置还包括:检测模块,用于检测所述图像集中已下载的图像数量;释放模块,用于如果所述已下载的图像数量高于第四阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程。
可选地,所述装置还包括:释放模块,用于当检测到所述图像集中的每个图像均已下载完成时,释放所述线程池中的每个下载线程。
可选地,所述创建模块,用于通过服务工作者脚本,创建多个服务工作者,作为所述线程池。
另一方面,提供了一种电子设备,所述电子设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现上述图像标注方法所执行的操作。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现上述图像标注方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果至少包括:
本实施例提供的方法,通过线程池,来执行图像下载任务,通过主线程,来执行图像标注的任务,由于线程池和主线程相互独立,线程池执行任务的过程和主线程执行任务的过程不会相互干扰,从而避免了图像下载任务对图像标注任务造成阻塞。尤其是,利用线程池中的各个下载线程,以异步的方式来下载图像集中的各个图像,免去了同一时刻只能下载一个图像、该图像下载完成后才能下载另一个图像会带来的时间成本,使得图像集中的不同图像能够并行下载。因此,该方法能够极大地节省图像标注的时间,从而提高了图像标注的效率和性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种图像标注系统的架构图;
图2是本申请实施例提供的一种图像标注方法的流程图;
图3是本申请实施例提供的一种图像标注方法的流程图;
图4是本申请实施例提供的一种图像标注方法的流程图;
图5是本申请实施例提供的一种图像标注装置的结构示意图;
图6是本申请实施例提供的一种终端的结构示意图;
图7是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请中术语“多个”的含义是指两个或两个以上,例如,多个数据包是指两个或两个以上的数据包。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
以下,对本申请涉及的术语进行介绍:
服务工作者(service worker):是一种线程。从实质上来说,service worker是一段运行在浏览器后台进程里的脚本程序,service worker可以和浏览器的前台页面相互独立,也即是,可以和浏览器的主线程分开运行,因此可以避免对浏览器的主线程造成阻塞。service worker可以用来缓存通过浏览器下载的资源。service worker的一大优势是,能够提供离线下载(Offline First)的功能。具体的技术原理是,在运行service worker的过程中,可以监听来自浏览器页面的网络请求,拦截网络请求,先访问本地的缓存,如果从本地缓存找到请求的数据,则将数据返回给用户,如果从本地缓存没有找到请求的数据,再发送网络请求。因此,可以在已缓存数据的情况下,直接利用本地缓存来得到数据,免去通过网络去请求远端服务器带来的开销,从而达到离线下载的效果。
在本申请的一些实施例中,可以将service worker配置为下载线程池中的下载线程,利用service worker来下载需要标注的图像,从而避免图像下载任务阻塞浏览器的主线程。
同步:是一种计算机执行任务的方式。如果以同步的方式执行多个任务,需要等待当前任务执行完成后,才能执行下一个任务。
同步下载:是指以同步的方式执行下载任务。以下载图像的场景为例,主线程向服务器发送下载图像的请求后,会暂停其他任务,等待服务器返回图像后,才会继续执行其他任务。同步下载会导致下载任务阻塞主线程,前台表现通常是,当下载大量图像时,网页会出现卡顿,渲染速度很慢。
异步:是一种计算机执行任务的方式。如果以异步的方式执行多个任务,不同任务可以并行处理,后一个任务的执行可以无需等待前一个任务执行完成、
异步下载:是指以异步的方式执行下载任务。以下载图像的场景为例,在主线程执行图像标注、页面渲染等任务的过程中,后台线程可以向服务器发送下载图像的请求后,接收服务器返回的图像,因此可以避免下载任务阻塞主线程。
以下,示例性介绍本申请的应用场景。
在自动驾驶领域,汽车在驾驶过程中,汽车要准确识别出车身周围的场景和物体,以便根据周围的场景和物体,对驾驶动作进行精准的控制。因此,汽车通常会携带各类传感器和摄像头,以便利用携带的传感器和摄像头,实时采集各类图像,将图像发送给控制系统,控制系统可以利用图像来进行实时处理和决策,从而实现自动驾驶的功能。有鉴于此,图像的识别能力,是自动驾驶领域极为重要的研究内容。
图像的识别能力通常是利用已标注的图像集训练得到的。具体地,在汽车驾驶过程中,可以实时采集到图像,通过预先对采集的图像进行标注,比如标注该图像是道路、障碍物还是行人等,使用已标注的图像训练模型后,能够让控制系统在实际驾驶过程中,当采集到未知的图像时,能够利用已训练的模型,从图像中识别出所处的场景以及周围的物体。
目前,图像的标注过程通常是在浏览器上进行的,而浏览器通常仅有一个唯一的主线程,页面的所有处理任务时均由该主线程进行,导致每次加载图像时,由于主线程在执行加载图像的任务,其他任务需要进行等待,导致其他任务被阻塞。尤其是,当数据集庞大,所需标注的图像很多,如此频繁且大数据量的网络请求,会严重影响标注的速度。针对这种情况,本申请实施例提供了能够实现图像的异步下载功能和离线缓存功能的方法,能有效加快图像的标注过程,提升图像标注的效能。
以下,示例性介绍本申请的系统架构。
图1是本申请实施例提供的一种图像标注系统的系统架构图。该图像标注系统包括:终端110和图像标注平台120。终端110通过无线网络或有线网络与图像标注平台120相连。
终端110可以是智能手机、游戏主机、台式计算机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器或MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器和膝上型便携计算机中的至少一种。终端110安装和运行有支持图像标注的应用程序。应用程序可以是图像标注工具,应用程序可以具有专用的客户端,也可以通过浏览器在网页中运行。示例性的,终端110是用户使用的终端,终端110中运行的应用程序内登录有用户账号。
图像标注平台120包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。图像标注平台120用于为支持图像标注的应用程序提供后台服务。可选地,图像标注平台120承担主要标注工作,终端110承担次要标注工作;或者,图像标注平台120承担次要标注工作,终端110承担主要标注工作;或者,图像标注平台120或终端110分别可以单独承担标注工作。
可选地,图像标注平台120包括:图像标注服务器1201和数据库1202。图像标注服务器1201用于提供图像标注有关的后台服务。图像标注服务器1201可以是一台或多台。当图像标注服务器1201是多台时,存在至少两台图像标注服务器1201用于提供不同的服务,和/或,存在至少两台图像标注服务器1201用于提供相同的服务,比如以负载均衡方式提供同一种服务,本申请实施例对此不加以限定。图像标注服务器1201中可以设置有图像标注模型。数据库1202可以用于存储未标注的图像集或已标注的图像集,当终端110发起请求时,图像标注服务器1201可以访问数据库1202,得到终端110请求的图像集,返回给终端110。
终端110可以泛指多个终端中的一个,本实施例仅以终端110来举例说明。
本领域技术人员可以知晓,上述终端110以及图像标注服务器1201的数量可以更多或更少。比如上述终端110以及图像标注服务器1201可以仅为一个,或者上述终端110以及图像标注服务器1201为几十个或几百个,或者更多数量,此时上述图像标注系统还包括其他终端以及其他图像标注服务器。本申请实施例对终端和图像标注服务器的数量和设备类型均不加以限定。
以下,示例性介绍本申请实施例提供的方法流程。
图2是本申请实施例提供的一种图像标注方法的流程图,该实施例的执行主体可以为电子设备,参见图2,该方法包括:
201、接收下载指令,下载指令用于指示通过浏览器下载待标注的图像集。
202、为浏览器创建线程池,线程池包括至少一个下载线程,每个下载线程为独立与浏览器的主线程的线程。
203、通过至少一个下载线程,对图像集进行异步下载。
204、通过浏览器的主线程,对图像集中已下载的图像进行标注。
本实施例提供的方法,通过线程池,来执行图像下载任务,通过主线程,来执行图像标注的任务,由于线程池和主线程相互独立,线程池执行任务的过程和主线程执行任务的过程不会相互干扰,从而避免了图像下载任务对图像标注任务造成阻塞。尤其是,利用线程池中的各个下载线程,以异步的方式来下载图像集中的各个图像,免去了同一时刻只能下载一个图像、该图像下载完成后才能下载另一个图像会带来的时间成本,使得图像集中的不同图像能够并行下载。因此,该方法能够极大地节省图像标注的时间,从而提高了图像标注的效率和性能。
可选地,通过至少一个下载线程,对图像集进行异步下载,包括:
将图像集中每个图像的地址添加至目标队列;
对于至少一个下载线程中的每个下载线程,通过下载线程,从目标队列,读取图像集中目标图像的地址;
通过下载线程,根据目标图像的地址下载目标图像。
可选地,通过下载线程,从目标队列,读取图像集中目标图像的地址,包括:通过下载线程,检测目标图像的状态;如果目标图像处于未下载状态,通过下载线程,从目标队列,读取图像集中目标图像的地址;
通过下载线程,根据目标图像的地址下载目标图像之后,方法还包括:如果检测到目标图像已下载成功,通过下载线程,将目标队列中目标图像的状态更新为已下载状态;或者,通过下载线程,从目标队列中删除目标图像的地址。
可选地,为浏览器创建线程池,包括:
根据图像集中待下载的图像数量,确定下载线程的目标数量,创建具有目标数量个下载线程的线程池,下载线程的目标数量和待下载的图像数量正相关;或者,创建具有预设数量个下载线程的线程池。
可选地,为浏览器创建线程池之后,方法还包括:
检测线程池中处于空闲状态的下载线程的数量,如果下载线程的数量低于第一阈值,创建下载线程,将创建的下载线程添加至线程池;或者,
检测线程池中处于空闲状态的下载线程的数量,如果下载线程的数量高于第二阈值,从线程池中释放一个或多个处于空闲状态的下载线程;或者,
检测图像集中待下载的图像数量,如果待下载的图像数量低于第三阈值,从线程池中释放一个或多个处于空闲状态的下载线程;或者,
检测图像集中已下载的图像数量,如果已下载的图像数量高于第四阈值,从线程池中释放一个或多个处于空闲状态的下载线程。
可选地,通过至少一个下载线程,对图像集进行异步下载之后,方法还包括:当检测到图像集中的每个图像均已下载完成时,释放线程池中的每个下载线程。
可选地,为浏览器创建线程池,包括:
通过服务工作者脚本,创建多个服务工作者,作为线程池。
图3是本申请实施例提供的一种图像标注方法的流程图。该实施例的执行主体为电子设备,参见图3,该方法包括:
301、电子设备接收下载指令。
下载指令用于指示通过浏览器下载待标注的图像集。下载指令可以通过对浏览器的操作触发,电子设备可以在浏览器上接收到该下载指令。下载指令可以携带图像集的标识,该图像集的标识用于标识对应的图像集,例如可以是图像集的ID、名称或编号等。此外,该下载指令还可以携带图像集的地址,该图像集的地址可以是服务器的地址,比如可以是提供该数据集的网站的地址。
图像集可以包括一个或多个待标注的图像。图像可以包括人、物品、动物、场景等。例如,应用在自动驾驶的场景,图像集可以是车辆图像集、行人图像集、环境图像集、建筑图像集、道路图像集、天气图像集或者交通图像集中的至少一种,通过对这些图像集进行标注,后续利用已标注的图像集进行模型训练后,车辆利用模型,能够在驾驶过程中,通过实时采集的图像,精确地识别出旁边的车辆、附近的行人、所处的环境、周围的建筑、行驶的道路、当前的天气或者实时交通情况,从而感知周围的环境,以便根据环境,自动确定出驾驶策略。
在一个示例性应用场景中,当用户想要下载某个网站提供的图像集,以对该图像集进行标注时,可以在浏览器上输入该网站的网址,电子设备可以通过该浏览器显示该网站的页面,用户可以在该网站的页面上对该数据集触发下载操作,则电子设备会接收到下载指令。
302、电子设备为浏览器创建主线程和线程池。
本实施例中,可以通过线程池,来执行图像下载任务,通过主线程,来执行浏览器的其他任务,线程池中的每个下载线程和主线程相互独立,因此线程池执行任务的过程和主线程执行任务的过程不会相互干扰,因此图像下载任务和其他任务得以并行执行,能够避免图像下载任务阻塞其他任务。
主线程至少用于对图像集中已下载的图像进行标注。此外,主线程还可以用于处理浏览器的其他任务,例如,主线程可以用于对浏览器的网页进行渲染。
线程池包括至少一个下载线程,每个下载线程用于下载图像集中的图像,每个下载线程为独立与浏览器的主线程的线程。
在一些实施例中,可以利用Service Worker(服务工作者)技术来创建下载线程。具体地,可以运行Service Worker脚本,通过Service Worker脚本,创建多个ServiceWorker,作为线程池。通过这种方式,每个Service Worker被配置为下载线程,ServiceWorker组成的worker池(工作者池)被配置为用于下载图像的线程池。
在一些实施例中,线程池在创建时包含的下载线程数量可以根据多种方式确定,以下通过实现方式一至实现方式二进行举例说明:
实现方式一、预先设定。
具体地,开发人员可以依据经验预先配置预设数量,电子设备可以创建具有预设数量个下载线程的线程池。其中,预设数量可以是大于或者等于5的数值。例如,如果预设数量设定为7,电子设备会创建包含7个下载线程的线程池。
实现方式二、根据待下载的图像数量确定。
具体地,电子设备可以获取图像集中待下载的图像数量,根据图像集中待下载的图像数量,确定下载线程的目标数量,创建具有目标数量个下载线程的线程池。
其中,目标数量为待创建出的下载线程的数量,下载线程的目标数量和待下载的图像数量正相关。在一些可能的实施例中,可以建立图像集中图像数量与下载线程的数量之间的映射关系,接收到下载指令时,可以根据图像集中待下载的图像数量,查询映射关系,得到待下载的图像数量对应的目标数量。示例性地,该映射关系可以如下表1所示,那么,如果图像集中包含500张待下载的图像,则会创建包含10个下载线程的线程池。
表1
图像数量 下载线程的数量
100张图像 5个下载线程
500张图像 10个下载线程
800张图像 15个下载线程
通过实现方式二,如果需要下载的图像数量越多,则创建的下载线程的数量越多,以便通过更多的下载线程来下载图像,那么,如果要下载庞大的数据集,可以通过这种方式加速下载过程,节省下载的耗时。
303、电子设备通过至少一个下载线程,对图像集进行异步下载。
本实施例中,可以利用线程池,以异步的方式下载图像集。通过异步下载的方式,不同下载线程可以并行下载不同的图像,从而节省了图像集整体的下载时间。并且,每当任一下载线程下载图像成功后,可以直接下载剩余的未下载图像,而无需等待其他下载线程下载成功。那么,由于免去了空闲的下载线程等待其他下载线程带来的时间开销,可以提高下载线程的利用率,进而提高运行下载线程的电子设备的CPU(Central Processing Unit,中央处理器)利用率。
在一些实施例中,异步下载的流程具体可以包括以下步骤一至步骤四:
步骤一、电子设备创建目标队列。
目标队列可以称为下载任务队列,目标队列用于缓存图像集中待下载的图像的地址。
步骤二、电子设备将图像集中每个图像的地址添加至目标队列。
电子设备可以通过浏览器,获取图像集中每个图像的地址,将每个图像的地址发送至目标队列,以使目标队列存储图像集每个图像的地址,从而通过图像地址的入列,使得目标队列能够保存下载图像的任务。
步骤三、对于至少一个下载线程中的每个下载线程,通过下载线程,电子设备从目标队列,读取图像集中目标图像的地址。
目标图像是指图像集中还未下载的图像。
在一些实施例中,电子设备可以通过下载线程,检测目标图像的状态,判断目标图像的状态是否为未下载状态,如果目标图像处于未下载状态,通过下载线程,从目标队列,读取图像集中目标图像的地址,如果目标图像处于已下载状态,则检测其他图像的状态,以便读取未下载的图像的地址,来下载尚未下载的图像。
其中,如果目标队列存在多个待下载的图像的地址,可以按照先入先出的顺序,依次读取每个待下载的图像的地址。
其中,如果将Service Worker配置为下载线程,可以在Service Worker的脚本中,写明每当Service Worker处于空闲状态时,则Service Worker主动从下载任务队列中,读取一个尚未标注的图像的地址,然后下载该图像,待下载完成后,重复执行读取地址并进行下载,从而实现步骤三。
步骤四、电子设备通过下载线程,根据目标图像的地址下载目标图像。
在一些实施例中,可以根据目标图像的地址,生成下载请求,通过浏览器向该目标图像的地址对应的服务器发送下载请求,服务器会接收下载请求,访问数据库,得到目标图像,将目标图像发送至电子设备,电子设备可以接收目标图像。
其中,如果下载线程是一个Service Worker,可以配置每当Service Worker处于空闲状态时,则Service Worker主动从下载任务队列中,读取一个尚未标注的图像的地址,然后下载该图像,待下载完成后,重复执行读取地址再进行下载的过程。
在一些实施例中,可以通过检测图像集中的图像的下载进度,来避免为已经下载的图片重新请求服务器的情况,从而节省重新请求服务器带来的网络开销。具体地,这一功能的实现方式可以包括以下实现方式一至实现方式二中的任一种:
实现方式一、如果检测到目标图像已下载成功,通过下载线程,将目标队列中目标图像的状态更新为已下载状态。
下载线程可以检测目标图像的下载进度,当检测到目标图像的下载进度已经达到阈值时,确定目标图像已被下载成功,则通过将目标图像的状态更新为已下载状态,来向线程池中的其他下载线程通告目标图像的下载任务已经完成,线程池中的其他下载线程通过目标图像的状态,可以确定目标图像已经下载至本地,无需重复下载目标图像,从而执行图像集中其他图像的下载任务。由此可见,通过实现方式一,能够通过及时更新图像状态,来解决重复从网络中请求图像的问题。
实现方式二、如果检测到目标图像已下载成功,通过下载线程,从目标队列中删除目标图像的地址。
下载线程也可以在确定目标图像已被下载成功时,将目标图像的地址从目标队列移出,使得目标队列不再包含目标图像的地址。那么由于已下载的图像的地址从目标队列中及时取出,线程池中的其他下载线程在从目标队列中获取图像地址时,得到的会是还未下载的图像的地址。由此可见,通过实现方式二,能够通过及时更新目标队列,来解决重复从网络中请求图像的问题。
以上描述了任一个下载线程下载图像的流程,每个下载线程均可以通过执行上述图像下载流程来下载图像。其中,不同下载线程的下载过程可以相互独立,可以并行执行。此外,上述图像下载流程可以是多次迭代的过程,具体地,在下载图像集的过程中,电子设备可以判断图像集中的每个图像是否均已下载成功,如果图像集中仍有图像尚未下载,则通过重复执行上述流程,来继续下载图像,如果图像集中每个图像均已下载成功,可以结束下载图像的过程。
在一些实施例中,线程池中的线程数量可以随着任务量的增减而自动扩容、自动销毁,从而实现线程池的精细调优,提高线程池的性能。以下,通过实现方式一和实现方式二,对线程池的调优方式进行示例性说明。
实现方式一、动态扩容
具体而言,可以检测线程池中处于空闲状态的下载线程的数量,判断下载线程的数量是否低于第一阈值,如果下载线程的数量低于第一阈值,则创建下载线程,将创建的下载线程添加至线程池。
示例性地,如果将1配置为第一阈值,线程池初始包括5个下载线程,如果检测到空闲的下载线程低于1个,即当前没有空闲的下载线程,线程池中的每个下载线程均在下载需要标注的图像,则可以新创建2个下载线程,将这2个新增的线程添加到线程池中,使得线程池从包含5个线程扩容至包含7个下载线程。
通过这种方式,可以在当前的线程池处理资源不足时,通过扩容出更多的下载线程,来提高线程池的处理能力。尤其是,随着AI技术的发展,图像集的规模日趋庞大,另外,在利用高分辨率的图像进行训练时,也会导致图像集的数据量极大。面临这种图像集庞大、高并发的场景,能够通过动态扩容的方式,提高系统的处理能力和并发能力,从而加速图像集的下载过程。
在一些实施例中,可以为线程池设置线程最大数量,在执行动态扩容之前,可以先判断线程池包含的线程数量是否达到线程最大数量,如果线程池包含的线程数量已达到线程最大数量,则不执行动态扩容,如果线程池包含的线程数量未达到线程最大数量,则执行动态扩容。
通过这种方式,可以控制线程池的规模,避免创建的线程数量过多,导致系统内存消耗过大而引发内存泄露的情况,提高系统稳定性。
实现方式二、动态缩容
线程池动态缩容的实现方式具体可以包括多种,以下通过实现方式2.1至实现方式2.3进行举例说明:
实现方式2.1、可以检测线程池中处于空闲状态的下载线程的数量,判断下载线程的数量是否高于第二阈值,如果下载线程的数量高于第二阈值,则从线程池中释放一个或多个处于空闲状态的下载线程。
其中,可以检测处于空闲状态的下载线程的空闲时长,如果空闲时长超过时长阈值,确认下载线程的存活时间已超时,则销毁下载线程。
实现方式2.2、检测图像集中待下载的图像数量,判断待下载的图像数量是否低于第三阈值,如果待下载的图像数量低于第三阈值,从线程池中释放一个或多个处于空闲状态的下载线程。
实现方式2.3、检测图像集中已下载的图像数量,判断已下载的图像数量是否高于第四阈值,如果已下载的图像数量高于第四阈值,从线程池中释放一个或多个处于空闲状态的下载线程。
通过对线程池进行动态缩容,可以在图像集规模较小或者已经接近下载完成的场景下,通过释放处于空闲状态的线程,来节省线程占用的CPU资源。
304、电子设备通过至少一个下载线程,将图像集异步缓存至浏览器对应的目标缓存空间。
目标缓存空间用于缓存线程池下载的图像集。可以预先从缓存中为图像集分配一段存储空间,作为该目标缓存空间。目标缓存空间的大小可以根据需求设置。
关于异步缓存的具体流程,对于至少一个下载线程中的每个下载线程,可以在创建下载线程的过程中,将目标缓存空间的地址写入该下载线程,当下载线程下载了图像集中的目标图像后,可以将目标图像写入至目标缓存空间的地址,从而将已下载的图像缓存至目标缓存空间。其中,至少一个下载线程可以采用异步的方式,来缓存图像集中的每个图像。具体而言,当任一个下载线程下载目标图像完成后,可以无需等待其他下载线程下载结束或缓存结束,而是执行缓存图像的任务。比如说,下载线程1下载图像1后,可以将图像1缓存至目标缓存空间,与此同时,下载线程2也可以将已下载的图像2缓存至目标缓存空间,从而避免不同下载线程的缓存任务相互阻塞。
305、电子设备通过主线程,对图像集中已下载的图像进行标注。
电子设备可以在浏览器中,检测到对已下载的图像的标注操作,根据标注操作,获取图像的标注结果。图像的标注结果可以包括多种。例如,图像的标注结果可以包括标注框和标签中的至少一项。
标注框也称bounding box(边界框),标注框的外形为可以为一个矩形的空心框,标注框用于标识目标图像中物体的位置。对于一个精确的标注框来说,该标注框会正好框住物体图像,令物体图像落入标注框中,不至于面积过小,以致物体图像超过标注框的边界,也不至于面积过大,以致包括过多的空余区域。标注框在电子设备中可以记录为四维向量,例如,标注框可以记录为(x,y,w,h),其中x表示标注框中心的横坐标,y表示标注框中心的纵坐标,w表示标注框的宽,h表示标注框的高。
标签用于标识对应图像的类别。例如,应用在自动驾驶场景,标签可以表示“车辆”、“道路”、“行人”等,应用在人脸识别场景,标签可以表示“女性”、“高颜值”、“长发”、“微笑”等。其中,标签在电子设备中可以记录为数字,比如100表示“车辆”,200表示“行人”。
306、当检测到图像集中的每个图像均已下载完成时,电子设备释放线程池中的每个下载线程。
例如,电子设备可以释放worker池中的Service Worker。通过释放线程池中的线程,可以释放下载线程所占用的处理资源,继续利用原来为下载线程分配的处理资源来执行其他任务。
参见图4,其示出了浏览器中图像离线下载和图像离线缓存的流程图。当需要获取需要处理的每个图像时,将这些图像的地址发送至目标队列,即下载任务队列中。下载线程,即Service Worker会从队列中取出一张图像的地址,根据地址下载图像,直至队列中每个地址对应的图像均已下载完成。当图像集的所有图像下载完成后,可以释放worker池中的每个Service Worker。
本实施例提供的方法,通过线程池,来执行图像下载任务,通过主线程,来执行图像标注的任务,由于线程池和主线程相互独立,线程池执行任务的过程和主线程执行任务的过程不会相互干扰,从而避免了图像下载任务对图像标注任务造成阻塞。尤其是,利用线程池中的各个下载线程,以异步的方式来下载图像集中的各个图像,免去了同一时刻只能下载一个图像、该图像下载完成后才能下载另一个图像会带来的时间成本,使得图像集中的不同图像能够并行下载。因此,该方法能够极大地节省图像标注的时间,从而提高了图像标注的效率和性能。
图5是本申请实施例提供的一种图像标注装置的结构示意图。参见图5,该装置包括:
接收模块501,用于接收下载指令,下载指令用于指示通过浏览器下载待标注的图像集;
创建模块502,用于为浏览器创建线程池,线程池包括至少一个下载线程,每个下载线程为独立与浏览器的主线程的线程;
下载模块503,用于通过至少一个下载线程,对图像集进行异步下载;
标注模块504,用于通过浏览器的主线程,对图像集中已下载的图像进行标注。
本实施例提供的装置,通过线程池,来执行图像下载任务,通过主线程,来执行图像标注的任务,由于线程池和主线程相互独立,线程池执行任务的过程和主线程执行任务的过程不会相互干扰,从而避免了图像下载任务对图像标注任务造成阻塞。尤其是,利用线程池中的各个下载线程,以异步的方式来下载图像集中的各个图像,免去了同一时刻只能下载一个图像、该图像下载完成后才能下载另一个图像会带来的时间成本,使得图像集中的不同图像能够并行下载。因此,该方法能够极大地节省图像标注的时间,从而提高了图像标注的效率和性能。
可选地,下载模块503,包括:
添加子模块,用于将图像集中每个图像的地址添加至目标队列;
读取子模块,用于对于至少一个下载线程中的每个下载线程,通过下载线程,从目标队列,读取图像集中目标图像的地址;
下载子模块,用于通过下载线程,根据目标图像的地址下载目标图像。
可选地,下载模块503,还包括:检测子模块,用于通过下载线程,检测目标图像的状态;
读取子模块,用于如果目标图像处于未下载状态,通过下载线程,从目标队列,读取图像集中目标图像的地址。
装置还包括:更新模块,用于如果检测到目标图像已下载成功,通过下载线程,将目标队列中目标图像的状态更新为已下载状态;或者,通过下载线程,从目标队列中删除目标图像的地址。
可选地,装置还包括:确定模块,用于根据图像集中待下载的图像数量,确定下载线程的目标数量;
创建模块502,用于创建具有目标数量个下载线程的线程池,下载线程的目标数量和待下载的图像数量正相关。
可选地,创建模块502,用于创建具有预设数量个下载线程的线程池。
可选地,装置还包括:检测模块,用于检测线程池中处于空闲状态的下载线程的数量;
创建模块502,还用于如果下载线程的数量低于第一阈值,创建下载线程,将创建的下载线程添加至线程池。
可选地,装置还包括:
检测模块,用于检测线程池中处于空闲状态的下载线程的数量;
释放模块,用于如果下载线程的数量高于第二阈值,从线程池中释放一个或多个处于空闲状态的下载线程。
可选地,装置还包括:
检测模块,用于检测图像集中待下载的图像数量;
释放模块,用于如果待下载的图像数量低于第三阈值,从线程池中释放一个或多个处于空闲状态的下载线程。
可选地,装置还包括:
检测模块,用于检测图像集中已下载的图像数量;
释放模块,用于如果已下载的图像数量高于第四阈值,从线程池中释放一个或多个处于空闲状态的下载线程。
可选地,装置还包括:
释放模块,用于当检测到图像集中的每个图像均已下载完成时,释放线程池中的每个下载线程。
可选地,创建模块502,用于通过服务工作者脚本,创建多个服务工作者,作为线程池。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的图像标注装置在标注图像时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将图像标注装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图像标注装置与图像标注的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述方法实施例中的电子设备可以实现为终端,例如,图6示出了本申请一个示例性实施例提供的终端600的结构框图。该终端600可以是:智能手机、平板电脑、MP3(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端600包括有:一个或多个处理器601和一个或多个存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被一个或多个处理器601所执行以实现本申请中方法实施例提供的图像标注方法。
在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头组件606、音频电路607、定位组件608和电源609中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位终端600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
上述方法实施例中的电子设备可以实现为服务器,例如,图7是本申请实施例提供的一种服务器的结构示意图,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)701和一个或一个以上的存储器702,其中,一个或多个存储器702中存储有至少一条程序代码,该至少一条程序代码由一个或多个处理器701加载并执行以实现上述各个方法实施例提供的图像标注方法。当然,该服务器还可以具有有线或无线网络接口以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由处理器执行以完成上述实施例中的图像标注方法。例如,计算机可读存储介质可以是只读存储器(Read-Only Memory,简称:ROM)、随机存取存储器(RandomAccess Memory,简称:RAM)、只读光盘(Compact Disc Read-Only Memory,简称:CD-ROM)、磁带、软盘和光数据存储设备等。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种图像标注方法,其特征在于,所述方法包括:
接收下载指令,所述下载指令用于指示通过浏览器下载待标注的图像集;
为所述浏览器创建线程池,所述线程池包括至少一个下载线程,每个下载线程为独立与所述浏览器的主线程的线程;
通过所述至少一个下载线程,对所述图像集进行异步下载;
通过所述浏览器的主线程,对所述图像集中已下载的图像进行标注。
2.根据权利要求1所述的方法,其特征在于,所述通过所述至少一个下载线程,对所述图像集进行异步下载,包括:
将所述图像集中每个图像的地址添加至目标队列;
对于所述至少一个下载线程中的每个下载线程,通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址;
通过所述下载线程,根据所述目标图像的地址下载所述目标图像。
3.根据权利要求2所述的方法,其特征在于,所述通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址,包括:
通过所述下载线程,检测所述目标图像的状态;
如果所述目标图像处于未下载状态,通过所述下载线程,从所述目标队列,读取所述图像集中目标图像的地址;
所述通过所述下载线程,根据所述目标图像的地址下载所述目标图像之后,所述方法还包括:
如果检测到所述目标图像已下载成功,通过所述下载线程,将所述目标队列中所述目标图像的状态更新为已下载状态;或者,通过所述下载线程,从所述目标队列中删除所述目标图像的地址。
4.根据权利要求1所述的方法,其特征在于,所述为所述浏览器创建线程池,包括:
根据所述图像集中待下载的图像数量,确定下载线程的目标数量,创建具有所述目标数量个下载线程的线程池,所述下载线程的目标数量和所述待下载的图像数量正相关;或者,
创建具有预设数量个下载线程的线程池。
5.根据权利要求1所述的方法,其特征在于,所述为所述浏览器创建线程池之后,所述方法还包括:
检测所述线程池中处于空闲状态的下载线程的数量,如果所述下载线程的数量低于第一阈值,创建下载线程,将创建的下载线程添加至所述线程池;或者,
检测所述线程池中处于空闲状态的下载线程的数量,如果所述下载线程的数量高于第二阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程;或者,
检测所述图像集中待下载的图像数量,如果所述待下载的图像数量低于第三阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程;或者,
检测所述图像集中已下载的图像数量,如果所述已下载的图像数量高于第四阈值,从所述线程池中释放一个或多个处于空闲状态的下载线程。
6.根据权利要求1所述的方法,其特征在于,所述通过所述至少一个下载线程,对所述图像集进行异步下载之后,所述方法还包括:
当检测到所述图像集中的每个图像均已下载完成时,释放所述线程池中的每个下载线程。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述为所述浏览器创建线程池,包括:
通过服务工作者脚本,创建多个服务工作者,作为所述线程池。
8.一种图像标注装置,其特征在于,所述装置包括:
接收模块,用于接收下载指令,所述下载指令用于指示通过浏览器下载待标注的图像集;
创建模块,用于为所述浏览器创建线程池,所述线程池包括至少一个下载线程,每个下载线程为独立与所述浏览器的主线程的线程;
下载模块,用于通过所述至少一个下载线程,对所述图像集进行异步下载;
标注模块,用于通过所述浏览器的主线程,对所述图像集中已下载的图像进行标注。
9.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求7任一项所述的图像标注方法所执行的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求7任一项所述的图像标注方法所执行的操作。
CN201911099856.8A 2019-11-12 2019-11-12 图像标注方法、装置、设备及存储介质 Active CN110908784B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911099856.8A CN110908784B (zh) 2019-11-12 2019-11-12 图像标注方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911099856.8A CN110908784B (zh) 2019-11-12 2019-11-12 图像标注方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110908784A CN110908784A (zh) 2020-03-24
CN110908784B true CN110908784B (zh) 2022-09-20

Family

ID=69817303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911099856.8A Active CN110908784B (zh) 2019-11-12 2019-11-12 图像标注方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110908784B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111860305B (zh) * 2020-07-17 2023-08-01 北京百度网讯科技有限公司 一种图像标注方法、装置、电子设备及存储介质
CN112863651A (zh) * 2021-02-08 2021-05-28 卫宁健康科技集团股份有限公司 客户端的影像文件的下载方法、系统、设备和存储介质
US11470012B2 (en) 2021-02-25 2022-10-11 Capital One Services, Llc System and method for queue management
CN114359367B (zh) * 2022-03-15 2022-06-28 深圳市华付信息技术有限公司 数据标注方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463439A (zh) * 2017-08-21 2017-12-12 山东浪潮通软信息科技有限公司 一种线程池实现方法及装置
CN109753354A (zh) * 2018-11-26 2019-05-14 平安科技(深圳)有限公司 基于多线程的流媒体任务的处理方法、装置及计算机设备
CN110064198A (zh) * 2019-04-11 2019-07-30 网易(杭州)网络有限公司 资源的处理方法及装置、存储介质和电子装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104750543B (zh) * 2013-12-26 2018-06-15 杭州华为数字技术有限公司 线程创建方法、业务请求处理方法及相关设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463439A (zh) * 2017-08-21 2017-12-12 山东浪潮通软信息科技有限公司 一种线程池实现方法及装置
CN109753354A (zh) * 2018-11-26 2019-05-14 平安科技(深圳)有限公司 基于多线程的流媒体任务的处理方法、装置及计算机设备
CN110064198A (zh) * 2019-04-11 2019-07-30 网易(杭州)网络有限公司 资源的处理方法及装置、存储介质和电子装置

Also Published As

Publication number Publication date
CN110908784A (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
CN110908784B (zh) 图像标注方法、装置、设备及存储介质
CN109712224B (zh) 虚拟场景的渲染方法、装置及智能设备
CN111062255A (zh) 三维点云的标注方法、装置、设备及存储介质
CN110865756B (zh) 图像标注方法、装置、设备及存储介质
CN110490179B (zh) 车牌识别方法、装置及存储介质
CN110991491A (zh) 图像标注方法、装置、设备及存储介质
CN108920606B (zh) 地图数据处理方法、装置、终端设备及存储介质
CN110288689B (zh) 对电子地图进行渲染的方法和装置
CN110647881B (zh) 确定图像对应的卡片类型的方法、装置、设备及存储介质
CN112749362B (zh) 控件创建方法、装置、设备及存储介质
US20240192939A1 (en) Application porting method and apparatus, device, and medium
CN110677713B (zh) 视频图像处理方法及装置、存储介质
CN110995842A (zh) 业务数据下载方法、装置、设备及存储介质
CN111625315A (zh) 页面显示方法、装置、电子设备及存储介质
CN111325220A (zh) 图像生成方法、装置、设备及存储介质
CN110991260A (zh) 场景标注方法、装置、设备及存储介质
CN112612539B (zh) 数据模型卸载方法、装置、电子设备及存储介质
CN111275607B (zh) 界面显示方法、装置、计算机设备及存储介质
CN111265885B (zh) 资源显示方法、资源发送方法、装置、设备及存储介质
CN112053360A (zh) 图像分割方法、装置、计算机设备及存储介质
CN113448692B (zh) 分布式图计算的方法、装置、设备及存储介质
CN114118236A (zh) 训练智能模型的方法及装置
CN110851435B (zh) 一种存储数据的方法及装置
CN112597417A (zh) 页面更新方法、装置、电子设备及存储介质
CN111429106A (zh) 资源转移凭证的处理方法、服务器、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200617

Address after: 215100 16 / F, Lingyu Business Plaza, 66 qinglonggang Road, high speed rail new town, Xiangcheng District, Suzhou City, Jiangsu Province

Applicant after: SUZHOU ZHIJIA TECHNOLOGY Co.,Ltd.

Applicant after: Zhijia (Cayman) Co.

Applicant after: Zhijia (USA)

Address before: 215100 16 / F, Lingyu Business Plaza, 66 qinglonggang Road, high speed rail new town, Xiangcheng District, Suzhou City, Jiangsu Province

Applicant before: SUZHOU ZHIJIA TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210310

Address after: 16 / F, Lingyu Business Plaza, 66 qinglonggang Road, high speed rail new town, Xiangcheng District, Suzhou City, Jiangsu Province

Applicant after: SUZHOU ZHIJIA TECHNOLOGY Co.,Ltd.

Applicant after: Zhijia (USA)

Address before: 215100 16 / F, Lingyu Business Plaza, 66 qinglonggang Road, high speed rail new town, Xiangcheng District, Suzhou City, Jiangsu Province

Applicant before: SUZHOU ZHIJIA TECHNOLOGY Co.,Ltd.

Applicant before: Zhijia (Cayman) Co.

Applicant before: Zhijia (USA)

GR01 Patent grant
GR01 Patent grant