CN116503772A - 图像流处理中使用具有动态感兴趣区域的光流的对象检测 - Google Patents

图像流处理中使用具有动态感兴趣区域的光流的对象检测 Download PDF

Info

Publication number
CN116503772A
CN116503772A CN202310074552.6A CN202310074552A CN116503772A CN 116503772 A CN116503772 A CN 116503772A CN 202310074552 A CN202310074552 A CN 202310074552A CN 116503772 A CN116503772 A CN 116503772A
Authority
CN
China
Prior art keywords
image
mlm
region
processing
input
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.)
Pending
Application number
CN202310074552.6A
Other languages
English (en)
Inventor
T·希瓦萨拉
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN116503772A publication Critical patent/CN116503772A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/52Surveillance or monitoring of activities, e.g. for recognising suspicious objects
    • G06V20/54Surveillance or monitoring of activities, e.g. for recognising suspicious objects of traffic, e.g. cars on the road, trains or boats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/215Motion-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/22Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/25Determination of region of interest [ROI] or a volume of interest [VOI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/80Fusion, i.e. combining data from various sources at the sensor level, preprocessing level, feature extraction level or classification level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30232Surveillance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30236Traffic on road, railway or crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30261Obstacle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/07Target detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

公开了可以执行机器学习的有效部署以检测和分类图像流中的移动对象的装置、系统和技术。一组具有不同输入大小的机器学习模型可用于并行处理多个图像流中的各种感兴趣区域。可以基于感兴趣区域的大小动态选择机器学习模型以及这些模型的输入二者。

Description

图像流处理中使用具有动态感兴趣区域的光流的对象检测
技术领域
至少一个实施例涉及处理用于执行和促进人工智能的资源。例如,根据本文描述的各种新技术,至少一个实施例涉及机器学习的有效部署,以用于对图像流中的移动对象的检测和分类。
背景技术
机器学习通常应用于图像处理管线和应用程序,例如执行图像内描绘的对象的识别。在一些应用中,可以实时执行对象识别,特别是在涉及识别和监控移动对象的应用中。此类应用可用于工业安全设置、公共安全设置、监控系统、交通监控应用、科学研究、自主驾驶系统、机器人自动化和各种其他设置。移动对象的检测可能基于机器学习,并且可能涉及训练计算系统——使用训练图像和其他训练数据——来识别图像中可能有助于对象识别的共同特征、排列或模式。训练可以有监督或无监督。机器学习模型可以使用各种计算算法,例如决策树算法(或其他基于规则的算法)、人工神经网络等。在推理阶段,将新图像输入到经过训练的机器学习模型中,并且可以使用机器学习模型在训练期间学习识别的模式和特征来识别各种感兴趣的目标对象(例如,道路图像中的车辆)。
附图说明
图1A是根据至少一些实施例的使用机器学习来对移动对象进行有效的基于运动矢量的检测和分类的示例计算机系统的框图;
图1B是根据至少一个实施例的可以支持对移动对象的有效的基于运动矢量的检测和分类的示例计算设备;
图2示出了根据至少一个实施例的在使用运动矢量和多种输入大小的机器学习模型的移动对象的检测和分类期间的示例数据流;
图3示意性地描绘了根据至少一个实施例的使用运动矢量来识别感兴趣的移动区域;
图4A-C示出了根据至少一个实施例的基于运动矢量的检测模型的选择;图4A示出了感兴趣区域的大小小于最小检测模型输入大小的情况;图4B示出了感兴趣区域的大小在两个检测模型输入大小之间的情况;图4C示出了感兴趣区域的大小高于最大检测模型输入大小的情况;
图5是根据至少一个实施例的使用运动矢量和多种输入大小的机器学习模型来有效检测和分类移动对象的示例方法的流程图;
图6是根据至少一个实施例的训练一个或更多个分类器机器学习模型以有效检测和分类移动对象的示例方法的流程图;
图7A示出根据至少一个实施例的推理和/或训练逻辑;
图7B示出根据至少一个实施例的推理和/或训练逻辑;
图8示出根据至少一个实施例的神经网络的训练和部署;
图9是根据至少一个实施例的高级计算管线的示例数据流图;
图10是根据至少一个实施例的用于在高级计算管线中训练、适应、实例化和部署机器学习模型的示例系统的系统图。
具体实施方式
自动识别对象用于许多技术和行业,包括但不限于自主驾驶/停车系统、交通/停车控制和执法、机器人操作、航空航天技术和许多其他应用。在一个示例中,识别对象可用于交通监控,该交通监控涉及位于各个交叉路口、道路、停车区和建筑物的入口和出口等处的多个相机。每个相机可以产生图像流(例如,视频帧),这些图像流可能(有时)或可能不(在其他时间)捕捉对静止或移动对象的描绘。然后可以通过各种基于计算机的对象识别技术处理图像流,以识别流中移动对象的存在(或不存在)。例如,可以使用一个或更多个机器学习模型(MLM)处理流的各种帧,该模型可以检测相机视野内是否存在车辆(行人、动物或任何其他移动对象),并且可以还要确定对象所属的类型(例如,行人、乘用车、卡车等)、车辆的品牌(例如,汽车制造商)、车辆的型号等。经过训练的MLM可以包括人工神经元的神经网络,在输入层中具有一定数量的神经元,例如n×m。神经元的数量可以与一个或更多个MLM可以处理的输入的大小(例如,以像素为单位)相关联。例如,黑白帧可能具有与每个像素相关联的单个值(像素亮度)。彩色帧可以具有与每个像素相关联的多个值(例如,每种颜色对应一个值,例如红色、绿色和蓝色)。然而,帧大小N×M可以不同于(例如,大于)MLM输入大小。因此,预处理阶段可以执行帧的重新缩放,例如,从N×M像素到n×m像素,以使帧的大小与MLM的输入大小相匹配。重新缩放可以在每个新帧上执行,并且会消耗大量的计算(例如,处理器和存储器)资源。此外,当MLM将重新缩放的帧作为一个整体进行处理时,这些资源的很大一部分用于处理帧中没有描绘移动对象的部分。
本公开的方面和实施例通过公开方法和系统来解决这些和其他技术挑战,这些方法和系统通过识别包括(例如,移动)对象的描绘的帧的缩减部分并且丢弃静态背景的至少一部分。由于根据对象的实际位置选择帧的缩减部分进行处理,计算量大大减少。此外,可以部署具有不同输入大小的多个MLM来处理所选部分。这减少了重新缩放所涉及的处理量,并且对于许多帧,可以完全消除重新缩放的需要。
更具体地,可以将给定帧与不同帧(本文称为参考帧)进行比较,该帧可以是由同一相机获得的在前(prior)帧。可以为给定帧的各种像素或像素块确定一组运动矢量。运动矢量表征参考帧和给定帧之间的特定像素(或像素块)的运动。例如,描绘车辆引擎盖一部分的像素块可能会在特定时间间隔内从参考帧内的位置A移动到给定帧内的位置B。其运动矢量被确定为高于某个最小水平(例如,高于噪声水平)的像素簇然后可以与包围所有这些簇的区域一起被识别。然后可以将该区域的大小与可用的检测器MLM输入大小进行比较。如果区域的大小小于最小检测器MLM输入大小,则可以扩展区域(无需重新缩放),以便扩展区域的大小与最小检测器MLM的输入大小匹配。然后将扩展区域输入到相应的检测器MLM中。如果该区域的大小介于两个检测器MLM输入大小之间,则该区域可以类似地扩展到更大的输入大小。如果区域的大小大于最大检测器MLM输入大小,则可以将区域缩小到最大检测器MLM输入大小。上述过程最大限度地减少了重新缩放的需要。在一些实施例中,该区域可以经历额外的(向上或向下)缩放到更大或更小的输入大小,如下面更详细描述的。
如所描述的,对于每个新帧动态地和单独地执行感兴趣区域的选择,连同最佳检测器MLM的选择。当所选的感兴趣区域由所选的检测器MLM处理时,该所选的检测器MLM将区域分割成包围该区域内所发现的不同移动对象(例如,不同的车辆)的单独子区域。然后可以组合多个检测器MLM的输出,以便由一个或更多个分类器MLM进行并发处理,这些分类器MLM被训练以确定或识别检测到的对象的类型/品牌/模型/等。结果,来自不同视频流的帧被一起处理,从而提高了吞吐量。
所公开技术的优点包括但不限于由于消除或减少重新缩放操作、集中处理实际感兴趣的区域以及对源自不同来源(例如,视频相机)的数据的并发分类,提高了功率和处理效率。释放的处理资源可用于在相同的计算平台上部署更高级的MLM(例如,具有更多处理层的MLM),这些MLM能够更完整地检测对象并对检测到的对象进行更准确的分类。
系统架构
图1A是根据至少一些实施例的示例计算机系统100的框图,该示例计算机系统100使用机器学习来进行有效的基于运动矢量的移动对象的检测和分类。如图1A中所描绘的,计算系统100可以包括计算设备102、图像存储库150和连接到网络140的训练服务器160。网络140可以是公共网络(例如,互联网)、专用网络(例如,局域网(LAN)或广域网(WAN))、无线网络、个域网(PAN)或其组合。
计算设备102可以是台式计算机、膝上型计算机、智能手机、平板计算机、服务器或能够执行本文描述的技术的任何合适的计算设备。计算设备102可以被配置为接收图像(帧)101,该图像(帧)101可以是图像流的一部分,例如,由通过任何合适的有线或无线连接而连接到计算设备102的一个或更多个相机生成的视频馈送。在一些实施例中,可以实时生成视频馈送。在一些实施例中,视频馈送可在过去的某个时间生成、存储、然后检索以进行如本公开中所述的处理。例如,能够生成视频馈送(包括图像101)的设备可以是监控相机、录像机、摄影设备、扫描仪、自主车辆传感设备(例如,激光雷达、雷达、远程和中程相机)等。图像101可以是室内图像、室外图像、汽车环境的图像、人或一群人的图像、自然或人造(例如,室外或室内)风景的图像,或任何其他类型的图像。图像101可以是任何数字(例如,基于像素或基于矢量)格式,包括但不限于JPEG、GIF、PNG、BMP、TIFF、CIB、DIMAP、NITF等。图像101可以被存储(例如,与其他图像一起)在图像存储库150中。另外,根据本文公开的一些实施例,图像存储库150可以存储用于训练一个或更多个MLM对象检测和分类的训练图像151。图像储存库150可以由计算设备102直接访问或(如图所示)经由网络140访问。
图像储存库150可以是能够存储图像以及所存储图像的元数据的持久性存储器。图像储存库150可以由一个或更多个存储设备托管,例如主存储器、基于磁或光存储的磁盘、磁带或硬盘驱动器、NAS、SAN等。尽管描述为与计算设备102分离,但在至少一个实施例中,图像储存库150可以是计算设备102的一部分。在至少一些实施例中,图像储存库150可以是网络附接的文件服务器,而在其他实施例中,图像储存库150可以是一些其他类型的持久性存储,例如面向对象的数据库、关系数据库等,其可以由服务器机器或经由网络140耦合到计算设备102的一个或更多个不同机器托管。
计算设备102可以包括与一个或更多个处理设备通信耦合的存储器104,例如一个或更多个图形处理单元(GPU)110和一个或更多个中央处理单元(CPU)130。存储器104可以存储一个或更多个更多处理模块和MLM,例如基于运动矢量(MV)的分割120、对象检测模型(ODM)124和对象分类模型(OCM)126。计算设备102可以托管推理引擎122以运行基于运动矢量的分割120、ODM 124和OCM 126。推理引擎122可以由GPU 110和/或CPU 130执行。计算设备102可以使用图像101(或训练图像151)作为基于MV的分割120的输入,其被配置为基于图像101与参考图像的比较来识别图像101中的运动矢量,如下面更详细描述的。使用运动矢量,计算设备102可以识别图像101的描绘一个或更多个移动对象的部分,并且可以基于识别的部分的大小来选择合适的经过训练的ODM 124。推理引擎122然后可以将选择的ODM124应用到图像101的部分以识别图像101中的各个移动对象的描绘。多个ODM 124可以并行操作,每个ODM 124在所选的特定图像上(例如,在图像管线中)使用相应的ODM 124进行处理。各种ODM 124的输出可以组合成单个输入到一个或更多个OCM 126中,该OCM 126可以确定对象的类型和其他特性,例如,品牌、型号、年份、颜色等。在至少一个实施例中,ODM 124和/或OCM 126中的一个或更多个可以是包括神经网络的模型。
ODM 124和/或OCM 126可以由训练服务器160训练。在至少一个实施例中,训练服务器160可以是计算设备102的一部分。在其他实施例中,训练服务器160可以直接或经由网络140通信地耦合到计算设备102。训练服务器160可以是(和/或包括)机架式服务器、路由器计算机、个人计算机、膝上型计算机、平板计算机、台式计算机、媒体中心或其任意组合。训练服务器160可以包括训练引擎162。在至少一个实施例中,训练引擎162可以生成一个或更多个机器学习模型(例如,ODM 124和/或OCM 126)。生成的MLM可以由训练引擎162使用可以包括训练输入165和对应目标输出167的训练数据来训练。在至少一个实施例中,可以针对不同类型的图像分别训练不同的MLM。例如,确定卡车品牌的OCM可以与确定客车品牌的OCM分开训练。
对于ODM 124的训练,训练输入165可以包括一个或更多个训练图像151和训练图像151的各种元数据。训练图像151可以是大尺度图像,例如汽车环境的全景图像,可能包括多种不同类型的对象,例如汽车、卡车、公共汽车、摩托车、自行车、行人等。感兴趣区域(ROI)注释引擎163可以用包括单个对象(例如,汽车的边界框,公共汽车的边界框等)的各种ROI的指示(例如,边界框或其他边界形状,如椭圆体、圆柱体等)来注释大尺度图像。ROI注释引擎163可以生成目标输出167,其可以是具有ROI注释的训练输入165。此外,训练引擎162可以生成将训练输入165与正确目标输出167相关联的映射数据166(例如,元数据)。在ODM124的训练期间,训练引擎162可以基于期望的目标输出167识别训练输入165中的模式并训练ODM 124以使用识别的模式执行ROI分割。随后可以使用额外的训练输入/目标输出关联来验证识别的模式的预测效用,然后在推理阶段由ODM 124在新图像的未来处理中使用。例如,在接收到交叉路口的新图像时,经过训练的ODM 124可以识别包括位于交叉路口处或附近的各种车辆、行人和其他对象的各种ROI。
类似地,为了训练一个或更多个OCM 126,类注释引擎164可以用在ROI内的各种目标对象(汽车、卡车、公共汽车、行人、等)的指示(例如,指针、边界框等)来注释各个ROI的图像并生成ROI的相应类别。类别应理解为能够基于对象的外观确定的对象的任何特征,例如,车辆的类型(汽车、卡车等)或动物(例如,鸟、猫、狗等)、车辆的制造商(或制造商)、车辆的型号/年份/颜色、动物的品种等。在至少一个实施例中,训练输入165可以通过获取其对应于不同ROI的子集从大规模图像中生成。训练引擎162还可以生成将类训练输入与正确的类目标输出167相关联的映射数据166。在一个或更多个OCM 126的训练期间,类训练输入165中的模式可以基于期望的类目标输出167识别并用于使用识别的类级模式在相应的ROI内执行对象分类。随后可以使用额外的训练(测试)输入/目标输出关联来验证识别的模式。基于识别/验证的模式,经过训练的OCM 126然后在推理阶段处理新图像。例如,在接收到新图像101、识别图像101中描绘对象的一部分、利用ODM 124执行ROI检测时,可以部署经过训练的OCM 126以对图像101内的各种对象进行分类。
在至少一个实施例中,ODM 124和/或OCM 126中的每一个或一些可以被实现为具有多级线性或非线性操作的深度学习神经网络。例如,ODM 124和/或OCM 126中的每一个或一些可以是卷积神经网络、循环神经网络(RNN)、全连接神经网络等。在至少一个实施例中,ODM 124和/或OCM 126中的每一个或一些可以包括多个神经元,其中每个神经元可以从其他神经元或从外部源接收其输入并且可以通过将激活函数应用到(可训练的)加权输入和偏差值之和来产生输出。在至少一个实施例中,ODM 124和/或OCM 126中的每一个或一些可以包括布置在层中的多个神经元,包括输入层、一个或更多个隐藏层和输出层。来自相邻层的神经元可以通过加权边缘连接。最初,可以为边缘权重分配一些起始(例如,随机)值。对于每个训练输入165,训练引擎162可以使ODM 124和/或OCM 126中的每一个或一些产生输出。训练引擎137然后可以将观察到的输出与期望的目标输出167进行比较。由此产生的误差或失配,例如期望的目标输出167和神经网络的实际输出之间的差异可以通过各自的神经网络进行反向传播,并且可以调整神经网络中的权重以使实际输出更接近目标输出。可以重复这种调整,直到给定训练输入165的输出误差满足预定条件(例如,低于预定值)。随后,可以选择不同的训练输入165,生成新的输出,并实施一系列新的调整,直到各个神经网络被训练到可接受的准确度。
图1B是根据至少一个实施例的可以支持有效的基于运动矢量的移动对象的检测和分类的示例计算设备102。在至少一个实施例中,基于MV的分割120和推理引擎122可以由一个或更多个GPU 110执行并且可以使用ODM 124和/或OCM 126来执行对象检测和分类。在至少一个实施例中,GPU 110包括多个核心111,每个核心能够执行多个线程112。每个核心可以并发地(例如,并行)运行多个线程112。在至少一个实施例中,线程112可以访问寄存器113。寄存器113可以是特定于线程的寄存器,其可以访问限于相应线程的寄存器。此外,共享寄存器114可以被核心的所有线程访问。在至少一个实施例中,每个核心111可以包括调度器115以在核心111的不同线程112之间分配计算任务和进程。分派单元116可以使用正确的私有寄存器113和共享寄存器114在适当的线程上执行调度任务。计算设备102可以包括输入/输出组件134以促进与一个或更多个用户或开发者的信息交换。
在至少一个实施例中,GPU 110可以具有(高速)缓存118,多个核心111可以共享对其的访问。此外,计算设备102可以包括GPU存储器119,其中GPU 110可以存储由GPU 110执行的各种计算的中间和/或最终结果(输出)。在完成特定任务之后,GPU 110(或CPU 130)可以将输出移动到(主)存储器104。在至少一个实施例中,CPU 130可以执行涉及串行计算任务(由推理引擎122分配)的过程,而GPU 110可以执行适合并行处理的任务(例如神经节点的输入乘以权重和添加偏差)。在至少一个实施例中,推理引擎122可以确定哪些进程要在GPU 110上执行以及哪些进程要在CPU 130上执行。在其他实施例中,CPU 130可以确定哪些进程要在GPU 110上执行以及哪些进程要在GPU 110上执行以及哪些进程要在CPU 130上执行。
图2图示了根据至少一个实施例的在使用运动矢量和多种输入大小的机器学习模型的移动对象的检测和分类期间的示例数据流200。在至少一个实施例中,数据流200可以通过图1A和图1B的计算设备102的推理引擎122来实现。如图2所示,数据可以源自多个源201-k(描绘了n个源),其可以是任何视频或摄影机、先前获取的视频/摄影图像的存储、合成视频源(例如,视频游戏应用)或成像数据的任何其他合适的源。每个源201-k可以生成图像流202-k(为简洁起见,仅描绘了来自每个流的一个图像)。图像202-k可以具有不同的有利位置(vantage point)、视场、分辨率、帧速率、纵横比等。例如,源201-1可以生成大小为720x486像素的图像202-1,源201-2可以生成大小为1920x1080像素的图像202-2,源201-3可以生成大小为1280x720像素图像202-2等。在至少一个实施例中,图像202-k可以经历解码/预处理204,其可以包括修整、图像锐化、模糊/噪声/伪影去除、压缩、重新采样、归一化、上采样等,或者这些操作的任何组合。
由解码/预处理204输出的图像202-k可以输入到运动矢量(MV)确定模块206中。MV确定模块206可以识别给定图像的像素如何相对于参考图像移位。图3示意性地描绘了根据至少一个实施例的使用运动矢量来识别运动的感兴趣区域。参考图像302用于识别图像304中的像素位移。图像304可以在时间t拍摄,而参考图像302可以在某个先前时间t-τ拍摄(尽管在一些实施例中,参考图像302可以在稍后时间t+τ拍摄)。MV确定模块206可以识别图像304中的像素或像素块,例如块306,并且可以进一步识别参考图像302中的像素或像素块,例如块308,其对移动对象(例如车辆)的相同区域进行成像。例如,MV确定模块206可以识别图像304中的块306的像素强度(或多个像素强度,如果图像是彩色图像)I(x,y)与参考图像302中块308的像素强度IREF(x-Δx,y-Δy)相同(在某个容差内),I(x,y)≈IREF(x-Δx,y-Δy),因此可以描绘相同对象或相同对象的一部分。
在各种情况下,两个图像中的像素强度可能不完全相同,因为当移动对象改变其相对于相机的位置时,像素的亮度(和颜色)可能会发生变化。结果,可以部署各种误差评估程序。例如,对于被假设属于移动对象的块的每个像素xi,yk,可以形成差δI(xi,yk)=I(xi,y)-IREF(xi-Δx,yk-Δy)。并且可以计算二次成本函数(或任何其他合适的损失函数),例如,Cost=∑jk[δI(xi,yk)]2。如果成本函数相对于块的总(或平均)像素强度在某个(例如,凭经验确定的)余量mar内,则I=∑jkI(xi,yk),例如,使得Cost/I≤mar,图像304中的块306和参考图像302中的块308可以被识别为属于同一对象的描绘。表征两个图像之间的块的位移的值Δx和Δy表示块306的运动矢量310(在图3中被放大)的分量,例如,ΔR=(Δx,Δy)。运动矢量ΔR以及块306的大小的确定本身可以作为优化过程的一部分来执行,例如通过最小化被识别为相同对象的描述的各种块的成本函数。在一些实施例中,成本函数可以是二元交叉熵成本函数、均方误差成本函数、均方误差成本函数、加权均方误差成本函数、平均绝对误差成本函数、Huber成本函数、Hinge成本函数、多类交叉熵成本函数、Kullback-Liebler成本函数等。
在一些实施例中,为了减少在识别运动矢量中执行的处理量,MV确定模块206可以将参考图像302中的候选块308限制在图像304中的块306的某个附近。附近的大小可以由参考图像302和图像304之间的时间差τ以及特定环境中移动对象的最大预期速度vmax来确定,|ΔR|=vmaxττ。例如,在停车场的最高速度可能是20mph,在城市十字路口的最高速度可能是40-50mph,等等。块306和308可以具有任何合适的像素大小,例如,32x32像素、8x16像素、4x4像素、2x3像素,或者在某些情况下,可以小到单个像素。
继续参考图2,为给定图像(例如图像202-1)识别的一组运动矢量可以被分割模块208用来选择检测模型210-k,以用于处理图像。检测模型210-k可以是图1A的ODM 126。图4A-C示出了根据至少一个实施例的基于运动矢量的检测模型的选择。分割模块208可以访问该组运动矢量{ΔR}并且选择与大于对应于噪声的值的运动矢量ΔR相关联的像素(或像素块)。这样的像素(或像素块)被假设为属于移动对象的描绘。分割模块208然后可以识别包围一些或所有这样的像素(或像素块)的感兴趣区域402(在图4A中用虚线描绘)。在一些实施例中,感兴趣区域可以是此类像素的最小边界框,例如,其左下角具有坐标(xmin,xmin)并且右上角具有坐标(xmax,ymax)的边界框,其中xmin(xmax)是与任何移动对象的描述相关联的像素的最小(最大)x坐标,并且ymin(ymax)类似地是此类像素的最小(最大)y坐标。尽管为了方便查看,感兴趣区域402在图4A(和图4B-C)中被描绘为占据图像401的左下角,但是感兴趣区域402可以位于图像401内的任何位置。
多个可用检测器模型210-k(例如,ODM 126)可以具有不同的输入大小,mk×nk。检测器模式210-k的选择可以通过比较各种可用输入大小mk×nk与感兴趣区域402的大小来执行,例如,(xmax-xmin)×(ymax-ymin)。图4A示出了感兴趣区域402的大小小于最小检测模型输入大小,例如小于第一模型输入大小404,m1×n1的情况。在这种情况下,感兴趣区域的大小可以扩展到m1×n1,例如,通过将描绘非移动对象的像素添加到感兴趣区域402的一侧或多侧,如图4A中的实线箭头所示。在一些实施例中,添加的像素可以是同一图像202-1的像素或合成的,例如填充,具有一些固定强度的像素。图4B示出了感兴趣区域402的大小在两个检测模型输入大小之间的情况,例如,在第一模型输入大小404m1×n1和第二模型输入大小406m2×n2之间。在这种情况下,感兴趣区域的大小可以增加到m2×n2,例如,以与上面结合图1B描述的相同的方式。图4C示出了感兴趣区域402的大小高于最大检测模型输入大小,例如高于第二模型输入大小406,m2×n2(如果部署了两个检测器模型210-k)的情况。在这种情况下,感兴趣区域402可以缩小到最大模型输入大小,如图4C中的虚线箭头所示。
图4A-C旨在作为实施例的图解,其中感兴趣区域被扩展至下一个最低检测器模型输入大小,以尽可能减少重新缩放的需要。在一些实施例中,可以定义在可用模型输入大小之间的一组阈值大小。例如,可以在第一模型输入大小m1×n1和第二模型输入大小m2×n2之间定义阈值大小mT×nT,使得如果感兴趣区域402的大小在m1×n1和mT×nT之间,则感兴趣区域被缩小到m1×n1(如图4B中的虚线箭头所示),并且如果感兴趣区域402的大小在mT×nT和m2×n2之间,则感兴趣区域被扩展(或填充)到m2×n2。可以基于整体计算效率来选择阈值大小mT×nT。例如,在感兴趣区域的大小低于mT×nT的情况下,将感兴趣区域402缩小到m1×n1并使用较小的输入大小模型处理缩小的图像而不是扩展该区域并使用更大的输入大小模型处理扩展的图像(这可能导致更大的处理时间),这在计算上可能更有效率。对于大小大于mT×nT的感兴趣区域402,执行扩展而不是缩小可能更有效。此外,较大的输入大小模型可能更准确。因此,阈值大小mT×nT的确定可以考虑所有这样的度量并且可以鉴于特定于应用的标准(包括特定于用户的标准)来执行。
可以识别任意数量的阈值mT×nT。在一些实施例中,对于具有不同输入大小的N个检测器模型的系统,不同阈值的数量可以是N-1。在一些情况下,可能发生感兴趣区域402的水平m(或垂直n)大小大于特定检测器模型210-k的水平mk(或垂直nk)输入大小但感兴趣区域402的垂直n(或水平m)大小小于相同检测器模型210-k的垂直nk(或水平mk)大小。可能存在多种处理此类情况的方法。例如,如果感兴趣区域402的一个维度甚至高于检测器模型210-k的相应维度,则感兴趣区域的大小可以扩展到下一个最大输入大小模型,例如检测器模型210-(k+1)。在一些情况下,感兴趣区域402可以沿着较小的维度扩展(或填充),例如,使得新大小/>具有与检测器模型210-k(mk:nk)的输入大小相同的纵横比然后可以将扩展的(填充的)感兴趣区域缩小到检测器模型210-k的输入大小。在一些实施例中,感兴趣区域402可以沿不同维度不同地缩小(或放大)(使得不需要执行调整大小或填充)。由于这种各向异性重新缩放改变了各种对象的相对水平和/或垂直大小,因此该技术可用于检测器模型210-k已在各种图像上训练的情况,包括那些描绘与此类对象的自然大小相比大小已被修改的对象的情况(例如,拉伸或挤压)。
返回参考图2,可以由分割模块208引导选择的(并且在某些情况下,重新缩放的)感兴趣区域以供检测器模型210-k之一进行处理。例如,可以为每个检测器模型210-k分配相应批次的条目(感兴趣区域)以进行处理,这些条目(感兴趣区域)被馈送到该模型中。更具体地,可以将新条目放置在相应批次的后端,其中从批次中检索到的条目以供检测器模型210-k按照放置的历史顺序进行处理。在一些实施例中,批次中的条目可以包括存储在输入缓冲器中的实际像素值。在一些实施例中,批次中的条目可以是识别感兴趣区域是相应的完整图像的元数据402。例如,元数据可以包括图像的标识符、感兴趣区域402的边界框的坐标、拍摄图像的时间等等。在一些实施例中,批次中的条目的处理可以以管线方式执行。更具体地,如果检测器模型210-k是神经网络模型,则检测器模型210-k的第一层神经元可以在第一计算周期(或一组周期)期间执行批次中的第一条目的计算,并且可能在第二计算周期期间执行第二条目的计算,等等。同时,在第二计算周期期间,第二层神经元可能正在处理第一条目,依此类推。在一些实施例中,每个检测器模型210-k的处理可以由一个或更多个GPU由单独的处理线程(例如,并行地)执行。
检测器模型210-1…210-N中的每一个可以在相应条目中输出检测到的对象220的指示。该指示可以具有任何合适的形式,例如坐标组、边界框等。边界框可以是矩形的、椭圆形的,或者可以具有任何其他合适的形式。例如,如果对象A部分地遮挡对象B,则对象B的指示可以包括包围对象B的边界框,其中边界框的一部分被移除(例如,被对象A遮挡的部分)。在一些实施例中,指示可以包括任意数量的连接(或以其他方式关联)的框或像素区域、逐像素列表等。在由每个检测器模型210-k处理的特定条目内可以有任意数量的检测到的对象220。在一些实施例中,检测器模型210-k可以识别感兴趣区域402内对应于各种移动对象的子区域。在一些实施例中,检测器模型210-k可以识别关于对象的任何附加信息,例如对象的高级类型/类别,例如车辆或人。
检测到的对象220的指示可以由组合器(跟踪器)230接收。组合器230可以创建数据结构,该数据结构包括与所有或至少一些检测器模型210-1…210-N检测到的对象相对应的每个子区域的数据(例如,像素数据)。更具体地,由组合器230在第j个计算周期(或一组周期)期间创建的数据结构可以包括检测到的对象220,其识别是检测器模型210-1…210-N在前一个(例如,第j-1个)计算周期期间输出的。例如,数据结构可以包括与检测到的对象220相对应的各种子区域的像素值的联结。另外,数据结构可以包括各种元数据,其将每个子区域标识为由相应的源201-k、图像202-k内的子区域的位置、拍摄图像202的时间、物理位置、分辨率、相应源201-k的视场等等生成。至少一些元数据可以由分割模块208(如图2中的虚线所示)基于完整图像202-k来提供。
可以将数据结构提供给一个或更多个分类器模型240-k。分类器模型240-k可以包括任意数量的模型,这些模型被训练来独立地(例如,并行地)或顺序地确定检测到的对象220的各种属性。例如,分类器模型240-1可以确定对象的类型(例如,运动型多用途车、皮卡车、客车、货车、公共汽车、半轨道、非车辆对象等)并且分类器模型240-2可以确定车辆的品牌和型号。在一些实施例中,例如,在不同的分类器模型并行操作的情况下,一些分类器模型(例如,模型240-1和模型240-2,如虚线框所示)可以接收和处理由组合器230提供的相同数据结构。在一些实施例中,例如,在不同的分类器模型按顺序操作的情况下,分类器模型中的一个(例如,模型240-1)可以输出代表对象外观的一组特征(例如,特征向量),另一个分类器模型(例如,模型240-2)可能正在处理这组特征以确定最终分类。尽管在图2中描绘了两个分类器模型240-k,分类器模型240-k的数量不需要限制并且可以是一个、三个或任何其他数量的模型。分类器模型240-k生成推理输出250,其可以包括由检测器模型210-k和分类器模型240-k确定的所有分类中的一些。推理输出250可以提供给用户、应用程序(例如,监视应用程序、交通控制应用程序等),存储在本地存储器或云中,等等。推理输出250可以被索引或提供有来自组合器230的信息以参考分类对象的位置、捕获的分类对象的特定图像202-k(以及任何参考图像)的标识、拍摄图像的时间等。在一些实施例中,一个或更多个分类(例如,高级对象类型)可以由检测器模型210-k确定。在一些实施例中,可以通过检测器模型210-k获得所有分类。
在一些实施例中,组合器230可以管理分类器模型240-k的计算管线。例如,在某些条件下,大多数图像中的对象数量可能很小(例如,非高峰交通),因此大多数感兴趣区域相对较窄,因此被引导到低输入大小的检测器模型(例如,检测器模型210-1)。在其他条件下(例如,高峰流量),对象的数量可能很大,大多数感兴趣的区域很宽,并且相应地被引导到高输入大小的检测器模型(例如,检测器模型210-N)进行处理。结果,组合器230可以接收到由一些检测器模型检测到的对象多于由其他模型检测到的对象。在这种情况下,组合器230可以仅针对所有计算周期的一部分组合由不同检测器模型检测到的对象。在其他周期期间,组合器230可能正在清除由一个(或多个)检测器模型创建的管线积压。例如,组合器230可以访问存储先前由这些模型检测到的未处理对象的溢出缓冲区,并使用这些模型的P个先前输出来生成数据结构。在恢复不同检测器模型210-k的组合处理之前,组合器230可以根据需要多次重复该过程以清除积压。
图5和图6是根据本公开的一些实施例的有助于图像流中的移动对象的检测和分类的相应示例方法500和600的流程图。方法500和600可由一个或更多个处理单元(例如,CPU和/或GPU)执行,其可包括一个或更多个存储器设备(或与之通信)。在至少一个实施例中,方法500和方法600可以由计算设备102或训练服务器160的处理单元执行。在至少一个实施例中,方法500和方法600可以由多个处理线程(例如,CPU线程和/或GPU线程)执行,每个线程执行一个或更多个单独的函数、例程、子例程或方法的操作。在至少一个实施例中,实现方法500(以及类似地,方法600)的处理线程可以被同步(例如,使用信号量、临界区和/或其他线程同步机制)。备选地,实现方法500(以及类似地,方法600)的处理线程可以相对于彼此异步地执行。与图5和6所示的顺序相比,方法500和600的各种操作可以以不同的顺序执行。方法的一些操作可以与其他操作并发地执行。在至少一个实施例中,图5和6中所示的一个或更多个操作可能并不总是被执行。
图5是根据至少一个实施例的使用运动矢量和多个输入大小的机器学习模型来有效检测和分类移动对象的示例方法500的流程图。方法500可以在交通控制和监控、医学成像、自主驾驶系统、工业环境、研究环境和许多其他环境中执行。在框510,执行方法500的处理单元可以识别第一图像和第一参考图像。此外,处理单元可以识别第二(第三等)图像和第二(第三等)参考图像。术语第一、第二等应被理解为仅仅是标识符并且不预设任何时间或上下文顺序。第一(第二等)图像和第一(第二等)参考图像可以是相应图像流的部分(例如帧),例如以特定时间间隔拍摄的视频帧流或照片图像,例如,定期的时间间隔。更具体地,第一图像和第一参考图像可以通过第一相机获得,其中第二(第三等)图像和第二(第三等)参考图像可以通过第二(第三等)相机获得。第一相机的视场可以不同于第二(第三等)相机的视场。
在框520,处理单元可以确定第一(第二等)图像的第一(第二等)多个运动矢量。第一(第二等)多个运动矢量中的每一个可以表征第一图像(第二等)的相对于第一(第二等)参考图像的一个或更多个像素的位移。例如,第一(第二等)图像可以被分割成像素块的网格,并且对于至少一些像素块,类似的参考块可以位于第一(第二等)参考图像中。一些像素块可以位于第一图像中与第一(第二等)参考图像中的相似块相同(或大致相同)的位置。此类块描绘静止对象(或此类对象的部分)并且可以与零运动矢量相关联。移动对象的描绘可以与非零运动矢量相关联,每个运动矢量表征某个像素或像素块的位移。为了识别这样的运动矢量,在一些实施例中,可以使用多个块大小的网格,例如,16x16像素块的网格和4x4像素块的网格。在一些实施例中,可以首先部署初始粗网格(例如,32x32像素块、64x64像素块等的网格)以消除第一(第二等)图像中的区域,该区域描绘静止对象并且包括与第一(第二等)参考图像中的相应像素块相同的像素块。一旦检测到初始网格的一个或更多个像素块中的不匹配,相应的块可以进一步细分为更精细的像素块,例如,8x8像素块、4x4像素块等。然后可以沿着各个方向(例如,8、12、16等方向)以一定数量的像素(例如,整数或小数像素)移动像素块更精细的块,直到找到与参考图像中的相应块的最佳匹配。
在框530,方法500可以继续,处理单元使用第一(第二等)多个运动矢量识别第一(第二等)图像的的第一(第二等)感兴趣区域,第一(第二等)感兴趣区域描绘了第一(第二等)图像中的一个或更多个对象。例如,第一(第二等)感兴趣区域可以是图4A-C的感兴趣区域402。在一些实施例中,第一(第二等)感兴趣区域可以包括与非零运动矢量相关联的第一(第二等)图像的像素或像素块并且不包括与零运动矢量相关联的像素或像素块,从而描绘静止的对象。在框540,处理单元可以使用第一(第二等)感兴趣区域的大小来选择多个MLM中的第一(第二等)MLM。多个MLM中的每一个可以具有不同的输入大小。可以如结合图4A-C所描述的那样执行MLM的选择。
在框550,处理单元可以进一步基于第一(第二等)感兴趣区域的大小和对应于第一MLM的输入大小,选择第一(第二等)图像的第一(第二等)部分,其中第一(第二等)部分包括第一(第二等)感兴趣区域。例如,第一(第二等)部分可以包括感兴趣区域402和第一(第二等)图像的附加片段,使得第一(第二等)部分的大小与一个或更多个MLM(例如,检测器模型210-k)的大小匹配,它可能是具有超过(或匹配)感兴趣区域大小的最小输入大小的MLM。
在框560,方法500可以继续,处理单元使用第一个(第二等)MLM基于第一(第二等)部分的处理输出检测第一(第二等)图像中一个或更多个对象的存在。在一些实施例中,框560还可以包括对一个或更多个检测到的对象进行分类。在一些实施例中,对移动对象进行分类可以包括多个操作,如图6的标注部分所示。更具体地,在可选框562,在由第一(第二等)MLM处理第一(第二等)部分之前,处理单元可以重新缩放该的第一(第二等)图像的第一(第二等)部分,以匹配对应于第一(第二等)MLM的输入大小。特别地,第一(第二等)图像的第一(第二等)部分可以被选择为具有与对应于第一(第二等)MLM的输入大小不同的大小。例如,如图4C所示,如果感兴趣区域402的大小超过对应于所选MLM的输入大小,则可以将感兴趣区域402缩小到该输入大小。
在框564,方法500可以包括由第一(第二等)MLM处理第一(第二等)图像的第一(第二等)选择部分。在一些实施例中,第一(第二等)MLM对第一(第二等)部分的处理的输出可以包括用于第一(第二等)图像中的一个或更多个对象中的每一个的边界框。在一些实施例中,对第一图像中的对象进行分类与对第二(第三等)图像中的一个或更多个对象进行分类并发地执行。更具体地,如框566所示,对一个或更多个对象进行分类可以包括由一个或更多个分类器MLM处理组合输入。组合输入可以包括第一MLM对第一部分的处理的输出和第二(第三等)MLM对第二部分的处理的输出。
在一些实施例中,一个或更多个分类器MLM被训练以确定组合输入中表示的一个或更多个对象的类型。一个或更多个分类器MLM的输出可包括对应于i)车辆类型、ii)车辆品牌或iii)车辆型号的一个或更多个推理。可以为第一图像或第二(第三等)图像中的至少一个中的一个或更多个对象中的至少一个对象确定这样的特性。在一些实施例中,到一个或更多个分类器MLM的组合输入可以是输入管线的多个组合输入之一。在这样的实施例中,一个或更多个分类器MLM可以被配置为执行该多个组合输入的管线处理。在一些实施例中,任何或所有处理操作,包括第一(第二等)MLM对第一(第二等)部分的处理,组合输入的处理可以使用一个或更多个GPU来执行。
图6是根据至少一个实施例的训练一个或更多个分类器机器学习模型以有效检测和分类对象的示例方法600的流程图。在框610,执行方法600的处理单元可以获得多个训练图像,多个训练图像中的每一个描绘一个或更多个对象(例如,处于运动状态的对象)。在框620,方法600可以继续从多个图像的每一个中裁剪一个或更多个部分,每个部分包括对象的描绘。在框630,方法600可以继续处理单元创建包括每个裁剪部分的数据的组合数据结构。组合数据结构还可包括与裁剪部分相关联的各种元数据,其可包括拍摄图像的时间、生成图像的相机的位置、相机的分辨率等。在框640,方法600可以包括使用一个或更多个分类器模型处理组合数据结构以预测在多个图像中描绘的至少一些对象的特性。在框650,方法600可以包括基于对象的预测特征和对象的目标特征之间的差异来调整一个或更多个分类器模型的参数。
推理和训练逻辑
图7A示出了用于执行与一个或更多个实施例相关联的推理和/或训练操作的推理和/或训练逻辑715。
在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于代码和/或数据存储701,用于存储前向和/或输出权重和/或输入/输出数据,和/或在一个或更多个实施例的方面中配置被训练为和/或用于推理的神经网络的神经元或层的其他参数。在至少一个实施例中,训练逻辑715可以包括或耦合到用于存储图代码或其他软件以控制时序和/或顺序的代码和/或数据存储701,其中权重和/或其他参数信息被加载以配置逻辑,包括整数和/或浮点单元(统称为算术逻辑单元(ALU)或简单电路)。在至少一个实施例中,代码(诸如图代码)基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储701存储在使用一个或更多个实施例的方面训练和/或推理期间的输入/输出数据和/或权重参数的前向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,代码和/或数据存储701的任何部分都可以包括在其他片上或片外数据存储内,包括处理器的L1、L2或L3高速缓存或系统存储器。
在至少一个实施例中,代码和/或数据存储701的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路的内部或外部。在至少一个实施例中,代码和/或代码和/或数据存储701可以是高速缓存存储器、动态随机可寻址存储器(“DRAM”)、静态随机可寻址存储器(“SRAM”)、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,对代码和/或代码和/或数据存储701是在处理器的内部还是外部的选择,例如,或者由DRAM、SRAM、闪存或某种其他存储类型组成,可以取决于存储片上或片外的可用存储空间,正在执行训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据的批大小或这些因素的某种组合。
在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于代码和/或数据存储705,以存储与在一个或更多个实施例的方面中被训练为和/或用于推理的神经网络的神经元或层相对应的反向和/或输出权重和/或输入/输出数据。在至少一个实施例中,在使用一个或更多个实施例的方面训练和/或推理期间,代码和/或数据存储705存储在输入/输出数据和/或权重参数的反向传播期间结合一个或更多个实施例训练或使用的神经网络的每个层的权重参数和/或输入/输出数据。在至少一个实施例中,训练逻辑715可以包括或耦合到用于存储图代码或其他软件以控制时序和/或顺序的代码和/或数据存储705,其中权重和/或其他参数信息被加载以配置逻辑,该逻辑包括整数和/或浮点单元(统称为算术逻辑单元(ALU))。
在至少一个实施例中,代码(诸如图代码)使得基于该代码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数据存储705的任何部分可以与其他片上或片外数据存储一起包括,包括处理器的L1、L2或L3高速缓存或系统存储器。在至少一个实施例中,代码和/或数据存储705的任何部分可以在一个或更多个处理器或其他硬件逻辑设备或电路上的内部或外部。在至少一个实施例中,代码和/或数据存储705可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如闪存)或其他存储。在至少一个实施例中,代码和/或数据存储705是在处理器的内部还是外部的选择,例如,是由DRAM、SRAM、闪存还是其他某种存储类型组成,取决于可用存储是片上还是片外,正在执行的训练和/或推理功能的延迟要求,在神经网络的推理和/或训练中使用的数据批量大小或这些因素的某种组合。
在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705可以是分开的存储结构。在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705可以是组合的存储结构。在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705可以部分地被组合和部分分离。在至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或系统存储器。
在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于一个或更多个算术逻辑单元(“ALU”)710(包括整数和/或浮点单元),用于至少部分地基于训练和/或推理代码(例如,图代码)或由其指示来执行逻辑和/或数学运算,其结果可能会产生存储在激活存储720中的激活(例如,来自神经网络内部的层或神经元的输出值),其是存储在代码和/或数据存储701和/或代码和/或数据存储705中的输入/输出和/或权重参数数据的函数。在至少一个实施例中,激活响应于执行指令或其他代码,由ALU710执行的线性代数和/或基于矩阵的数学生成在激活存储720中存储的激活,其中存储在代码和/或数据存储705和/或数据存储701中的权重值用作具有其他值的操作数,例如偏置值、梯度信息、动量值或其他参数或超参数,可以将任何或所有这些存储在代码和/或数据存储705或代码和/或数据存储701或另一个片上或片外存储中。
在至少一个实施例中,一个或更多个处理器或其他硬件逻辑设备或电路中包括一个或更多个ALU 710,而在另一实施例中,一个或更多个ALU 710可以在处理器或其他硬件逻辑设备或使用它们(例如协处理器)的电路外。在至少一个实施例中,可以将一个或更多个ALU 710包括在处理器的执行单元之内,或者以其他方式包括在由处理器的执行单元可访问的ALU组中,该处理器的执行单元可以在同一处理器内或者分布在不同类型的不同处理器之间(例如,中央处理单元、图形处理单元、固定功能单元等)。在至少一个实施例中,代码和/或数据存储701、代码和/或数据存储705以及激活存储720可以共享处理器或其他硬件逻辑设备或电路,而在另一实施例中,它们可以在不同的处理器或其他硬件逻辑设备或电路或相同和不同处理器或其他硬件逻辑设备或电路的某种组合中。在至少一个实施例中,激活存储720的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或系统存储器。此外,推理和/或训练代码可以与处理器或其他硬件逻辑或电路可访问的其他代码一起存储,并可以使用处理器的提取、解码、调度、执行、退出和/或其他逻辑电路来提取和/或处理。
在至少一个实施例中,激活存储720可以是高速缓存存储器、DRAM、SRAM、非易失性存储器(例如,闪存)或其他存储。在至少一个实施例中,激活存储720可以完全地或部分地在一个或更多个处理器或其他逻辑电路内部或外部。在至少一个实施例中,可以取决于片上或片外可用的存储,进行训练和/或推理功能的延迟要求,在推理和/或训练神经网络中使用的数据的批量大小或这些因素的某种组合,选择激活存储720是处理器的内部还是外部,例如,或者包含DRAM、SRAM、闪存或一些其他存储类型。
在至少一个实施例中,图7A中所示的推理和/或训练逻辑715可以与专用集成电路(“ASIC”)结合使用,例如来自Google的处理单元、来自GraphcoreTM的推理处理单元(IPU)或来自Intel Corp的/>(例如“Lake Crest”)处理器。在至少一个实施例中,图7A所示的推理和/或训练逻辑715可与中央处理单元(“CPU”)硬件、图形处理单元(“GPU”)硬件或其他硬件(例如现场可编程门阵列(“FPGA”))结合使用。
图7B示出了根据至少一个实施例的推理和/或训练逻辑715。在至少一个实施例中,推理和/或训练逻辑715可以包括但不限于硬件逻辑,其中计算资源被专用或以其他方式唯一地连同对应于神经网络内的一层或更多层神经元的权重值或其他信息一起使用。在至少一个实施例中,图7B中所示的推理和/或训练逻辑715可以与专用集成电路(ASIC)结合使用,例如来自Google的处理单元,来自GraphcoreTM的推理处理单元(IPU)或来自Intel Corp的/>(例如“Lake Crest”)处理器。在至少一个实施例中,图7B中所示的推理和/或训练逻辑715可以与中央处理单元(CPU)硬件、图形处理单元(GPU)硬件或其他硬件(例如现场可编程门阵列(FPGA))结合使用。在至少一个实施例中,推理和/或训练逻辑715包括但不限于代码和/或数据存储701以及代码和/或数据存储705,其可以用于存储代码(例如,图代码)、权重值和/或其他信息,包括偏置值、梯度信息、动量值和/或其他参数或超参数信息。在图7B中所示的至少一个实施例中,代码和/或数据存储701以及代码和/或数据存储705中的每一个都分别与专用计算资源(例如计算硬件702和计算硬件706)相关联。在至少一个实施例中,计算硬件702和计算硬件706中的每一个包括一个或更多个ALU,这些ALU仅分别对存储在代码和/或数据存储701和代码和/或数据存储705中的信息执行数学函数(例如线性代数函数),执行函数的结果被存储在激活存储720中。
在至少一个实施例中,代码和/或数据存储701和705以及相应的计算硬件702和706中的每一个分别对应于神经网络的不同层,使得从代码和/或数据存储701和计算硬件702的一个存储/计算对701/702得到的激活提供作为代码和/或数据存储705和计算硬件706的下一个存储/计算对705/706的输入,以便反映神经网络的概念组织。在至少一个实施例中,每个存储/计算对701/702和705/706可以对应于一个以上的神经网络层。在至少一个实施例中,在推理和/或训练逻辑715中可以包括在存储/计算对701/702和705/706之后或与之并行的附加存储/计算对(未示出)。
神经网络训练和部署
图8示出了根据至少一个实施例的深度神经网络的训练和部署。在至少一个实施例中,使用训练数据集802来训练未训练的神经网络806。在至少一个实施例中,训练框架804是PyTorch框架,而在其他实施例中,训练框架804是TensorFlow,Boost,Caffe,Microsoft Cognitive Toolkit/CNTK,MXNet,Chainer,Keras,Deeplearning4j或其他训练框架。在至少一个实施例中,训练框架804训练未经训练的神经网络806,并使它能够使用本文所述的处理资源来训练,以生成训练的神经网络808。在至少一个实施例中,权重可以被随机选择或通过使用深度信念网络预训练。在至少一个实施例中,可以以有监督、部分有监督或无监督的方式执行训练。
在至少一个实施例中,使用有监督学习来训练未训练的神经网络806,其中训练数据集802包括与用于输入的期望输出配对的输入,或者其中训练数据集802包括具有已知输出的输入和神经网络806是手动分级的输出。在至少一个实施例中,以有监督的方式来训练未经训练的神经网络806,并且处理来自训练数据集802的输入,并将结果输出与一组期望或想要的输出进行比较。在至少一个实施例中,然后通过未训练的神经网络806将误差传播回去。在至少一个实施例中,训练框架804调整控制未经训练的神经网络806的权重。在至少一个实施例中,训练框架804包括用于监视未训练的神经网络806向模型(例如,训练的神经网络808)收敛的程度的工具,适于基于输入数据(例如新数据集812)生成正确答案(例如结果814)的模型。在至少一个实施例中,训练框架804反复训练未训练的神经网络806,同时调整权重以使用损失函数和调整算法(例如随机梯度下降)来改善未训练的神经网络806的输出。在至少一个实施例中,训练框架804训练未训练的神经网络806,直到未训练的神经网络806达到期望的精度为止。在至少一个实施例中,然后可以部署训练的神经网络808以实现任何数量的机器学习操作。
在至少一个实施例中,使用无监督学习来训练未训练的神经网络806,其中未训练的神经网络806尝试使用未标记的数据来训练自己。在至少一个实施例中,无监督学习训练数据集802将包括输入数据,而没有任何关联的输出数据或“地面实况”数据。在至少一个实施例中,未训练的神经网络806可以学习训练数据集802内的分组,并且可以确定各个输入如何与未训练的数据集802相关。在至少一个实施例中,可以使用无监督训练来在训练的神经网络808中生成自组织图,其能够执行对减少新数据集812的维度有用的操作。在至少一个实施例中,无监督训练也可以用于执行异常检测,这允许识别新数据集812中偏离新数据集812的正常模式的数据点。
在至少一个实施例中,可以使用半监督学习,这是一种技术,其中在训练数据集802中包括标记数据和未标记数据的混合。在至少一个实施例中,训练框架804可以用于例如通过转移的学习技术来执行递增学习。在至少一个实施例中,递增学习使得训练的神经网络808能够适应新数据集812,而不会忘记在初始训练期间注入到训练的神经网络808内的知识。
参照图9,图9是根据至少一个实施例的用于生成和部署处理和推理管线的过程900的示例数据流图。在至少一个实施例中,过程900可以被部署以用于在诸如数据中心之类的一个或更多个设施902处对用户反馈数据执行游戏名称识别分析和推理。
在至少一个实施例中,过程900可以在训练系统904和/或部署系统906内执行。在至少一个实施例中,训练系统904可以用于执行机器学习模型(例如,神经网络、对象检测算法、计算机视觉算法等)的训练、部署和实现,以用于部署系统906。在至少一个实施例中,部署系统906可以被配置为在分布式计算环境中卸载处理和计算资源,以减少设施902的基础设施需求。在至少一个实施例中,部署系统906可以提供管线平台用于选择、定制和实现虚拟仪器,以在设施902处与计算设备一起使用。在至少一个实施例中,虚拟仪器可以包括用于针对反馈数据执行一个或更多个处理操作的软件定义的应用程序。在至少一个实施例中,管线中的一个或更多个应用程序在应用程序执行期间,可以使用或调用部署系统906的服务(例如,推理、可视化、计算、AI等)。
在至少一个实施例中,在高级处理和推理管线中使用的一些应用程序可以使用机器学习模型或其他AI来执行一个或更多个处理步骤。在至少一个实施例中,可以在设施902处使用存储在设施902处的反馈数据908(例如反馈数据)或来自另一个或更多个设施的反馈数据908,或其组合,来训练机器学习模型。在至少一个实施例中,训练系统904可以用于提供应用程序、服务和/或其他资源,以生成用于部署系统906的工作的、可部署的机器学习模型。
在至少一个实施例中,模型注册表924可以由对象存储支持,该对象存储可以支持版本控制和对象元数据。在至少一个实施例中,可以从云平台内通过例如云存储(例如,图10的云1026)兼容的应用程序编程接口(API)来访问对象存储。在至少一个实施例中,模型注册表924内的机器学习模型可以由与API交互的系统的开发者或合作伙伴上传、列出、修改或删除。在至少一个实施例中,API可以提供对方法的访问,所述方法允许具有适当凭证的用户将模型与应用程序相关联,使得模型可以作为应用程序的容器化实例化的执行的一部分来执行。
在至少一个实施例中,训练管线1004(图10)可以包括以下情形:其中设施902正在训练他们自己的机器学习模型,或者具有需要优化或更新的现有机器学习模型。在至少一个实施例中,可以接收来自各种通道(诸如论坛、web表单等)的反馈数据908。在至少一个实施例中,一旦接收到反馈数据908,AI辅助注释910就可以用于帮助生成与反馈数据908相对应的注释,以用作机器学习模型的地面实况数据。在至少一个实施例中,AI辅助注释910可以包括一个或更多个机器学习模型(例如,卷积神经网络(CNN)),可以对该机器学习模型进行训练,以生成对应于某些类型的反馈数据908(例如,来自某些设备)的注释,和/或反馈数据908中某些类型的异常。在至少一个实施例中,然后AI辅助注释910可以被直接使用,或者可以使用注释工具进行调整或微调,以生成地面实况数据。在至少一个实施例中,在一些示例中,标记的数据912可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,AI辅助注释910、标记的数据912或其组合可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,训练的机器学习模型可以被称为输出模型916,并且可以由部署系统906使用,如本文所述。
在至少一个实施例中,训练管线1004(图10)可以包括以下情形:其中设施902需要机器学习模型,以用于执行用于部署系统906中的一个或更多个应用程序的一个或更多个处理任务,但是设施902当前可能没有这种机器学习模型(或者可能没有为此目的而优化的、高效的或有效的模型)。在至少一个实施例中,可以从模型注册表924中选择现有的机器学习模型。在至少一个实施例中,模型注册表924可以包括机器学习模型,其被训练为对成像数据执行各种不同的推理任务。在至少一个实施例中,可以在来自不同的设施(例如,位于远处的设施)而不是设施902的成像数据上训练模型注册表924中的机器学习模型。在至少一个实施例中,机器学习模型可能已经在来自一个位置、两个位置或任意数量的位置的成像数据上进行训练。在至少一个实施例中,当在来自特定位置的成像数据上进行训练时,可以在该位置处进行训练,或者至少以保护成像数据的机密性或限制成像数据从场外转移的方式进行训练(例如,遵守HIPAA法规、隐私法规等)。在至少一个实施例中,一旦在一个位置处训练了模型或部分地训练了模型,则可以将机器学习模型添加到模型注册表924。在至少一个实施例中,然后可以在任意数量的其他设施处对机器学习模型进行重新训练或更新,并且重新训练或更新的模型可以在模型注册表924中使用。在至少一个实施例中,然后可以从模型注册表924中选择机器学习模型(并称为输出模型916),并且可以在部署系统906中使用,以执行用于部署系统的一个或更多个应用程序的一个或更多个处理任务。
在至少一个实施例中,训练管线1004(图10)可用于包括设施902的场景中,所述设施需要机器学习模型,以用于执行用于部署系统906中的一个或更多个应用程序的一个或更多个处理任务,但是设施902当前可能没有这样的机器学习模型(或者可能没有为此目的的优化的、高效的或有效的模型)。在至少一个实施例中,由于用于训练机器学习模型的训练数据的种群差异、遗传变异、稳健性,训练数据异常的多样性,和/或训练数据的其他问题,从模型注册表924中选择的机器学习模型可能不会针对在设施902处生成的反馈数据908进行微调或优化。在至少一个实施例中,AI辅助注释910可以用于帮助生成与反馈数据908相对应的注释,以用作重新训练或更新机器学习模型的地面实况数据。在至少一个实施例中,标记的数据912可以用作训练机器学习模型的地面实况数据。在至少一个实施例中,重新训练或更新机器学习模型可以称为模型训练914。在至少一个实施例中,模型训练914(例如AI辅助注释910,标记的数据912或其组合)可以用作重新训练或更新机器学习模型的地面实况数据。
在至少一个实施例中,部署系统906可以包括软件918、服务920、硬件922和/或其他组件、特征和功能。在至少一个实施例中,部署系统906可以包括软件“栈”,以使软件918可以构建在服务920的顶部上,并且可以使用服务920来执行一些或全部处理任务,并且服务920和软件918可以构建在硬件922的顶部上,并使用硬件922来执行部署系统906的处理、存储和/或其他计算任务。
在至少一个实施例中,软件918可以包括任意数量的不同容器,其中每个容器可以执行应用程序的实例化。在至少一个实施例中,每个应用程序可以在高级处理和推理管线中执行一个或更多个处理任务(例如,推理、对象检测、特征检测、分割、图像增强、校准等)。在至少一个实施例中,对于每种类型的计算设备,可能有任意数量的容器,其可以对反馈数据908(或其他数据类型,例如本文所述的数据类型)执行数据处理任务。在至少一个实施例中,除了接收和配置成像数据以供每个容器使用和/或在通过管线处理后由设施902使用的容器以外,还可以基于对处理反馈数据908想要的或所需的不同容器的选择来定义高级处理和推理管线(例如,以将输出转换回可用的数据类型,以便在设施902进行存储和显示)。在至少一个实施例中,软件918内的容器组合(例如,其构成管线)可以被称为虚拟仪器(如本文中更详细地描述的),并且虚拟仪器可以利用服务920和硬件922来执行容器中实例化的应用程序的部分或全部处理任务。
在至少一个实施例中,数据可以作为数据处理管线的一部分进行预处理,以准备数据用于由一个或更多个应用程序处理。在至少一个实施例中,可以在管线的一个或更多个推理任务或其他处理任务的输出上执行后处理,以准备下一个应用程序的输出数据和/或准备输出数据,以供用户传输和/或使用(例如作为对推理请求的响应)。在至少一个实施例中,推理任务可以由一个或更多个机器学习模型执行,例如训练的或部署的神经网络,所述模型可以包括训练系统904的输出模型916。
在至少一个实施例中,数据处理管线的任务可以封装在一个或更多个容器中,每个容器表示能够引用机器学习模型的应用程序和虚拟化计算环境的离散、全功能实例化。在至少一个实施例中,容器或应用程序可被发布到容器注册表(本文更详细地描述)的私有(例如,有限访问)区域中,并且训练的或部署的模型可存储在模型注册表924中,并与一个或更多个应用程序相关联。在至少一个实施例中,应用程序的图像(例如,容器图像)可在容器注册表中使用,并且一旦用户从容器注册表中选择图像以用于在管线中部署,则该图像可用于生成用于应用程序的实例化的容器,以供用户的系统使用。
在至少一个实施例中,开发者可以开发、发布和存储应用程序(例如,作为容器),用于对所提供的数据执行处理和/或推理。在至少一个实施例中,可以使用与系统相关联的软件开发工具包(SDK)来执行开发、发布和/或存储(例如,以确保开发的应用程序和/或容器符合系统或与系统兼容)。在至少一个实施例中,所开发的应用程序可以使用SDK在本地测试(例如,在第一设施处,对来自第一设施的数据),所述SDK作为系统(例如图10中的系统1000)可以支持至少某些服务920。在至少一个实施例中,一旦通过系统1000的验证(例如,为了准确性等),应用程序便会在容器注册表中可用,以供用户(例如,医院、诊所、实验室、医疗保健提供者等)选择和/或实现,以对用户的设施(例如第二设施)处的数据执行一个或更多个处理任务。
在至少一个实施例中,开发者随后可以通过网络共享应用程序或容器,以供系统(例如,图10的系统1000)的用户访问和使用。在至少一个实施例中,可以将完成并经过验证的应用程序或容器存储在容器注册表中,并且可以将相关的机器学习模型存储在模型注册表924中。在至少一个实施例中,请求实体(其提供推理或图像处理请求)可以浏览容器注册表和/或模型注册表924,用于应用程序、容器、数据集、机器学习模型等,选择所需的元素组合以包含在数据处理管线中,并提交处理请求。在至少一个实施例中,请求可以包括执行请求所必需的输入数据,和/或可以包括对在处理请求时要执行的应用程序和/或机器学习模型的选择。在至少一个实施例中,然后可以将请求传递到部署系统906的一个或更多个组件(例如,云),以执行数据处理管线的处理。在至少一个实施例中,由部署系统906进行的处理可以包括引用从容器注册表和/或模型注册表924中选择的元素(例如,应用程序、容器、模型等)。在至少一个实施例中,一旦通过管线生成结果,结果可返回给用户以供参考(例如,用于在本地、本地工作站或终端上执行的查看应用程序套件中进行查看)。
在至少一个实施例中,为了帮助处理或执行管线中的应用程序或容器,可以利用服务920。在至少一个实施例中,服务920可以包括计算服务、协作内容创建服务、模拟服务、人工智能(AI)服务、可视化服务和/或其他服务类型。在至少一个实施例中,服务920可以提供软件918中的一个或更多个应用程序所共有的功能,因此可以将功能抽象为可以被应用程序调用或利用的服务。在至少一个实施例中,由服务920提供的功能可以动态且更有效地运行,同时还可以通过允许应用程序并行地处理数据(例如,使用图10中的并行计算平台1030)来很好地缩放。在至少一个实施例中,不是要求共享服务920提供的相同功能的每个应用程序都必须具有服务920的相应实例,而是可以在各种应用程序之间和之中共享服务920。在至少一个实施例中,作为非限制性示例,服务可包括可用于执行检测或分割任务的推理服务器或引擎。在至少一个实施例中,可以包括模型训练服务,其可以提供机器学习模型训练和/或重新训练能力。
在至少一个实施例中,在服务920包括AI服务(例如,推理服务)的情况下,作为应用程序执行的一部分,可以通过调用(例如,作为API调用)推理服务(例如,推理服务器),以执行一个或更多个机器学习模型或其处理,来执行与用于异常检测(例如,肿瘤、生长异常、瘢痕形成等)的应用程序相关联的一个或更多个机器学习模型。在至少一个实施例中,在另一应用程序包括用于分割任务的一个或更多个机器学习模型的情况下,应用程序可以调用推理服务来执行机器学习模型,以用于执行与分割任务相关联的一个或更多个处理操作。在至少一个实施例中,实现高级处理和推理管线的软件918可以被管线化,因为每个应用程序可以调用相同的推理服务来执行一个或更多个推理任务。
在至少一个实施例中,硬件922可包括GPU、CPU、图形卡、AI/深度学习系统(例如,AI超级计算机,诸如NVIDIA的DGX超级计算机系统)、云平台或其组合。在至少一个实施例中,可以使用不同类型的硬件922,以为部署系统906中的软件918和服务920提供高效的、专门构建的支持。在至少一个实施例中,可以实现使用GPU处理来在AI/深度学习系统内、云系统中、和/或部署系统906的其他处理组件中进行本地处理(例如,在设施902处),以提高游戏名称识别的效率、准确性和效能。
在至少一个实施例中,作为非限制性示例,关于深度学习、机器学习和/或高性能计算、模拟和视觉计算,可以针对GPU处理优化软件918和/或服务920。在至少一个实施例中,部署系统906和/或训练系统904的计算环境中的至少一些可以在具有GPU优化的软件(例如,NVIDIA DGX系统的硬件和软件组合)的数据中心、一个或更多个超级计算机或高性能计算机系统中执行。在至少一个实施例中,如本文所述,硬件922可包括任意数量的GPU,所述GPU可被调用以并行执行数据处理。在至少一个实施例中,云平台还可包括用于深度学习任务的GPU优化执行、机器学习任务或其他计算任务的GPU处理。在至少一个实施例中,可以使用AI/深度学习超级计算机和/或GPU优化的软件(例如,如在NVIDIA的DGX系统上提供的)作为硬件抽象和缩放平台,来执行云平台(例如,NVIDIA的NGC)。在至少一个实施例中,云平台可以在多个GPU上集成应用程序容器集群系统或协调系统(例如,KUBERNETES),以实现无缝缩放和负载均衡。
图10是根据至少一个实施例的用于生成和部署一部署管线的示例系统1000的系统图。在至少一个实施例中,系统1000可以用于实现图9的过程900和/或其他过程,包括高级处理和推理管线。在至少一个实施例中,系统1000可以包括训练系统904和部署系统906。在至少一个实施例中,可以使用软件918、服务920和/或硬件922,来实现训练系统904和部署系统906,如本文所述。
在至少一个实施例中,系统1000(例如,训练系统904和/或部署系统906)可以在云计算环境中(例如,使用云1026)实现。在至少一个实施例中,系统1000可以在本地实现(关于设施),或者作为云计算资源和本地计算资源的组合来实现。在至少一个实施例中,可以通过制定安全措施或协议,将对云1026中的API的访问权限限制为授权用户。在至少一个实施例中,安全协议可以包括网络令牌,其可以由认证(例如,AuthN、AuthZ、Gluecon等)服务签署,并且可以携带适当的授权。在至少一个实施例中,虚拟仪器的API(本文中描述的)或系统1000的其他实例可以被限制为已被审核或授权用于交互的一组公共Ip。
在至少一个实施例中,系统1000的各个组件可以使用多种不同网络类型中的任何一种在彼此之间和之中进行通信,所述不同网络类型包括但不限于经由有线和/或无线通信协议的局域网(LAN)和/或广域网(WAN)。在至少一个实施例中,系统1000的设施和组件之间的通信(例如,用于发送推理请求、用于接收推理请求的结果等)可以通过一个或更多个数据总线、无线数据协议(Wi-Fi)、有线数据协议(例如以太网)等进行传送。
在至少一个实施例中,类似于本文关于图9所描述的,训练系统904可以执行训练管线1004。在至少一个实施例中,其中部署系统906将在部署管线1010中使用一个或更多个机器学习模型,训练管线1004可用于训练或重新训练一个或更多个(例如,预训练的)模型,和/或实现一个或更多个预训练模型1006(例如,无需重新训练或更新)。在至少一个实施例中,作为训练管线1004的结果,可以生成输出模型916。在至少一个实施例中,训练管线1004可以包括任意数量的处理步骤,AI辅助注释910、反馈数据908的标记或注释用于生成标记的数据912、从模型注册表中选择模型、模型训练914、训练、重新训练或更新模型,和/或其他处理步骤。在至少一个实施例中,对于由部署系统906使用的不同的机器学习模型,可以使用不同的训练管线1004。在至少一个实施例中,类似于关于图9描述的第一示例的训练管线1004可用于第一机器学习模型,类似于关于图9描述的第二示例的训练管线1004可用于第二机器学习模型,类似于关于图9描述的第三示例的训练管线1004可用于第三机器学习模型。在至少一个实施例中,可以根据每个相应机器学习模型的要求来使用训练系统904内任务的任何组合。在至少一个实施例中,一个或更多个机器学习模型可能已经被训练并准备好用于部署,因此训练系统904可能不会对机器学习模型进行任何处理,并且机器学习模型可以由部署系统906来实现。
在至少一个实施例中,根据实施例或实施例,一个或更多个输出模型916和/或预训练模型1006可包括任何类型的机器学习模型。在至少一个实施例中并且不限于此,系统1000使用的机器学习模型可以包括使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k-最近邻(Knn)、k均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆(LSTM)、Bi-LSTM、Hopfield、Boltzmann、深层信念、反卷积、生成对抗、液体状态机等),和/或其他类型的机器学习模型。
在至少一个实施例中,训练管线1004可以包括AI辅助注释。在至少一个实施例中,可以通过任何数量的技术来生成标记的数据912(例如,传统注释)。在至少一个实施例中,在一些示例中可以在绘图程序(例如,注释程序)、计算机辅助设计(CAD)程序、标记程序、适用于生成地面实况的注释或标签的另一类型的应用程序中、和/或可以手绘,生成标签或其他注释。在至少一个实施例中,地面实况数据可以被合成产生(例如,从计算机模型或渲染生成)、真实产生(例如,从真实世界数据设计和生成)、机器自动产生(例如,使用特征分析和学习从数据中提取特征,然后生成标签)、人工注释(例如,标记器或注释专家,定义标签的位置)和/或其组合。在至少一个实施例中,对于反馈数据908(或机器学习模型使用的其他数据类型)的每个实例,可以存在由训练系统904生成的相应的地面实况数据。在至少一个实施例中,可以作为部署管线1010的一部分执行AI辅助注释;补充或代替训练管线1004中包括的AI辅助注释。在至少一个实施例中,系统1000可以包括多层平台,所述多层平台可以包括诊断应用程序(或其他应用程序类型)的软件层(例如软件918),其可以执行一个或更多个医学成像和诊断功能。
在至少一个实施例中,软件层可以被实现为安全的、加密的和/或经认证的API,通过所述API可以从外部环境(例如,设施902)援引(invoke)(例如,调用(call))应用程序或容器。在至少一个实施例中,应用程序随后可以调用或执行一个或更多个服务920,以执行与各自的应用程序相关联的计算、AI或可视化任务,并且软件918和/或服务920可以利用硬件922以有效和高效的方式执行处理任务。
在至少一个实施例中,部署系统906可以执行部署管线1010。在至少一个实施例中,部署管线1010可以包括任意数量的应用程序,所述应用程序可以是顺序的、非顺序的,或者以其他方式应用于反馈数据(和/或其他数据类型)-包括AI辅助注释,如上所述。在至少一个实施例中,如本文所述,用于个体设备的部署管线1010可以被称为用于设备的虚拟仪器。在至少一个实施例中,对于单个设备,可以存在不止一个部署管线1010,这取决于从设备生成的数据所期望的信息。
在至少一个实施例中,可用于部署管线1010的应用程序可包括可用于对反馈数据或来自设备的其他数据执行处理任务的任何应用程序。在至少一个实施例中,由于各种应用程序可以共享公共图像操作,因此在一些实施例中,可以使用数据增强库(例如,作为服务920之一)来加速这些操作。在至少一个实施例中,为了避免依赖于CPU处理的传统处理方法的瓶颈,并行计算平台1030可用于这些处理任务的GPU加速。
在至少一个实施例中,部署系统906可以包括用户接口1014(例如,图形用户接口、Web接口等),所述用户接口可以被用于选择要包括在部署管线1010中的应用程序、布置应用程序、修改或改变应用程序或其参数或构造、在设置和/或部署期间使用部署管线1010以及与其交互,和/或以其他方式与部署系统906交互。在至少一个实施例中,尽管没有关于训练系统904示出,但是用户接口1014(或不同的用户接口)可用于选择在部署系统906中使用的模型、用于选择用于在训练系统904中训练或重新训练的模型,和/或用于以其他方式与训练系统904交互。
在至少一个实施例中,除了应用程序协调系统1028之外,还可以使用管线管理器1012来管理部署管线1010的应用程序或容器与服务920和/或硬件922之间的交互。在至少一个实施例中,管线管理器1012可以被配置为促进从应用程序到应用程序、从应用程序到服务920,和/或从应用程序或服务到硬件922的交互。在至少一个实施例中,尽管示出为包括在软件918中,这并不旨在进行限制,并且在一些示例中,管线管理器1012可以被包括在服务920中。在至少一个实施例中,应用程序协调系统1028(例如,Kubernetes、DOCKER等)可以包括容器协调系统,其可以将应用程序分组到容器中,作为用于协调、管理、缩放和部署的逻辑单元。在至少一个实施例中,通过将来自部署管线1010的应用程序(例如,重建应用程序、分割应用程序等)与各个容器相关联,每个应用程序可以在自包含的环境(例如,在内核级)中执行,以提高速度和效率。
在至少一个实施例中,每个应用程序和/或容器(或其映像)可以被单独开发、修改和部署(例如,第一用户或开发者可以开发、修改和部署第一应用程序,第二用户或开发者可以开发、修改和部署与第一用户或开发者分开的第二应用程序),这可以允许专注并关注单个应用程序和/或容器的任务,而不受另一个应用程序或容器的任务的阻碍。在至少一个实施例中,管线管理器1012和应用程序协调系统1028可以辅助不同容器或应用程序之间的通信和协作。在至少一个实施例中,只要每个容器或应用程序的预期输入和/或输出是系统已知的(例如,基于应用程序或容器的构造),则应用程序协调系统1028和/或管线管理器1012可以促进每个应用程序或容器之间和之中的通信以及资源的共享。在至少一个实施例中,由于部署管线1010中的一个或更多个应用程序或容器可以共享相同的服务和资源,因此应用程序协调系统1028可以在各个应用程序或容器之间和之中进行协调、负载均衡,并确定服务或资源的共享。在至少一个实施例中,调度器可用于跟踪应用程序或容器的资源需求、这些资源的当前使用或计划使用,以及资源可用性。因此,在至少一个实施例中,考虑到系统的需求和可用性,调度器可以将资源分配给不同的应用程序,并在应用程序之间和之中分配资源。在一些示例中,调度器(和/或应用程序协调系统1028的其他组件)可以基于施加在系统上的约束(例如,用户约束)来确定资源可用性和分布,例如服务质量(QoS)、对数据输出的迫切需求(例如,以确定是执行实时处理还是延迟处理)等。
在至少一个实施例中,由部署系统906中的应用程序或容器利用并由其共享的服务920,可以包括计算服务1016、协作内容创建服务1017、AI服务1018、模拟服务1019、可视化服务1020和/或其他服务类型。在至少一个实施例中,应用程序可以调用(例如,执行)一个或更多个服务920,以执行针对应用程序的处理操作。在至少一个实施例中,应用程序可以利用计算服务1016来执行超级计算或其他高性能计算(HPC)任务。在至少一个实施例中,可以利用一个或更多个计算服务1016来执行并行处理(例如,使用并行计算平台1030),以通过一个或更多个应用程序和/或单个应用程序的一个或更多个任务基本上同时地处理数据。在至少一个实施例中,并行计算平台1030(例如,NVIDIA的CUDA)可以在GPU(GPGPU)(例如,GPU 1022)上实现通用计算。在至少一个实施例中,并行计算平台1030的软件层可以提供对GPU的虚拟指令集和并行计算元素的访问,以执行计算内核。在至少一个实施例中,并行计算平台1030可以包括存储器,并且在一些实施例中,可以在多个容器之间和之中,和/或在单个容器内的不同处理任务之间和之中共享存储器。在至少一个实施例中,可以为多个容器和/或容器内的多个进程生成进程间通信(IPC)调用,以使用来自并行计算平台1030的共享存储器段的相同数据(例如,其中一应用程序或多个应用程序的多个不同阶段正在处理相同的信息)。在至少一个实施例中,不是复制数据并将数据移动到存储器中的不同位置(例如,读/写操作),而是可以将存储器相同位置中的相同数据用于任何数量的处理任务(例如,在同一时间、不同时间等)。在至少一个实施例中,由于作为处理的结果数据被用于生成新数据,因此数据的新位置的该信息可以在各个应用程序之间存储和共享。在至少一个实施例中,数据的位置以及经更新或修改的数据的位置可以是如何理解容器中的有效负载的定义的一部分。
在至少一个实施例中,可以利用AI服务1018来执行推理服务,该推理服务用于执行与应用程序相关联的机器学习模型(例如,任务为执行应用程序的一个或更多个处理任务)。在至少一个实施例中,AI服务1018可以利用AI系统1024来执行机器学习模型(例如,诸如CNN之类的神经网络)以用于分割、重建、对象检测、特征检测、分类和/或其他推理任务。在至少一个实施例中,部署管线1010的应用程序可以使用来自训练系统904的一个或更多个输出模型916和/或应用程序的其他模型,来对成像数据(例如,DICOM数据、RIS数据、CIS数据、符合REST的数据、RPC数据、原始数据等)执行推理。在至少一个实施例中,使用应用程序协调系统1028(例如,调度器)进行推理的两个或更多个示例可以是可用的。在至少一个实施例中,第一类别可以包括高优先级/低延时路径,其可以实现更高服务水平协议,例如用于在紧急情况下对紧急请求执行推理,或者在诊断过程中用于放射科医生。在至少一个实施例中,第二类别可以包括标准优先级路径,其可用于可能不紧急的请求或者可以在稍后的时间执行分析的情况。在至少一个实施例中,应用程序协调系统1028可以基于优先级路径来分配资源(例如,服务920和/或硬件922),以用于AI服务1018的不同推理任务。
在至少一个实施例中,共享存储器可以被安装到系统1000中的AI服务1018。在至少一个实施例中,共享存储器可以操作为高速缓存(或其他存储设备类型),并且可以用于处理来自应用程序的推理请求。在至少一个实施例中,当提交推理请求时,部署系统906的一组API实例可以接收请求,并且可以选择一个或更多个实例(例如,为了最佳拟合、为了负载均衡等)来处理请求。在至少一个实施例中,为了处理请求,可以将请求输入到数据库中,如果尚未在高速缓存中,则可以从模型注册表924定位机器学习模型,验证步骤可以确保将适当的机器学习模型加载到高速缓存中(例如,共享存储),和/或可以将模型的副本保存到高速缓存中。在至少一个实施例中,如果应用程序尚未运行或没有足够的应用程序的实例,则可使用调度器(例如,管线管理器1012的调度器)来启动在请求中引用的应用程序。在至少一个实施例中,如果尚未启动推理服务器来执行模型,则可以启动推理服务器。在至少一个实施例中,每个模型可以启动任意数量的推理服务器。在至少一个实施例中,在将推理服务器聚类的拉(pull)模型中,每当负载均衡有利时,就可以将模型高速缓存。在至少一个实施例中,推理服务器可以静态加载到相应的分布式服务器中。
在至少一个实施例中,可以使用在容器中运行的推理服务器来执行推理。在至少一个实施例中,推理服务器的实例可以与模型(并且可选地与模型的多个版本)相关联。在至少一个实施例中,如果在接收到对模型执行推理的请求时推理服务器的实例不存在,则可以加载新实例。在至少一个实施例中,当启动推理服务器时,可以将模型传递到推理服务器,使得可以使用相同的容器来服务不同的模型,只要推理服务器作为不同的实例运行即可。
在至少一个实施例中,在应用程序执行期间,可以接收对给定应用程序的推理请求,并且可以加载(如果尚未加载的话)容器(例如,托管推理服务器的实例),以及可以调用启动程序。在至少一个实施例中,容器中的预处理逻辑可以(例如,使用CPU和/或GPU)对传入的数据进行加载、解码和/或执行任何附加的预处理。在至少一个实施例中,一旦数据准备好进行推理,容器就可以根据需要对数据进行推理。在至少一个实施例中,这可以包括对一个图像(例如,手部X射线)的单个推理调用,或可要求对数百个图像(例如,胸部CT)进行推理。在至少一个实施例中,应用程序可在完成之前总结结果,其可以包括但不限于单个置信度得分、像素级分割、体素级分割、生成可视化或生成文本以总结结果。在至少一个实施例中,可以为不同的模型或应用程序分配不同的优先级。例如,一些模型可具有实时(TAT小于1分钟)优先级,而其他模型可具有较低的优先级(例如,TAT小于10分钟)。在至少一个实施例中,模型执行时间可以从请求机构或实体进行测量,并且可以包括合作网络遍历时间以及推理服务的执行时间。
在至少一个实施例中,请求在服务920和推理应用程序之间的传送可以隐藏在软件开发工具包(SDK)后面,并且可以通过队列提供鲁棒的传输。在至少一个实施例中,将通过API将请求放置在队列中,以用于个体应用程序/租户ID组合,并且SDK将从队列中拉取请求并将请求提供给应用程序。在至少一个实施例中,在SDK将从中拾取队列的环境中,可以提供队列的名称。在至少一个实施例中,通过队列的异步通信可能有用,因为它可以允许应用程序的任何实例在其可用时拾取工作。在至少一个实施例中,可以通过队列将结果传送回去,以确保没有数据丢失。在至少一个实施例中,队列还可以提供对工作进行分割的能力,因为最高优先级的工作可以进入与应用程序的大多数实例连接的队列,而最低优先级的工作可以进入与单个实例连接的队列,所述实例按照接收到的顺序处理任务。在至少一个实施例中,应用程序可以在GPU加速的实例上运行,所述实例在云1026中生成,并且推理服务可以在GPU上执行推理。
在至少一个实施例中,可以利用可视化服务1020来生成用于查看应用程序和/或部署管线1010输出的可视化。在至少一个实施例中,可视化服务1020可以利用GPU 1022来生成可视化。在至少一个实施例中,可视化服务1020可以实现诸如光线追踪或其他光传输模拟技术之类的渲染效果,以生成更高质量的可视化。在至少一个实施例中,可视化可以包括但不限于2D图像渲染、3D体渲染、3D体重建、2D层析切片、虚拟现实显示、增强现实显示等。在至少一个实施例中,可以使用虚拟化环境来生成虚拟交互显示或环境(例如,虚拟环境),以供系统用户(例如,医生、护士、放射科医生等)进行交互。在至少一个实施例中,可视化服务1020可以包括内部可视化器、电影和/或其他渲染或图像处理能力或功能(例如,光线追踪、光栅化、内部光学器件等)。
在至少一个实施例中,硬件922可以包括GPU 1022、AI系统1024、云1026和/或用于执行训练系统904和/或部署系统906的任何其他硬件。在至少一个实施例中,GPU 1022(例如,NVIDIA的TESLA和/或QUADRO GPU)可包括可用于执行计算服务1016、协作内容创建服务1017、AI服务1018、模拟服务1019、可视化服务1020、其他服务和/或软件918的任何特征或功能的处理任务的任意数量的GPU。例如,对于AI服务1018,GPU 1022可用于对成像数据(或机器学习模型使用的其他数据类型)执行预处理,对机器学习模型的输出执行后处理和/或执行推理(例如以执行机器学习模型)。在至少一个实施例中,云1026、AI系统1024和/或系统1000的其他组件可以使用GPU 1022。在至少一个实施例中,云1026可以包括用于深度学习任务的GPU优化的平台。在至少一个实施例中,AI系统1024可以使用GPU,并且可以使用一个或更多个AI系统1024来执行云1026(或者任务为深度学习或推理的至少部分)。同样,尽管硬件922被示出为离散组件,但这并不意图是限制,并且硬件922的任何组件可以与硬件922的任何其他组件组合,或由硬件922的任何其他组件利用。
在至少一个实施例中,AI系统1024可包括专门构建的计算系统(例如,超级计算机或HPC),该计算系统配置用于推理、深度学习、机器学习和/或其他人工智能任务。在至少一个实施例中,除了CPU、RAM、存储器和/或其他组件、特征或功能之外,AI系统1024(例如,NVIDIA的DGX)还可以包括可以使用多个GPU 1022来执行分GPU优化的软件(例如,软件栈)。在至少一个实施例中,可以在云1026中(例如,在数据中心中)实现一个或更多个AI系统1024,以执行系统1000的一些或全部基于AI的处理任务。
在至少一个实施例中,云1026可以包括GPU加速的基础设施(例如,NVIDIA的NGC),其可以提供用于执行系统1000的处理任务的GPU优化的平台。在至少一个实施例中,云1026可以包括AI系统1024,其用于执行系统1000的一个或更多个基于AI的任务(例如,作为硬件抽象和缩放平台)。在至少一个实施例中,云1026可以与利用多个GPU的应用程序协调系统1028集成,以实现应用程序和服务920之间和之中的无缝缩放和负载均衡。在至少一个实施例中,如本文所述,云1026可以负责执行系统1000的至少一些服务920,包括计算服务1016、AI服务1018和/或可视化服务1020。在至少一个实施例中,云1026可以执行大小批的推理(例如,执行NVIDIA的TENSOR RT),提供加速的并行计算API和平台1030(例如,NVIDIA的CUDA),执行应用程序协调系统1028(例如,KUBERNETES),提供图形渲染API和平台(例如,用于光线跟踪,2D图形、3D图形和/或其他渲染技术以产生更高质量的电影效果),和/或可以为系统1000提供其他功能。
在至少一个实施例中,为了保护患者的机密性(例如,在非现场使用患者数据或记录的情况下),云1026可以包括注册表-例如深度学习容器注册表。在至少一个实施例中,注册表可以存储用于实例化应用程序的容器,所述应用程序可以对患者数据执行预处理、后处理或其他处理任务。在至少一个实施例中,云1026可接收数据,所述数据包括患者数据以及容器中传感器数据,仅对那些容器中的传感器数据执行所请求的处理,然后将结果输出和/或可视化转发给适当的各方和/或设备(例如用于可视化或诊断的本地医疗设备),而无需提取、存储或以其他方式访问患者数据。在至少一个实施例中,根据HIPAA和/或其他数据规定来保留患者数据的机密性。
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的本公开内容的精神和范围内的所有修改、替代构造和等同物。
除非另有说明或显然与上下文矛盾,否则在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中),术语“一”和“一个”和“该”以及类似指代的使用应被解释为涵盖单数和复数,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。在至少一个实施例中,除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。
除非以其他方式明确指出或与上下文明显矛盾,否则诸如“A,B和C中的至少一个”或“A,B与C中的至少一个”形式的短语之类的连接语在上下文中理解为通常用来表示项目、条款等,其可以是A或B或C,也可以是A和B和C集的任何非空子集。例如,在具有三个成员的集的说明性示例中,连接短语“A,B和C中的至少一个”和“A,B与C中的至少一个”是指以下任意集:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这种连接语言通常不旨在暗示某些实施例要求存在A中的至少一个,B中的至少一个和C中的至少一个。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。在至少一个实施例中,多个项目中项目的数量至少为两个,但如果明确指示或通过上下文指示,则可以更多。此外,除非另有说明或从上下文中可以清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。
除非本文另外指出或与上下文明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)之类的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),该代码通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码以例如计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其排除了暂时性信号(例如,传播的瞬态电或电磁传输),但包括在暂时性信号收发器内的非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,该可执行指令在由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的个体非暂时性存储介质中的一个或更多个缺少全部代码,而是多个非暂时性计算机可读存储介质共同存储全部代码。在至少一个实施例中,可执行指令被执行,以使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“CPU”)执行一些指令,而图形处理单元(“GPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机系统被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中是分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。
在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“计算”、“确定”等之类的术语,是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是CPU或GPU。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”进程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。在至少一个实施例中,术语“系统”和“方法”在本文中可以互换使用,只要系统可以体现一种或更多种方法,并且方法可以被认为是系统。
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。在至少一个实施例中,可以通过多种方式来完成获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在至少一个实施例中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在至少一个实施例中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。在至少一个实施例中,也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。
尽管本文的描述阐述了所描述的技术的示例实施例,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于描述的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。
此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。

Claims (20)

1.一种方法,包括:
识别第一图像和第一参考图像;
确定第一多个运动矢量MV,所述第一多个MV中的每一个都表征所述第一图像的一个或更多个像素相对于所述第一参考图像的位移;
使用所述第一多个MV识别所述第一图像的第一区域,所述第一区域包括所述第一图像中的一个或更多个对象的描绘;
基于所述第一区域的大小选择多个机器学习模型MLM的第一MLM,所述多个MLM中的每一个对应于多个输入大小中的相应一个;
基于所述第一区域的大小和对应于所述第一MLM的输入大小,选择所述第一图像的第一部分,其中所述第一部分包括所述第一区域;以及
基于使用所述第一MLM对所述第一部分的处理的输出来检测所述第一图像中的所述一个或更多个对象的存在。
2.如权利要求1所述的方法,其中,所述第一图像的所述第一部分被选择为具有等于与所述第一MLM相对应的所述输入大小的大小。
3.如权利要求1所述的方法,其中,所述第一图像的所述第一部分被选择为具有与所述第一MLM的所述输入大小不同的大小,所述方法还包括:
在由所述第一MLM处理所述第一部分之前,重新缩放所述第一图像的所述第一部分以匹配对应于所述第一MLM的所述输入大小。
4.如权利要求1所述的方法,其中,通过所述第一MLM对所述第一部分的处理的所述输出包括用于所述第一图像中的所述一个或更多个对象中的至少一个对象的边界框。
5.如权利要求1所述的方法,还包括:
识别第二图像和第二参考图像;
确定第二多个运动矢量MV,所述第二多个MV中的每一个表征所述第二图像的一个或更多个像素相对于所述第二参考图像的位移;
使用所述第二多个MV识别所述第二图像的第二区域,所述第二区域包括所述第二图像中的一个或更多个对象的描绘;
基于所述第二区域的大小选择所述多个机器学习模型MLM中的第二MLM,其中对应于所述第二MLM的输入大小不同于对应于所述第一MLM的输入大小;
基于所述第二区域的大小和对应于所述第二MLM的所述输入大小,选择所述第二图像的第二部分,其中所述第二部分包括所述第二区域;以及
使用利用所述第二MLM对所述第二部分的处理的输出来检测所述第二图像中的所述一个或更多个对象的存在。
6.如权利要求5所述的方法,还包括:通过以下方式对所述第一图像中的一个或更多个对象和所述第二图像中的一个或更多个对象进行分类:
使用一个或更多个分类器MLM处理组合输入,其中所述组合输入包括:
使用所述第一MLM对所述第一部分的处理的所述输出,以及
使用所述第二MLM对所述第二部分的处理的所述输出,以及其中所述一个或更多个分类器MLM被训练以确定所述组合输入中描绘的一个或更多个对象的类型。
7.如权利要求6所述的方法,其中使用所述一个或更多个分类器MLM产生的输出包括针对所述第一图像或所述第二图像中的至少一个中的所述一个或更多个对象中的至少一个对象的对应于以下各项的一个或更多个推理:i)车辆类型、ii)车辆品牌或iii)车辆模型。
8.如权利要求6所述的方法,其中,使用所述一个或更多个分类器MLM处理的所述组合输入是多个组合输入之一,并且其中,所述一个或更多个分类器MLM被配置为执行所述多个组合输入的管线处理。
9.如权利要求5所述的方法,其中,所述第一图像和所述第一参考图像由第一相机获得,其中,所述第二图像和所述第二参考图像由第二相机获得,并且其中,所述第一相机的视场不同于所述第二相机的视场。
10.如权利要求1所述的方法,其中,使用所述第一MLM处理所述第一部分包括使用一个或更多个图形处理单元执行与所述第一MLM相关联的一个或更多个计算。
11.一种系统,包括:
存储器设备;以及
一个或更多个处理设备,其通信地耦合到所述存储器设备,用于:
识别第一图像和第一参考图像;
确定第一多个运动矢量MV,所述第一多个MV中的每一个都表征所述第一图像的一个或更多个像素相对于所述第一参考图像的位移;
使用所述第一多个MV识别所述第一图像的第一区域,所述第一区域包括所述第一图像中的一个或更多个对象的描绘;
基于所述第一区域的大小选择多个机器学习模型MLM的第一MLM,所述多个MLM中的每一个对应于多个输入大小中的相应一个;
基于所述第一区域的大小和所述第一MLM的输入大小,选择所述第一图像的第一部分,其中所述第一部分包括第一区域;以及
基于使用所述第一MLM对所述第一部分的处理的输出来检测所述第一图像中所述一个或更多个对象的存在。
12.如权利要求11所述的系统,其中,所述第一图像的所述第一部分被选择为具有等于与所述第一MLM相对应的所述输入大小的大小。
13.如权利要求11所述的系统,其中,所述第一图像的所述第一部分被选择为具有与所述第一MLM的所述输入大小不同的大小,并且其中,所述一个或更多个处理设备进一步用于:
在使用所述第一MLM处理所述第一部分之前,重新缩放所述第一图像的所述第一部分以匹配对应于所述第一MLM的所述输入大小。
14.如权利要求11所述的系统,其中,所述一个或更多个处理设备还用于:
识别第二图像和第二参考图像;
确定第二多个运动矢量MV,所述第二多个MV中的每一个都表征所述第二图像的一个或更多个像素相对于所述第二参考图像的位移;
使用所述第二多个MV识别所述第二图像的第二区域,所述第二区域包括所述第二图像中的一个或更多个对象的描绘;
基于所述第二区域的大小,选择所述多个机器学习模型MLM中的第二MLM,其中对应于所述第二MLM的输入大小不同于对应于所述第一MLM的输入大小;
基于所述第二区域的大小和所述第二MLM的输入大小,选择所述第二图像的第二部分,其中所述第二部分包括所述第二区域;以及
使用利用所述第二MLM对所述第二部分的处理的输出来检测所述第二图像中的所述一个或更多个对象的存在。
15.如权利要求14所述的系统,其中,所述一个或更多个处理设备还用于:
使用一个或更多个分类器MLM处理组合输入,其中所述组合输入包括:
使用所述第一MLM对所述第一部分的处理的所述输出,以及
使用所述第二MLM对所述第二部分的处理的所述输出,以及其中,所述一个或更多个分类器MLM被训练以确定所述组合输入中描绘的一个或更多个对象的类型。
16.如权利要求15所述的系统,其中使用所述一个或更多个分类器MLM产生的输出包括针对所述第一图像或所述第二图像中的至少一个中的所述一个或更多个对象中的一个对象的对应于以下各项的一个或更多个推理:i)车辆类型、ii)车辆品牌或iii)车辆模型。
17.如权利要求11所述的系统,其中,所述一个或更多个处理设备包括一个或更多个图形处理单元。
18.一种非暂时性计算机可读介质,在其上存储指令,其中所述指令在由处理设备执行时使所述处理设备:
识别第一图像和第一参考图像;
确定第一多个运动矢量MV,所述第一多个MV中的每一个都表征所述第一图像的一个或更多个像素相对于所述第一参考图像的位移;
使用所述第一多个MV识别所述第一图像的第一区域,所述第一区域包括所述第一图像中的一个或更多个对象的描绘;
基于所述第一区域的大小选择所述多个机器学习模型MLM的第一MLM,所述多个MLM中的每一个对应于多个输入大小中的相应一个;
基于所述第一区域的大小和对应于所述第一MLM的输入大小,选择所述第一图像的第一部分,其中所述第一部分包括所述第一区域;以及
基于使用所述第一MLM对所述第一部分的处理的输出来检测所述第一图像中的所述一个或更多个对象的存在。
19.如权利要求18所述的计算机可读介质,其中,所述指令还使所述处理设备:
识别第二图像和第二参考图像;
确定第二多个运动矢量MV,所述第二多个MV中的每一个都表征所述第二图像的一个或更多个像素相对于所述第二参考图像的位移;
使用所述第二多个MV识别所述第二图像的第二区域,所述第二区域包括所述第二图像中的一个或更多个对象的描绘;
基于所述第二区域的大小,选择所述多个机器学习模型MLM中的第二MLM,其中对应于所述第二MLM的输入大小不同于对应于所述第一MLM的输入大小;
基于所述第二区域的大小和所述第二MLM的所述输入大小,选择所述第二图像的第二部分,其中所述第二部分包括所述第二区域;以及
基于使用所述第二MLM对所述第二部分的处理的输出来检测所述第二图像中的所述一个或更多个对象的存在。
20.如权利要求19所述的计算机可读介质,其中所述指令还使所述处理设备:
使用一个或更多个分类器MLM处理组合输入,其中所述组合输入包括:
使用所述第一MLM对所述第一部分的处理的所述输出,以及
使用所述第二MLM对所述第二部分的处理的所述输出,以及其中所述一个或更多个分类器MLM被训练以确定所述组合输入中描绘的一个或更多个对象的类型。
CN202310074552.6A 2022-01-25 2023-01-18 图像流处理中使用具有动态感兴趣区域的光流的对象检测 Pending CN116503772A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/584,151 2022-01-25
US17/584,151 US20230237671A1 (en) 2022-01-25 2022-01-25 Object detection in image stream processing using optical flow with dynamic regions of interest

Publications (1)

Publication Number Publication Date
CN116503772A true CN116503772A (zh) 2023-07-28

Family

ID=87068411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310074552.6A Pending CN116503772A (zh) 2022-01-25 2023-01-18 图像流处理中使用具有动态感兴趣区域的光流的对象检测

Country Status (3)

Country Link
US (1) US20230237671A1 (zh)
CN (1) CN116503772A (zh)
DE (1) DE102023101265A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12002256B1 (en) 2022-12-08 2024-06-04 Sas Institute Inc. Systems and methods for configuring and using a multi-stage object classification and condition pipeline
US11836968B1 (en) * 2022-12-08 2023-12-05 Sas Institute, Inc. Systems and methods for configuring and using a multi-stage object classification and condition pipeline

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101997479B1 (ko) * 2015-10-20 2019-10-01 삼성전자주식회사 사용자 인증을 위한 생체 영역을 검출하는 방법 및 장치
US10861187B2 (en) * 2019-02-13 2020-12-08 Apical Limited Method of processing object detection data
US11461992B2 (en) * 2020-11-12 2022-10-04 Samsung Electronics Co., Ltd. Region of interest selection for object detection
US11568625B2 (en) * 2021-01-07 2023-01-31 Nvidia Corporation Targeted object detection in image processing applications

Also Published As

Publication number Publication date
US20230237671A1 (en) 2023-07-27
DE102023101265A1 (de) 2023-07-27

Similar Documents

Publication Publication Date Title
US11816790B2 (en) Unsupervised learning of scene structure for synthetic data generation
US11783230B2 (en) Automatic generation of ground truth data for training or retraining machine learning models
US20210089921A1 (en) Transfer learning for neural networks
US20220147743A1 (en) Scalable semantic image retrieval with deep template matching
US11568625B2 (en) Targeted object detection in image processing applications
CN116029360A (zh) 使用一个或更多个神经网络的缺陷检测
CN116503772A (zh) 图像流处理中使用具有动态感兴趣区域的光流的对象检测
US12045666B2 (en) Profiling and performance monitoring of distributed computational pipelines
US11983903B2 (en) Processing images using self-attention based neural networks
US20240249463A1 (en) Ray tracing using reservoir resampling with spatial shift-mapping
US20240126811A1 (en) Neural networks to indicate data dependencies
DE102023101394A1 (de) Techniken zum platzieren von objekten unter verwendung neuronaler netze
CN117122929A (zh) 识别用于后处理的应用程序缓冲器及在辅助应用程序中的重用
CN117710181A (zh) 视频生成技术
Li et al. Scaling the inference of digital pathology deep learning models using cpu-based high-performance computing
US11546568B1 (en) View synthesis for dynamic scenes
DE102023121883A1 (de) Erzeugung texturierter netze unter verwendung von einem oder mehren neuronalen netzwerken
CN117391922A (zh) 基于神经网络的图像照明
Sarv Ahrabi et al. How much BiGAN and CycleGAN-learned hidden features are effective for COVID-19 detection from CT images? A comparative study
CN116134490A (zh) 使用神经网络改进推理
CN116805165A (zh) 选择用于优化推理的流
WO2022251672A1 (en) Processing ultrahyperbolic representations using neural networks
Unzueta et al. Building a Camera-based Smart Sensing System for Digitalized On-demand Aircraft Cabin Readiness Verification.
US20240169686A1 (en) Directed inferencing using input data transformations
US20240296623A1 (en) Using machine learning for surface reconstruction in synthetic content generation systems and applications

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