[go: up one dir, main page]

CN111199562B - 用于在机器人拣选时快速物体检测的系统和方法 - Google Patents

用于在机器人拣选时快速物体检测的系统和方法 Download PDF

Info

Publication number
CN111199562B
CN111199562B CN201911132136.7A CN201911132136A CN111199562B CN 111199562 B CN111199562 B CN 111199562B CN 201911132136 A CN201911132136 A CN 201911132136A CN 111199562 B CN111199562 B CN 111199562B
Authority
CN
China
Prior art keywords
template
keypoints
image
bounding box
side surfaces
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
CN201911132136.7A
Other languages
English (en)
Other versions
CN111199562A (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.)
Beijing Jingdong Qianshi Technology Co Ltd
JD com American Technologies Corp
Original Assignee
Beijing Jingdong Qianshi Technology Co Ltd
JD com American Technologies 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 Beijing Jingdong Qianshi Technology Co Ltd, JD com American Technologies Corp filed Critical Beijing Jingdong Qianshi Technology Co Ltd
Publication of CN111199562A publication Critical patent/CN111199562A/zh
Application granted granted Critical
Publication of CN111199562B publication Critical patent/CN111199562B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/74Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/62Analysis of geometric attributes of area, perimeter, diameter or volume
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/255Detecting or recognising potential candidate objects based on visual cues, e.g. shapes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/24Character recognition characterised by the processing or recognition method
    • G06V30/248Character recognition characterised by the processing or recognition method involving plural approaches, e.g. verification by template match; Resolving confusion among similar patterns, e.g. "O" versus "Q"
    • 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/30108Industrial image inspection
    • G06T2207/30164Workpiece; Machine component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/462Salient features, e.g. scale invariant feature transforms [SIFT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Geometry (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Image Analysis (AREA)

Abstract

一种用于监测电子商务平台的方法和系统。该系统包括计算设备和视觉传感器。计算设备包括处理器和存储计算机可执行代码的存储设备。计算机可执行代码在处理器处执行时,被配置为:从由视觉传感器捕获的物体的图像中提取图像关键点;取得物体的模板,其中模板包括物体的至少一个模板侧表面的模板关键点;从模板侧表面中挑选两个模板关键点,并确定分别与所挑选的两个模板关键点相匹配的两个图像关键点;基于所确定的两个图像关键点,构建物体的边界框;以及精细化边界框。

Description

用于在机器人拣选时快速物体检测的系统和方法
相关申请的交叉引用
在本公开的描述中引用和讨论了可以包括专利、专利申请和各种出版物的一些参考文献。提供这样的参考文献的引用和/或讨论仅是为了阐明本公开的描述,而不是承认任何这样的参考文献是本文描述的公开内容的“现有技术”。本说明书中引用和讨论的所有参考文献均以引用方式整体并入本文中,其程度如同每篇参考文献单独通过引用并入的程度相同。
技术领域
本公开总体涉及机器人拣选的操作,并且更具体地涉及用于在机器人从机器人货箱(robot bin)拣选物品期间快速物体检测的系统和方法。
背景技术
本文提供的背景技术描述是为了总体上呈现本公开的背景。在此背景技术部分描述的程度上,当前指定的发明人的工作以及描述中的在提交时可以不被描述为现有技术的方面既不明确也不暗示地被认为是针对现有技术的现有技术。
机器人货箱拣选(bin picking)是仓库自动化中的重要应用。在机器人货箱拣选系统中,需要计算机视觉系统首先在运输货箱中定位出具有库存量单位(stock keepingunit)(SKU)的物品,并且然后将每个SKU物品的位置和姿态发送给机器人控制器,使得机器人手臂可以被引导以执行从货箱拣选的动作。然而,快速精确地定位SKU物品是一个挑战。
因此,本领域存在用于解决上述缺陷和不足的尚未解决的需求。
发明内容
在某些方面中,本公开涉及一种用于从多个物体中确定目标物体的姿态的系统。在某些实施例中,系统包括计算设备和与计算设备通信的视觉传感器。计算设备具有处理器和存储计算机可执行代码的存储设备。当计算机可执行代码在处理器处执行时,被配置为:
从图像中提取图像关键点,其中,图像是通过视觉传感器对感兴趣区域捕获得到的,感兴趣区域包括多个物体,并且关键点中的每个关键点用其位置和特征描述符来定义;
取得目标物体的模板,其中,模板包括多个模板侧表面,模板侧表面中的每个模板侧表面以多个模板关键点来表征,并且模板关键点中的每个模板关键点用其位置和特征描述符来定义;
将图像关键点与模板侧表面中的每个模板侧表面中的模板关键点进行匹配;
基于图像关键点与模板侧表面中的一个模板侧表面中的模板关键点之间的匹配的数量,来选择模板侧表面中的所述一个模板侧表面;
从所选择的模板侧表面中挑选两个模板关键点,并且确定分别与所挑选的两个模板关键点匹配的两个图像关键点;
基于所确定的两个图像关键点来构建边界框,其中,边界框表示与模板的所选择的模板侧表面相对应的图像侧表面;
确定内点关键点,其中内点关键点位于边界框内部,并且在所选择的模板侧表面中具有匹配的模板关键点;
使用内点关键点精细化边界框。
基于精细化后的边界框确定目标物体的姿态。
在某些实施例中,计算机可执行代码被配置为在提取图像关键点之前定义针对图像中的物体的掩模。
在某些实施例中,计算机可执行代码被配置为执行以下步骤:选择模板侧表面中的具有大量匹配的一个模板侧表面,并且以预定次数迭代地从所选择的模板侧表面中挑选两个模板关键点。
在某些实施例中,模板侧表面中的每个模板侧表面被选择了占所述预定次数的百分比的次数,并且百分比是通过将所选择的模板侧表面中的匹配的关键点的数量除以所有模板侧表面中的匹配的关键点的总数量来确定的。
在某些实施例中,所挑选的两个模板关键点相距至少5个像素,并且所挑选的两个模板关键点中的每个模板关键点与图像关键点之一相匹配。
在某些实施例中,两个模板关键点是随机地从所选择的模板侧表面中选择的;计算机可执行代码被配置为执行以下步骤:挑选两个模板关键点,确定两个匹配的图像关键点,构建边界框,确定内点关键点,以及迭代地精细化边界框;并且每次迭代产生精细化后的边界框,精细化后的边界框中的每个边界框以基于内点关键点的数量和所述精细化之前和之后的差异的置信度值来表征,并且具有最高置信度值的边界框用于确定目标物体的姿态。
在某些实施例中,当差异被定义为边界框和模板的侧表面之间的尺度变化时,在边界框的每个侧边缘的长度除以模板的所述侧表面的对应的侧边缘的长度在0.8至1.25的范围之外的情况下,将精细化之前的边界框保留为精细化后的边界框,并且减小精细化后的边界框的置信度值。
在某些实施例中,将目标物体的姿态提供给用于操纵目标物体的机器人设备。
在某些方面中,本公开涉及一种用于检测物体的系统。在某些实施例中,系统包括计算设备。计算设备具有处理器和存储计算机可执行代码的存储设备。当计算机可执行代码在处理器处执行时,被配置为:
从物体的图像提供图像关键点;
取得物体的模板,模板包括物体的至少一个模板侧表面的模板关键点;
从模板侧表面中挑选两个模板关键点,并确定分别与所挑选的两个模板关键点匹配的两个图像关键点;
基于所确定的两个图像关键点,构建物体的边界框;以及
精细化边界框以检测物体。
在某些实施例中,图像关键点和模板关键点中的每一个由位置和描述符来表征。
在某些实施例中,物体的模板包括多个模板侧表面,并且模板侧表面中的有大量与图像关键点匹配的模板关键点的模板侧表面用于从其中挑选两个模板关键点。
在某些实施例中,所挑选的两个模板关键点是随机挑选的,并且计算机可执行代码被配置为以预定次数迭代地执行挑选步骤。
在某些实施例中,所挑选的两个模板关键点的距离大于预定距离,并且所挑选的两个模板关键点中的每个模板关键点与图像关键点之一相匹配。
在某些实施例中,边界框中的与模板侧表面中的模板关键点匹配的图像关键点被定义为内点关键点,并且使用内点关键点来精细化边界框。
在某些方面中,本公开涉及一种用于检测物体的方法。在某些实施例中,该方法包括:
由计算设备从物体的图像提供图像关键点;
由计算设备取得物体的模板,模板包括物体的至少一个模板侧表面的模板关键点;
由计算设备从模板侧表面中挑选两个模板关键点,并且确定分别与所挑选的两个模板关键点匹配的两个图像关键点;
基于所确定的两个图像关键点,构建物体的边界框;以及
精细化边界框以检测物体。
在某些实施例中,图像关键点和模板关键点中的每一个由位置和描述符来表征。
在某些实施例中,物体的模板包括多个模板侧表面,并且模板侧表面中的有大量与图像关键点匹配的模板关键点的模板侧表面用于从其中挑选两个模板关键点。
在某些实施例中,所挑选的两个模板关键点是随机地挑选的,只要所挑选的两个模板关键点的距离大于预定距离,并且所挑选的两个模板关键点中的每个模板关键点与图像关键点之一相匹配即可。
在某些实施例中,边界框中的与模板侧表面中的模板关键点匹配的图像关键点被定义为内点关键点,并且使用内点关键点来精细化边界框。
在某些方面,本公开涉及存储计算机可执行代码的非暂时性计算机可读介质。计算机可执行代码在计算设备的处理器处执行时,被配置为执行上述的方法。
从以下结合附图及其说明文字对优选实施例的描述,本公开的这些和其他方面将变得显而易见,但是在不脱离本发明的新颖构思的精神和范围的情况下,可以影响其中的变化和修改。
附图说明
附图示出了本公开的一个或多个实施例,并与书面描述一起用于说明本公开的原理。在任何可能的情况下,贯穿附图,相同的附图标记用于指代实施例的相同或类似的元件。
图1示意性地描绘了根据本公开的某些实施例的快速物体检测系统的工作流程。
图2示意性地描绘了根据本公开的某些实施例的快速物体检测系统。
图3示意性地描绘了根据本公开的某些实施例的服务器计算设备。
图4示意性地描绘了根据本公开的某些实施例的用于检测物体的方法。
图5A示意性地描绘了根据本公开的某些实施例的具有多个物体的图像。
图5B示意性地描绘了图5A的掩模图像。
图5C示意性地描绘了图5B的扩张的掩模图像。
图5D示意性地描绘了在图5C的扩张的掩模图像的区域中检测到的关键点。
图5E示意性地描绘了根据本公开的某些实施例的图像中的关键点与模板的一个表面中的关键点之间的关键点的匹配。
图5F示意性地描绘了根据本公开的某些实施例的图像中的关键点与模板的另一个表面中的关键点之间的关键点的匹配。
图5G示意性地描绘了根据本公开的某些实施例的图像中的物体的精细边界框。
图5H示意性地描绘了根据本公开的某些实施例的来自具有多个物体的图像的物体的边界框,其中该边界框是精细化之前的。
图5I示意性地描绘了根据本公开的某些实施例的来自具有多个物体的图像的物体的边界框,其中该边界框是在精细化之后的。
具体实施方式
在以下示例中更具体地描述了本公开,这些示例仅用于说明,因为其中的许多修改和变化对于本领域技术人员来说是显而易见的。现在,详细描述本公开的各种实施例。参考附图,在所有视图中相同的附图标记指示相同的组件。如本文的描述和随后的权利要求中所使用的,“一”、“一个”和“所述”的含义包括复数引用,除非上下文另有明确说明。此外,如本文的描述和随后的权利要求中所使用的,“在...中”的含义包括“在...中”和“在...上”,除非上下文另有明确说明。此外,为了方便读者,可以在说明书中使用标题或副标题,这将不影响本公开的范围。附加地,本说明书中使用的一些术语在下面更具体地定义。
本说明书中使用的术语通常在本领域、在本公开的上下文中、以及在使用每个术语的特定上下文中具有其普通含义。用于描述本公开的某些术语在下文或说明书中的其他地方讨论,以向从业者提供关于本公开的描述的附加指导。应当认识到,可以以多于一种的方式说相同的事情。因此,备选的语言和同义词可以用于本文所讨论的任何一个或多个术语,并且对于术语是否在本文中详细阐述或讨论也没有任何特殊意义。提供了某些术语的同义词。一个或多个同义词的叙述不排除其他同义词的使用。本说明书中任何地方的示例(包括本文中讨论的任何术语的示例)的使用仅是说明性的,并且绝不限制本公开或任何示例性术语的范围和含义。同样,本公开不限于本说明书中给出的各种实施例。
除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员通常所理解的含义相同的含义。还将理解的是,诸如在常用词典中定义的术语应被解释为其含义与在相关技术和本公开的上下文中的含义相同,而不应将其解释为理想的或过于正式的含义,除非本文明确如此定义。
如本文所用,“大约”、“约”、“实质上”或“近似地”通常应表示在给定值或范围的20%(优选10%,更优选5%)的范围内。本文给出的数值是近似的,这意味着如果没有明确说明,可以推断术语“大约”、“约”、“实质上”或“近似地”。
如本文所使用的,“多个”意味着两个或更多个。
如本文所使用的,术语“包含”、“包括”、“携带”、“具有”、“含有”、“涉及”等应理解为开放式的,即,意味着包括但不限于如此。
如本文所使用的,短语“A、B和C中的至少一个”应该被解释为使用非排他逻辑或“OR”表示逻辑(A或B或C)。应当理解,在不改变本公开的原理的情况下,可以以不同的顺序(或同时)执行方法内的一个或多个步骤。如本文所使用的,术语“和/或”包括关联列出的项目中的一个或多个项目的任意和所有组合。
如本文使用的,术语“模块”可以指代以下项、以下项的一部分或包括以下项:专用集成电路(ASIC);电子电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享、专用或组);提供描述的功能的其他合适的硬件组件;或上述项中的一些或所有项的组合(例如,在片上系统中)。术语“模块”可以包括存储由处理器执行的代码的存储器(共享、专用或组)。
如本文所使用的,术语“代码”可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类和/或对象。如上所使用的,术语“共享”意味着可以使用单个(共享)处理器来执行来自多个模块的一些或所有代码。此外,来自多个模块的一些或所有代码可以由单个(共享)存储器存储。如上使用的,术语组是指可以使用处理器组来执行来自单个模块的一些或所有代码。此外,可以使用一组存储器来存储来自单个模块的一些或所有代码。
如本文所使用的,术语“接口”通常指代在组件之间交互点处的用于在组件之间执行数据通信的通信工具或装置。通常,接口可以适用于硬件和软件这两个级别,并且可以是单向或双向接口。物理硬件接口的示例可以包括电连接器、总线、端口、电缆、端子和其他I/O设备或组件。与接口通信的组件可以是例如计算机系统的多个组件或外围设备。
本公开涉及计算机系统。如附图中所示,计算机组件可以包括物理硬件组件(其被示为实线块)、以及虚拟软件组件(其被示为虚线块)。本领域普通技术人员将理解,除非另外指出,否则可以以但不限于软件、固件或硬件组件、或其组合的形式来实现这些计算机组件。
本文描述的装置、系统和方法可以通过由一个或多个处理器执行的一个或多个计算机程序来实现。计算机程序包括存储在非暂时性有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括存储的数据。非暂时性有形计算机可读介质的非限制性示例是非易失性存储器、磁存储装置和光存储装置。
现在将参考示出了本公开的实施例的附图,在下文中更详细地描述本公开。然而,本公开可以以许多不同的形式来体现,并且不应当被解释为受限于本文中所阐述的实施例;相反,提供这些实施例,使得本公开将是全面且完整的,并且将把本公开的范围完全传达给本领域的技术人员。
在根据本公开的某些实施例的第一示例中,深度相机用于基于三维(3D)点云分割在货箱中定位SKU物品。如果SKU物品在3D点云中良好分离,则该方法效果很好。然而,如果物品被紧密地堆积在一起,则将很难根据点云将它们分开。在某些实施例中,需要基于红绿蓝(RGB)图像的方法来在那些情况下定位物体。
在根据本公开的某些实施例的第二示例中,为了在RGB图像中定位物体,一些系统使用基于深度学习的方法,该方法通常需要大量的训练数据和较长时间来训练并将SKU物品登记在仓库中。此外,迄今为止还没有可以实现非常高的精确性的已知的基于深度学习的系统。
在某些方面,作为新颖的改进,本公开提供了可以高效地从RGB图像中检测SKU物品的位置的系统和方法。在某些实施例中,该系统和方法使用特征匹配来在RGB图像中定位物体(SKU)。因为思想简单的特征匹配可能需要很长时间来计算,因此在某些实施例中,本公开设计了新颖且快速的匹配以实现高效率。
与第一示例相比,该系统和方法可以在紧密堆积的情况下工作。在大多数情况下,运输货箱或装运箱中的产品都是紧密堆积的,这意味着该系统和方法可以具有更广泛的用例。
与第二示例相比,该系统和方法不需要大量的训练数据。该系统和方法需要登记过程,并且与用于基于深度学习的方法的训练时间(小时)相比,该过程是非常快的(以分钟为单位)。此外,本公开的系统和方法可以以高置信度精确地在图像中检测物体的边界,而深度学习解决方案通常输出近似位置。而且,将一些新的SKU添加到机器学习解决方案中需要花费大量时间,并且需要了解机器学习的工程师来添加新的SKU。如今,消费品更新非常快,并且在仓库自动化中,花费数小时添加一个新SKU的解决方案是不期望的。
根据本公开的系统和方法包括两个过程,即登记过程和检测过程。在登记过程中,系统记录SKU物品的每一侧面的所有提取图像特征。例如,具有箱形的SKU物品具有六个侧面(或侧表面),并且系统记录每个侧面的所有图像特征。所记录的每一侧面的图像数据和特征被称为SKU物品的模板。
在检测过程中,通过将物品/SKU的图像特征与模板中的特征进行匹配来从RGB图像中检测并定位物品/SKU。给出跨越所有特征的所有可能匹配,特征匹配过程会非常耗时。在某些实施例中,通常需要四个正确匹配的点对来查找经单应性验证的SKU。如果我们随机挑选四个匹配,则所有匹配都是来自相同的SKU且匹配到模板中的相同侧面的正确匹配的可能性非常低,测试图像中的每个特征可以与模板中的多个特征匹配,并且反之亦然。此外,存在错误匹配。因此,简单的随机采样方法效率很低。大多数试验都浪费在从不同物体中挑选的匹配、或者匹配到模板的不同侧面的匹配、或者仅是错误的匹配上。作为改进,该系统采用了一种新颖的特征匹配算法,其可以非常有效地在RGB图像中定位具有不同侧面的多个物体。根据本公开的某些实施例,关键在于需要最少两个匹配点对来唯一地在测试图像中定位物体。在下文中,在本公开中称其为双对。本发明的新颖性在于,首先对模板中的侧面进行排名,以查看哪个侧面在测试图像中有更大的可能性,然后根据排名从模板的每一侧面选择两个匹配的关键点,并且然后在测试RGB图像中找到对应的匹配的关键点。由于对于模板中的每个关键点可以存在多个匹配,因此可以有多个双对。系统可以根据每个双对求解SKU的边界框。然后,通过进一步计算边界框内的内点(inliers)的数量来验证正确的双对。
图1示意性地示出了根据本公开的某些实施例的快速物体检测系统的工作流程。如图1所示,首先,接收感兴趣区域的轮廓。该输入可以是可选的。轮廓被转换成掩模,并且然后使用扩张将掩模略微放大。略微扩张的掩模提供更多信息,而不会损害轮廓的目的。
之后,使用尺度不变特征变换(SIFT)算法,系统从图像中提取感兴趣区域的关键点及其特征。然后,系统将来自图像的关键点和特征与来自SKU物品的模板数据的关键点和特征进行匹配。在某些实施例中,系统使用快速近似最近邻搜索库(FLANN)匹配器来来自图像的关键点和特征与来自模板数据的SKU物品的每一侧面的关键点和特征进行匹配。结果,提供针对一个SKU物品的多个表面的匹配。
基于每个不同侧面上的匹配的数量,系统得出关于哪个侧面更有可能出现在图像中的假设。具体地,对于模板中的每个侧面,系统将从模板到查询图像的匹配的数量进行相加。在获得针对SKU物品的所有可能侧面的匹配的数量之后,系统然后计算一个侧面上的匹配相对于所有侧面上的匹配的百分比是多少。当针对每个侧面的匹配的百分比可用时,系统定义大小为10的“缝隙”阵列(“slot”array),以将所有侧面分开考虑。基于百分比,系统决定将侧面的索引放入缝隙阵列的次数。例如,如果该SKU只有两个侧面,第一侧面有72个匹配,并且第二侧面有28个匹配,则在缝隙阵列中,将有7次“0”(代表第一侧面)和3次“1”(代表第二侧面)。
以这种方式,根据侧面出现在查询/测试图像中的可能性来考虑所有侧面。在具有更多匹配情况下在侧面上进行更多迭代的原因是因为:如果存在更多匹配,则应该有更多的迭代来遍历所有可能性。然而,更多的迭代不意味着可以保证对其进行检测。因此,朝向一个侧面的更多匹配仅给该侧面带来更多的迭代来尝试检测。
当在缝隙阵列中提供侧面的权重时,系统进行循环迭代通过某些可能性,以找到作为主要侧面/最可能的侧面的一个侧面或侧表面。首先,存在退出程序的迭代次数限制。如果满足迭代限制,则可以认为该SKU物品现在不在感兴趣区域中,并且系统结束。如果迭代次数小于限制,则系统将基于侧面假设来继续尝试侧面之一。
在循环的每次迭代期间,当该迭代小于迭代阈值数时,系统随机地从模板的一个侧面中挑选两个关键点。两个关键点中的每个关键点在图像上至少有一个匹配点。两个关键点之间具有最小间隔,因为如果两个关键点距离太近,结果可能会不精确。在某些实施例中,两个关键点应当相隔多于5个像素。
来自模板的关键点与来自图像的与其匹配的图像关键点形成对,并且由于每个关键点可以具有若干个匹配,因此对于每个关键点可以有多于一个的对。系统遍历所有这些对,并过滤掉图像中的图像关键点距离与模板中的关键点距离有很大差异的那些对。对于其余的对,系统基于模板信息计算查询图像上的产品的边界框。通过计算边界框,系统获得查询图像和模板之间的转换矩阵。之后,系统找出模板侧面上的关键点与置于边界框中的其查询图像关键点之间的所有匹配。对于所有那些匹配,系统使用转换矩阵来计算它们在模板图像中的位置。如果转换后的位置在模板中相应关键点的某个较小范围内,则系统将该匹配视为内点。如果这对匹配具有超过一定量的内点率,则将其视为该感兴趣区域中的结果之一。
对于所有产生的结果,都需要对它们进行精细化,因为这两个匹配仅决定边界框,直到进行相似度转换。使用所有内点来计算单应性的最终精细化将精细化边界框。如果精细化后的边界框与精细化前的边界框有很大差异,则系统使用精细化前的边界框并降低置信度。还检查X和Y轴上的单应性尺度。
此外,由于程序对于循环是高度可并行化的,因此它是以多线程方式编写的。
最后但并非最不重要的是,系统还将通过计算是否存在与当前结果有巨大重叠的另一个结果来检查结果是否是唯一的。如果另一结果与当前结果之间不存在巨大重叠,则系统将使该结果具有更高的置信度。
在某些实施例中,实时物体检测的工作流程和产品模板的准备是两个独立的过程,并且优选地,产品模板是预先准备的并提前存储在数据库中。在某些实施例中,实时物体检测和模板准备也可以并行或实质上同时执行,只要在实时物体检测需要模板时产品模板是可用的即可。
图2示意性地描绘了根据本公开的某些实施例的用于机器人拣选的快速物体检测系统。如图2所示,系统200包括:计算设备210;视觉传感器260;机器人设备270;模板数据库280;以及将计算设备210与视觉传感器260、机器人设备270和模板数据库280连接的一个或多个接口250。
计算设备210可以是提供物体检测服务的服务器计算机、通用计算机、云计算机、集群、平板电脑、无头计算机或专用计算机。
在某些实施例中,接口250可以是物理硬件接口,例如电连接器、总线、端口、电缆、端子或其他I/O设备。本领域普通技术人员将理解,可以根据必要的设计或制造要求来调整或改变底板的配置。在某些实施例中,接口250可以是网络。网络可以是有线或无线网络,并且可以为各种形式,例如公共网络和专用网络。网络的示例可以包括但不限于LAN或广域网(WAN)(包括互联网)。在某些实施例中,可以应用两个或更多个不同的网络和/或接口来将计算设备210连接到视觉传感器260、机器人设备270和模板数据库280。
视觉传感器260可以经由接口250连接到计算设备210,或者是计算设备210的集成部分。视觉传感器260被配置为捕获感兴趣区域(例如,具有其中包含有SKU物品的货箱的区域)的图像或视频。在某些实施例中,视觉传感器260是RGBD相机。RGBD相机260捕获RGB图像和深度图像。RGB图像和深度图像可以分别保存或一起保存
机器人设备270被配置为根据指令操作,例如在SKU物品货箱中拣取(pick up)物品。在某些实施例中,视觉传感器260可以是计算设备210或机器人设备270的集成部分。在某些实施例中,计算设备210、视觉传感器260和机器人设备210全都集成在一起。
模板数据库280被配置为存储SKU物品的信息,例如来自SKU物品的侧面的关键点和特征。模板数据库280可以存储在登记物品的信息的仓库服务器中,或者可以存储在云中,或者可以存储在计算设备210内部。计算设备210可访问存储在模板数据库280中的SKU物品的侧面的关键点和特征。
图3示意性地示出了根据本公开的某些实施例的计算设备210的结构。如图3所示,计算设备210可以包括但不限于处理器212、存储器214和存储设备216。在某些实施例中,计算设备210可以包括其他硬件组件和软件组件(未示出)以执行其对应的任务。这些硬件和软件组件的示例可以包括但不限于其他所需的存储器、接口、总线、输入/输出(I/O)模块或设备、网络接口和外围设备。
处理器212可以是被配置为控制计算设备210的操作的中央处理单元(CPU)。处理器212可以执行计算设备210的操作系统(OS)和/或其他应用。在一些实施例中,计算设备210可以具有多于一个的CPU作为处理器,例如2个CPU、4个CPU、8个CPU或任何合适数量的CPU。存储器214可以是易失性存储器(例如,随机存取存储器(RAM)),用于在计算设备210的操作期间存储数据和信息。在某些实施例中,存储器214可以是易失性存储器阵列。在某些实施例中,计算设备210可以在多于一个的存储器214上运行。存储设备216是非易失性数据存储介质,用于存储计算设备210的OS(未示出)和其他应用。存储设备216的示例可以包括非易失性存储器,诸如闪存、存储卡、USB驱动器、硬盘驱动器、软盘、光盘驱动器、固态驱动器(SSD)、或任何其他类型的数据存储设备。在某些实施例中,存储设备216可以是本地存储、远程存储或云存储。在某些实施例中,计算设备210可以具有多个存储设备216,其可以是相同的存储设备或不同类型的存储设备,并且计算设备210的应用可以存储在计算设备210的一个或多个存储设备216中。如图3所示,存储设备216包括物体检测应用220。物体检测应用220提供用于检测货箱中的SKU物品的姿态的服务,使得机器人设备270可以精确且有效地拣取SKU物品。
物体检测应用220包括图像接收模块222、图像处理模块224、模板取得模块226、关键点匹配模块228、表面加权模块230、循环检查模块232、关键点选择块234、边界框模块236、内点检查模块238和边界框精细化模块240等等。在某些实施例中,物体检测应用220可以包括模块222至240的操作所必需的其他应用或模块。应该注意的是,模块各自是由计算机可执行代码或指令、或数据表或数据库(它们共同形成一个应用)实现的。在某些实施例中,每个模块还可以包括子模块。备选地,一些模块可以组合为一个堆栈。在其他实施例中,某些模块可以被实现为电路而不是可执行代码。在某些实施例中,物体检测模块220的某些或所有模块可以位于远程计算设备或云设备处。
图像接收模块222被配置为接收或取得感兴趣区域的图像,并将该图像发送到图像处理模块224。图像接收模块222可以从视觉传感器260接收图像或指示视觉传感器260捕获图像。在某些实施例中,所接收的图像是RGBD图像,其包括红色通道、绿色通道、蓝色通道和深度通道。RGBD图像可以是包括所有四个通道的一个图像文件,或者可以是分离的RGB图像文件和深度图像文件,其中RGB图像和深度图像可以逐像素地彼此对应。
图像处理模块224被配置为响应于接收到图像,对图像进行处理以获得图像上感兴趣区域的关键点和特征,并且将关键点和特征发送到关键点匹配模块228。在某些实施例中,所接收的图像可以包括RGBD图像和RGB图像两者,这两个图像像素到像素地彼此对应。图像处理模块224被配置为在深度图像中检测感兴趣区域。图像中的物体具有在货箱的底部表面以上的某一高度,并且利用点云的深度信息和图像分割,将货箱中的物体的深度图像进一步限制在较小的区域中。然后,图像处理模块224将该较小的区域投影到2D RGB图像并形成轮廓,其中物体被包围在轮廓区域中。通过这种轮廓构造,随后的图像处理被限制在轮廓区域中,并且使得物体检测过程快速且精确。然后,在基于3D图像获得轮廓之后的所有图像处理仅对2D图像执行。在某些实施例中,基于3D图像的轮廓确定可能不是必需的,并且本公开的所有处理可以仅对2D图像执行,并且可以对包括整个货箱的较大区域执行。
图像处理模块224被配置为:在获得轮廓之后,将轮廓转换成掩模,并最终略微扩张掩模。在某些实施例中,通过将掩模向外扩展10个至20个像素来执行掩模的扩张,以便确保将物体包括在扩张后的掩模中。通过使用掩模或扩张后的掩模,物体的图像部分被包括,而区域的重要部分(例如,货箱)被排除在后续处理之外。在扩张的掩模和RGB图像可用的情况下,图像处理模块224还被配置为使用尺度不变特征变换(SIFT)来处理扩张的掩模和RGB图像,以从RGB图像中的在扩张的掩模的范围内的一部分中提取关键点和特征。此外,每个关键点都是使用特征(例如特征描述符)来计算的。图像可以包括多个SKU物品,并且在可能的情况下,基于图像识别每个SKU物品的关键点和特征。关键点是定义图像中的有趣的内容或突出的内容的图像中的空间位置或点。即使一些图像会经受旋转、平移、收缩/扩展、或变形,通常也可以在相同物体的不同图像中识别出相同的关键点。在某些实施例中,每个关键点由其位置(x,y)或具有尺度、方向的位置以及基于关键点的相邻像素计算的特征描述符矢量的位置来定义。
模板取得模块226被配置为取得在货箱中的SKU物品的模板数据,并将该数据发送至关键点匹配模块228。当通过诸如机器人设备之类的机器在货箱中拣取和放置SKU物品时,该机器具有那些SKU物品的标识,并且因此可以从相关数据库中获得那些SKU物品的信息。模板取得模块226被配置为基于SKU物品的标识来取得SKU物品的模板信息。模板包括SKU物品的侧面以及SKU物品的每个侧面的关键点和特征。SKU物品的模板信息是预先准备的并存储在相关的数据库中,可以使用配备有高分辨率视觉传感器的产品登记平台来捕获或由商家提供该SKU物品的模板信息。在某些实施例中,使用SIFT从每个侧面的高分辨率图像中提取SKU物品的每个侧面的关键点和特征。在某些实施例中,货箱或图像中的SKU的类型是一种或多种,并且每种类型的SKU的数量是一个或多个。在示例中,如果存在三种类型的SKU物品,并且这三种类型的SKU物品的总数为10,则基于物品的标识来取得用于这三种类型的SKU物品的模板。
关键点匹配模块228被配置为:响应于从图像处理模块224接收到图像中的关键点和特征以及从模板取得模块226接收到关键点和特征,将图像中的SKU物品的关键点和特征与SKU物品模板的每个侧面中的关键点和特征进行匹配,并且将匹配结果发送到表面加权模块230。在某些实施例中,关键点匹配模块228被配置为使用FLANN匹配器执行匹配。对于图像中的每个关键点,在模板的不同侧面中可以有零个、一个或多个匹配,并且对于模板中的每个关键点,图像中可以存在零个、一个或多个匹配。
表面加权模块230被配置为:在接收到匹配结果之后,确定针对模板的每个侧面的匹配的数量,基于该数量确定权重,并且将该权重发送给循环检查模块232。对于SKU物品(例如,包装在长方体中的牙膏),SKU物品模板包括六个侧面(或侧表面或表面),并且每个侧面都以其自己的关键点和特征来表征。当牙膏包装被放置在货箱中并且视觉传感器260拍摄货箱的照片或图像(感兴趣区域)时,图像可以包括牙膏包装的一个、两个或三个侧表面。此外,图像中包装的不同侧面的曝光是不同的。因此,针对不同侧面,匹配的点数不同。
表面加权模块230被配置为:在针对每个模板侧面的关键点和特征进行匹配并且对匹配的关键点和特征的数量进行计数之后,计算针对每个侧面的匹配相对于所有匹配的百分比,并确定每个模板侧表面的权重。在某些实施例中,将权重放置在大小为10的阵列中以将所有侧面分开考虑。表1示出了根据本公开的某些实施例的缝隙阵列的示例。在该示例中,SKU物品具有六个侧面。找到100个匹配,其中SKU物品的第一模板侧表面与图像有72个匹配,SKU物品的第二模板侧表面有28个匹配,并且对于第三模板侧表面到第六模板侧表面,不存在匹配。如表1所示,第一行至第六行与SKU物品的第一模板侧表面至第六模板侧表面相对应,其中左列中的0至5表示SKU物品的6个侧表面。在右列中,将匹配的总数定义为10,并且每个侧表面的权重是基于侧面中匹配的数量相对于总数来计算的。对于第一侧表面,权重是10×{72÷(72+28)}≈7,并且对于第二侧表面,数值是10×{28÷(72+28)}≈3。请注意,表1可以采用其他类型的格式,只要考虑所有模板侧面的匹配的数量即可。在某些实施例中,信息可以不是表格的形式,只要每个侧表面的权重是基于每个模板侧表面的匹配的百分比来记录的即可。
表1长方体牙膏包装的模板侧表面的权重
0 7
1 3
2 0
3 0
4 0
5 0
循环检查模块232在接收到模板的侧表面的权重后,开始精细化边界框的第一循环处理,或者响应于接收到边界框精细化循环的结果,检查是否已经执行了阈值次数的循环。例如,给出表1的表面的权重,将阈值设置为一百万次。其中,一百万次循环处理的百分之七十是对第一侧表面执行的,一百万次循环处理的百分之三十是对第二侧面执行的,并且没有对模板的其他侧表面执行循环。当循环检查模块232检查到已经执行了所有循环处理时,循环检查模块232结束循环,计算SKU物品的姿态并将SKU物品的姿态提供给机器人设备270。在某些实施例中,姿态是所检测的SKU的顶表面的表面法线。给定所检测的图像位置,可以根据3D深度图像计算姿态。当循环检查模块232检查到尚未完全执行阈值次数的循环处理时,它通过再次指示关键点选择模块234操作来初始化新的循环迭代,该指令包括基于表面权重表(例如表1)确定对模板的哪个侧面执行处理。模板的侧表面称为迭代的目标侧表面。
在某些实施例中,要执行的循环次数的阈值包括若干个标准,并且每个标准引起循环的存在。(1)第一,存在不超过一百万次迭代的硬阈值。但是,程序很少达到该标准。这是为了安全检查的更大的数值,由此避免无限迭代。在某些实施例中,可以基于物体检测情况来改变该硬阈值。(2)第二,还有另一个复杂的阈值。在某些实施例中,根据本公开的方法随机地从模板的侧面获取两个关键点(关键点对)(每个关键点与查询图像具有至少一个匹配,并且它们相距至少5个像素)。之后,该方法找出查询图像中要考虑的所有关键点对组合。请注意,模板中的一个关键点可以匹配到查询图像中的若干个关键点。因此,对于模板中的每对关键点,查询图像中可以存在关键点对的若干个组合。系统通过计算每对的两个关键点之间的距离比率,使用该距离比率来消除查询图像中的不正确的关键点对。如果比率在0.75至1.5内,则该方法将其视为有效的关键点对并继续该处理,否则该方法将其计数为错误的关键点对。如果错误的关键点对的数量达到一万,则该方法将停止循环,并且通过从模板中挑选两个不同的关键点来重新开始。在某些实施例中,当在货箱的相似距离处计算SKU模板时,定义0.75至1.5的比率。如果不是,则可以相应地改变比率以反映差异。(3)第三,通常在发现检测的情况下使用阈值。在循环中,如果候选项通过所有标准,则该方法将其登记为检测。当存在超过50次的检测时,该方法将停止循环。请注意,这50次检测可以是重复的,即它们可以是对图像中相同物体的检测。在循环之后,该方法将精细化结果:消除相同的检测;精细化边界框的位置等。通过这种处理,我们可以在所有类似结果中获得最佳结果,从而实现更精确的检测。
也就是说,循环检查模块232检查执行的循环的总数,并且如果数量大于硬阈值(例如,一百万),则方法结束循环;进一步地,循环检查模块232检查精细化后的边界框的总数,并且如果精细化后的边界框的总数大于阈值(例如,50),则该方法结束循环;并且循环检查模块232还记录错误的两个模板关键点/两个匹配的图像关键点对的数量,并且如果数量大于1000,则该方法停止循环。在某些实施例中,为1000的数量可以改变。
关键点选择模块234被配置为:在从循环检查模块232接收到需要新的循环迭代的指令时,随机地从模板的特定目标侧表面选择两个关键点。此外,两个关键点的选择不是完全随机的。例如,首先,两个关键点之间的距离应大于预定距离;其次,两个关键点中的每个关键点应在图像中有至少一个匹配的关键点。在某些实施例中,预定距离在3至30个像素的范围内。在一个实施例中,所选择的两个的关键点必须彼此相距至少五个像素。当它们太接近时,关键点选择模块234将仅随机地选择另外两个。在某些实施例中,关键点选择模块234将针对其距离大于5个像素的对尝试约三十次。如果失败,则将停止该表面的该迭代。
实际上,在通过关键点匹配模块228进行匹配之后,存储在匹配的图像关键点和匹配的模板关键点之间的链接,并且可以使用具有匹配链接的所存储的模板关键点来执行选择。在选择之后,结果包括两对匹配的关键点,例如,来自模板的关键点1-来自图像的关键点1和来自模板的关键点2-来自图像的关键点2。模板中的关键点1和2位于相同的侧面或侧表面中。在某些实施例中,关键点1或关键点2可以具有若干个匹配的点,并且可以定义多个两对关键点匹配,并且然后对多个两对关键点匹配进行匹配以找到满足指定标准的一对关键点匹配。每两对的匹配(包括来自模板的两个关键点和来自图像的匹配的两个关键点)被称为两对关键点匹配。
如上所述,模板中的一个关键点可以在查询图像中有若干个匹配的关键点。因此,对于模板中的每对关键点,查询图像中可以存在关键点对的若干个组合。关键点选择模块234被配置为通过计算每对的两个关键点之间的距离比率,使用距离比率来消除查询图像中的不正确的关键点对。如果图像中的两个匹配的关键点的距离与模板中的所选择的两个关键点的距离之间的比率在0.75至1.5内,则关键点选择模块234认为它是有效的关键点对并继续进行处理,否则,关键点选择模块234将其计数为错误的关键点对。在某些实施例中,可以根据情况来定义比率,该比率可以是例如0.75至1.33或其他范围,只要它反映两个距离之间的相似度即可。如果错误的关键点对的数量达到一万,则该方法将停止循环。
关键点选择模块234还被配置为:在移除关键点对的不合格选择之后,将两对关键点匹配发送到边界框模块236。
边界框模块236被配置为:在接收到一个或多个两对关键点匹配时,确定边界框,并且将边界框发送到内点检查模块238。两对关键点匹配包括模板中的两个关键点和图像中的两个匹配的关键点,并且基于模板使用图像中的两个关键点来计算边界框。在某些实施例中,模板侧面的两个模板关键点和角是可用的。基于该信息,对于图像中的两个关键点,可以估计该图像侧面中的四个角点。图像中的四个估计的角点定义边界框。理想地,边界框是图像中的与模板中SKU物品的侧面相对应的SKU物品的侧面。在边界框的计算期间,获得查询图像和模板侧面之间的转换矩阵。
内点检查模块238在接收到每个边界框及其转换矩阵时,找出在边界框中的在模板侧面中有匹配的查询图像关键点,确定内点,并将具有内点的每个边界框发送到边界框精细化模块240。
在某些实施例中,对于边界框内的每个关键点,内点检查模块238检查边界框内的关键点是否在模板的侧面中有至少一个匹配的关键点。当存在匹配时,内点检查模块238将边界框中的那些关键点的位置投影到模板的侧面。位置可以与对应的匹配的模板关键点的位置相同或接近,或者远离所述位置。然后,对于查询图像中边界框中的每个关键点,内点检查模块238将匹配的关键点在模板中的位置与计算的关键点在模板中的位置进行比较。当两个位置之间的差异较小时,将查询图像中的关键点定义为内点。在某些实施例中,对于每个关键点,如果投影的位置和匹配的特征位置之间的距离在3至20个像素内,则系统将其视为内点。在某些实施例中,针对距离的标准在5个像素内。否则,其为外点。以这种方式,系统可以获得内点率。此外,要被视为有效的检测,模板中应存在在边界框中有匹配的至少15至60个(优选地为30个)关键点,并且应该存在至少10至30个(优选地为15个)内点(关键点)),则总体内点率应大于40%至80%(优选地为60%)。
边界框精细化模块240被配置为:在接收到每个边界框和内点时,使用内点精细化边界框。在某些实施例中,通过使用所有内点计算单应性来执行精细化。如果精细化之后的边界框不具有正确的尺度,则边界框精细化模块240使用精细化之前的边界框并降低置信度。尺度被确定如下:边界框精细化模块240将边界框的所有四个侧边缘的长度分别除以模板的侧表面的对应的四个侧边缘的长度,以获得侧表面的每个侧边缘的尺度变化;然后边界框精细化模块240检查四个尺度以查看是否有任何尺度超出范围。在某些实施例中,有效尺度范围是从0.6至1.5,并且在某些实施例中,有效尺度范围是从0.8至1.25。如果存在任何超出范围的尺度,则边界框被认为具有错误的尺度,并且保留先前的边界框,并且降低置信度。置信度通过内点率加上一些偏移量来计算。内点率是通过将边界框中的内点关键点的数量除以边界框中的与模板具有一个匹配的关键点的数量来计算的。偏移量来自边界框超出图像边界的距离。例如,如果边界框中的关键点之一距离图像边界约40个像素或更大,则放弃该关键点;如果边界框中的关键点之一距离其30个像素,则置信度得到-20%;如果存在一个距离其20个像素的关键点,则它得到-10%。
在某些实施例中,边界框精细化模块240从内点检查模块238接收多个边界框,并且边界框精细化模块240在不同的线程中对边界框进行精细化,从而使精细化处理高效。在某些实施例中,边界框精细化模块240还可以将精细化后的边界框与其他精细化后的边界框进行比较,并且如果在两个精细化后的边界框之间存在巨大重叠,则边界框精细化模块240仅保留这两个重叠的边界框中的具有较高置信度的一个边界框。
边界框精细化模块240还被配置为将精细化后的边界框发送到循环检查模块232。当循环检查模块232确定满足迭代阈值时,其基于边界框的质量将边界框之一选择为最终结果,并且结束应用。在某些实施例中,基于置信度选择边界框。在某些实施例中,通过比较边界框的置信度值并选择具有最高置信度值的边界框来执行一个边界框的选择。在某些实施例中,循环检查模块232还基于边界框和深度图像来计算物体的姿态。
图4示意性地示出了根据本公开的某些实施例的检测物体的方法。在某些实施例中,该方法由图2所示的计算设备210实现。应当特别注意的是,除非在本公开中另有说明,否则该方法的步骤可以以不同的顺序次序布置,因此不限于图4所示的顺序次序。
在过程402,视觉传感器260捕获感兴趣区域的图像,并将捕获的图像发送到图像处理模块224。感兴趣区域可以是货箱,其包括在货箱内部的一个或多个物体。因此,图像可以示出一个或多个物体。在某些实施例中,图像可以包括RGB图像和深度图像两者、或者RGBD图像。
在过程404,响应于接收到图像,图像处理模块224从深度图像获得针对感兴趣区域导出的轮廓,将深度图像中的3D轮廓投影为2D轮廓,将轮廓转换为掩模,然后将掩模扩张以使其略微放大。可以通过从原始掩模的边缘开始多包括10至20个像素来执行掩模的放大。在某些实施例中,视觉传感器260可以仅捕获RGB图像,并且该方法可以不包括过程404。在某些实施例中,在获得掩模之后,随后的所有处理仅对RGB图像执行。
在过程406,图像处理模块224使用掩模和RGB图像从图像中提取关键点和特征。在某些实施例中,图像处理模块224使用SIFT执行从图像提取关键点和特征。在某些实施例中,提取是对在扩张的掩模内的图像的像素执行的。在提取之后,图像处理模块224将提取的图像的关键点和特征发送到关键点匹配模块228。
在过程408,模板取得模块226取得货箱中的物体的模板。在某些实施例中,每个物体具有SKU标识,并且这些物体被称为SKU物品。物体或SKU物品在被放入货箱时,物体或SKU物品连同其标识被记录并被发送到模板取得模块226。模板取得模块226在接收到记录的标识后,从模板数据库取得模板。模板数据库可以是仓库数据库或产品管理数据库的一部分,其存储物体的标识、每个物体的侧面(侧表面)、以及在物体的每个侧面中的关键点和特征。在某些实施例中,使用物体的高分辨率图像和SIFT来准备模板。在取得到物体的侧面的关键点和特征信息之后,模板取得模块226随后将该信息发送到关键点匹配模块228。
在过程410,在从图像处理模块224接收到关键点和特征以及物体的侧面的关键点和特征时,关键点匹配模块228将来自图像的关键点和特征与模板的关键点和特征进行匹配。在某些实施例中,关键点匹配模块228使用FLANN匹配器执行匹配。对于SKU物品模板的每个侧面,可能没有关键点和特征的匹配或又多个匹配。在匹配之后,关键点匹配模块228将匹配结果发送到表面加权模块230。
在过程412,在接收到图像和模板之间的匹配结果时,表面加权模块230确定针对模板的每个侧面的权重,并且将权重发送到循环检查模块232。具体地,当将来自图像的关键点和特征匹配到模板的每个侧表面时,匹配的数量在侧表面之间变化。表面加权模块230计算图像中的关键点与模板的每个侧表面中的关键点之间的匹配的数量,然后基于匹配的数量来计算权重。例如,如果模板具有六个侧面或侧表面,并且从图像到模板的第一侧表面和第二侧表面的匹配分别为72和28,并且针对其他四个侧表面都没有找到匹配,则基于72和28来计算权重,可以针对第一侧表面和第二侧表面分别将权重设置为7和3。这意味着使用模板的第一侧表面执行以下迭代的次数占70%,并且使用模板的第二侧表面执行以下迭代的次数占30%。
在过程414,在接收到针对模板的侧面的权重时,循环检查模块232基于权重开始边界框确定的第一循环。循环检查模块232首先挑选侧表面作为目标,该侧表面可以是基于上述权重示例的第一侧表面(占循环总数的70%)和第二侧表面(占循环总数的30%)。可以随机执行目标侧表面的挑选。在挑选出目标侧表面之后,循环检查模块232将挑选结果发送到关键点选择模块234。
在过程416,在从循环检查模块232接收到目标侧表面时,关键点选择模块234在目标侧表面和图像之间选择两对匹配。两对匹配中的每一对包括从目标侧表面选择的关键点和查询图像中的其匹配的关键点之一。在某些实施例中,关键点选择模块234从目标侧表面选择两个关键点。在满足某些要求之后,选择是随机的。要求包括目标侧表面中的两个关键点应足够远,例如相隔5个以上的像素;并且两个关键点中的每个关键点应在图像中有至少一个匹配的关键点。因为目标侧表面中的每个选择的关键点可以在图像中有多于一个的匹配的关键点,因此关键点选择模块234可以形成多于一个的两对匹配、或多组两对匹配。之后,关键点选择模块234将多组两对匹配发送到边界框模块236。在某些实施例中,当模板中的所选择的两个关键点之间的距离与查询图像中的两个匹配的关键点之间的距离具有较大差异时,将两对匹配从考虑中移除。
在过程418,在接收到一组两对匹配时,边界框模块236针对每个两对关键点匹配确定边界框,并将边界框发送给内点检查模块238。每组两对关键点匹配包括模板的目标侧表面中的两个关键点和图像中的两个匹配的关键点。两个关键点位于模板的相同侧面中,并且在模板中明确定义了该侧面的四个角点。当查询图像中的两个对应关键点可用时,也可以基于模板来确定查询图像中的四个角点。查询图像中的所确定的四个角点定义边界框。在边界框的计算期间,获得查询图像和模板之间的转换矩阵。
在过程420,在接收到所确定的边界框及其转换矩阵时,内点检查模块238找出边界框中的在模板中有匹配的关键点的所有关键点,以确定内点,并将具有内点的边界框发送到边界框精细化模块240。在某些实施例中,在确定出边界框中的关键点与模板的侧面中的匹配的关键点之间的匹配的关键点之后,内点检查模块238使用转换矩阵将查询图像中的匹配的关键点投影到模板以获得投影的位置,并且将投影的位置与模板中的匹配的关键点的位置进行比较。当两个位置之间的差异较小时,将查询图像中的关键点定义为内点。对于边界框中的所有匹配的关键点,内点检查模块238计算内点关键点相对于边界框中的所有匹配的关键点的百分比。如果很大百分比的匹配的关键点是内点,则两对关键点匹配被认为是实际匹配的良好候选项,并被视为感兴趣区域中的结果之一。在某些实施方案中,该百分比设置为约60%。即,如果边界框内的内点关键点与边界框关键点和模板的侧面中的关键点之间的匹配的关键点之间的比率大于60%,则边界框有效。然后,当边界框具有高百分比的匹配关键点时,内点检查模块238将边界框发送到边界框精细化模块240,或者当边界框具有低百分比的匹配关键点时,丢弃边界框。
在过程422,在接收到每个边界框和内点时,边界框精细化模块240使用内点来精细化边界框。在某些实施例中,通过使用所有内点计算单应性来执行精细化。当精细化前后的边界框之间存在较大差异时,将使用精细化之前的边界框,并且将边界框的置信度定义为较低。在某些实施例中,还检查单应性尺度X轴和Y轴。在某些实施例中,边界框精细化模块240通过如上所述的检查尺度的变化来比较精细化之前和之后的边界框的差异。查询图像中边界框的每个侧边缘(例如,对于方形形状,四个侧边缘可用)具有长度,模板的侧表面的对应的侧边缘具有长度,前者的长度除以后者的长度以获得尺度,并且如果尺度形成为约0.8至1.25,则精细化被认为是良好的。如果不是,则精细化被认为是失败的,并且保持精细化之前的边界框。
在某些实施例中,边界框精细化模块240从内点检查模块238接收多个边界框,并且在不同的线程中执行对边界框的精细化。在某些实施例中,边界框精细化模块240还可以将精细化后的边界框与其他精细化后的边界框进行比较,并且如果在两个精细化后的边界框之间存在巨大重叠,则边界框精细化模块240仅保留这两个重叠的边界框中的具有较高置信度的一个边界框。在精细化之后,边界框精细化模块240将精细化后的边界框发送到循环检查模块240。
在过程424,在接收到那些精细化后的边界框时,循环检查模块232检查所执行的迭代的次数。当循环检查模块232确定不满足迭代阈值时,其基于侧表面的权重来启动新的迭代。当循环检查模块232确定满足迭代阈值时,其基于边界框的质量选择一个或多个边界框作为最终结果,并通过使用该边界框计算物体的姿态并将物体的姿态发送给机器人设备270来结束应用。在某些实施例中,通过比较边界框的置信度值并选择具有最高置信度值的边界框来执行一个边界框的选择。
图5A至图5I示意性地示出了根据本公开的某些实施例的示例。如图5A所示,提供了图像。感兴趣区域位于货箱中,该货箱包含若干个SKU物品,此处为牙膏包装。
如图5B所示,在图像上放置掩模,使得仅牙膏包装突出显示。在对感兴趣区域进行掩模处理之后,如图5C所示,将掩模稍微放大一点。
然后,如图5D所示,对图像的放大的掩模部分进行处理以获得关键点和特征。
当针对SKU物品的关键点和特征可用时,如图5E和图5F所示,关键点和特征被匹配到模板的不同侧表面上的关键点和特征。
然后,系统基于关键点匹配来计算并精细化边界框,并且如图5G所示的结果,获得针对图像中的每个SKU物品的边界框。
此外,图5H和图5I示出了边界框精细化的示例,其中图5H示出了精细化之前的边界框,并且图5I示出了精细化之后的边界框。
总之,本公开的某些实施例提供了用于快速且精确地检测物体的系统和方法。实施例的新颖特征至少包括使用物体的图像和模板之间的两个关键点对来定义边界框,以及用边界框中的其他匹配的关键点来精细化边界框。在检测到的物体的姿态可用的情况下,机器人设备可以方便地操纵这些物体。
仅出于说明和描述的目的呈现了本公开的示例性实施例的前述描述,并且不旨在穷举或将本公开限制于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。
选择和描述实施例是为了说明本公开的原理及其实际应用,以使得本领域其他技术人员能够利用本公开和各种实施例以及适合于预期的特定用途的各种修改。在不脱离本发明的精神和范围的情况下,备选实施例对于本公开所属领域的技术人员将变得显而易见。因此,本公开的范围由随附权利要求限定,而不是由以上描述和本文描述的示例性实施例来限定。

Claims (20)

1.一种用于从多个物体中确定目标物体的姿态的系统,所述系统包括计算设备和与所述计算设备通信的视觉传感器,所述计算设备包括处理器和存储计算机可执行代码的存储设备,其中,所述计算机可执行代码在所述处理器处执行时,被配置为:
从图像中提取图像关键点,其中,所述图像是通过所述视觉传感器对感兴趣区域捕获得到的,所述感兴趣区域包括所述多个物体,并且所述关键点中的每个关键点用其位置和特征描述符来定义;
取得所述目标物体的模板,其中,所述模板包括多个模板侧表面,所述模板侧表面中的每个模板侧表面以多个模板关键点来表征,并且所述模板关键点中的每个模板关键点用其位置和特征描述符来定义;
将所述图像关键点与所述模板侧表面中的每个模板侧表面中的所述模板关键点进行匹配;
基于所述图像关键点与所述模板侧表面中的一个模板侧表面中的所述模板关键点之间的匹配的数量,来选择所述模板侧表面中的所述一个模板侧表面;
从所选择的模板侧表面中挑选两个模板关键点,并且确定分别与所挑选的两个模板关键点匹配的两个图像关键点;
基于所确定的两个图像关键点来构建边界框,其中,所述边界框表示与所述模板的所选择的模板侧表面相对应的图像侧表面;
确定内点关键点,其中所述内点关键点位于所述边界框内部,并且在所选择的模板侧表面中具有匹配的模板关键点;
使用所述内点关键点来精细化所述边界框,
其中,基于精细化后的边界框来确定所述目标物体的姿态。
2.根据权利要求1所述的系统,其中,所述计算机可执行代码被配置为在提取图像关键点之前定义针对所述图像中的物体的掩模。
3.根据权利要求1所述的系统,其中,所述计算机可执行代码被配置为执行以下步骤:根据图像关键点与模板关键点之间的匹配数量从所述模板侧表面中选择匹配的一个模板侧表面,并且以预定次数迭代地从所选择的模板侧表面中挑选两个模板关键点。
4.根据权利要求3所述的系统,其中,所述模板侧表面中的每个模板侧表面被选择了占所述预定次数的百分比的次数,并且所述百分比是通过将所选择的模板侧表面中的匹配的关键点的数量除以所有所述模板侧表面中的匹配的关键点的总数量来确定的。
5.根据权利要求1所述的系统,其中,所挑选的两个模板关键点相距至少5个像素,并且所挑选的两个模板关键点中的每个模板关键点与所述图像关键点之一相匹配。
6.根据权利要求1所述的系统,
其中,所述两个模板关键点是随机地从所选择的模板侧表面中选择的;
其中,所述计算机可执行代码被配置为执行以下步骤:挑选两个模板关键点,确定两个匹配的图像关键点,构建所述边界框,确定内点关键点,以及迭代地精细化所述边界框;并且
其中,每次迭代产生精细化后的边界框,所述精细化后的边界框中的每个边界框以基于内点关键点的数量和所述精细化之前与之后的差异的置信度值来表征,并且具有最高置信度值的所述边界框用于确定所述目标物体的姿态。
7.根据权利要求6所述的系统,其中,当所述差异被定义为所述边界框和所述模板的侧表面之间的尺度变化时,在所述边界框的每个侧边缘的长度除以所述模板的所述侧表面的对应侧边缘的长度在0.8至1.25的范围之外的情况下,将所述精细化之前的所述边界框保留为所述精细化后的边界框,并且减小所述精细化后的边界框的置信度值。
8.根据权利要求1所述的系统,其中,将所述目标物体的姿态提供给用于操纵所述目标物体的机器人设备。
9.一种用于检测物体的系统,所述系统包括计算设备,所述计算设备包括处理器和存储计算机可执行代码的存储设备,其中,所述计算机可执行代码在所述处理器处执行时,被配置为:
从所述物体的图像提供图像关键点;
取得所述物体的模板,所述模板包括所述物体的至少一个模板侧表面的模板关键点;
从所述模板侧表面中挑选两个模板关键点,并确定分别与所挑选的两个模板关键点匹配的两个图像关键点;
基于所确定的两个图像关键点,构建所述物体的边界框;以及
精细化所述边界框以检测所述物体。
10.根据权利要求9所述的系统,其中,所述图像关键点和所述模板关键点中的每一个由位置和描述符来表征。
11.根据权利要求9所述的系统,其中,所述物体的所述模板包括多个模板侧表面,并且根据图像关键点与模板关键点之间的匹配数量从多个所述模板侧表面中选择匹配的一个模板侧表面用于从其中挑选所述两个模板关键点。
12.根据权利要求9所述的系统,其中,所挑选的两个模板关键点是随机地挑选的,并且所述计算机可执行代码被配置为以预定次数迭代地执行挑选步骤。
13.根据权利要求12所述的系统,其中,所挑选的两个模板关键点的距离大于预定距离,并且所挑选的两个模板关键点中的每个模板关键点与所述图像关键点之一相匹配。
14.根据权利要求9所述的系统,其中,所述边界框中的与所述模板侧表面中的所述模板关键点匹配的所述图像关键点被定义为内点关键点,并且使用所述内点关键点来精细化所述边界框。
15.一种用于检测物体的方法,所述方法包括:
由计算设备从所述物体的图像提供图像关键点;
由所述计算设备取得所述物体的模板,所述模板包括所述物体的至少一个模板侧表面的模板关键点;
由所述计算设备从所述模板侧表面中挑选两个模板关键点,并且确定分别与所挑选的两个模板关键点匹配的两个图像关键点;
基于所确定的两个图像关键点,构建所述物体的边界框;以及
精细化所述边界框以检测所述物体。
16.根据权利要求15所述的方法,其中,所述图像关键点和所述模板关键点中的每一个由位置和描述符来表征。
17.根据权利要求15所述的方法,其中,所述物体的所述模板包括多个模板侧表面,并且根据图像关键点与模板关键点之间的匹配数量从多个所述模板侧表面中选择匹配的一个模板侧表面用于从其中挑选所述两个模板关键点。
18.根据权利要求15所述的方法,其中,所挑选的两个模板关键点是随机地挑选的,只要所挑选的两个模板关键点的距离大于预定距离,并且所挑选的两个模板关键点中的每个模板关键点与所述图像关键点之一相匹配即可。
19.根据权利要求15所述的方法,其中,所述边界框中的与所述模板侧表面中的所述模板关键点匹配的所述图像关键点被定义为内点关键点,并且使用所述内点关键点来精细化所述边界框。
20.一种非暂时性计算机可读介质,存储计算机可执行代码,其中,所述计算机可执行代码在计算设备的处理器处执行时,被配置为执行权利要求15所述的方法。
CN201911132136.7A 2018-11-20 2019-11-18 用于在机器人拣选时快速物体检测的系统和方法 Active CN111199562B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/197,021 US11312020B2 (en) 2018-11-20 2018-11-20 System and method for fast object detection in robot picking
US16/197,021 2018-11-20

Publications (2)

Publication Number Publication Date
CN111199562A CN111199562A (zh) 2020-05-26
CN111199562B true CN111199562B (zh) 2025-02-21

Family

ID=70726151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911132136.7A Active CN111199562B (zh) 2018-11-20 2019-11-18 用于在机器人拣选时快速物体检测的系统和方法

Country Status (2)

Country Link
US (1) US11312020B2 (zh)
CN (1) CN111199562B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6333871B2 (ja) * 2016-02-25 2018-05-30 ファナック株式会社 入力画像から検出した対象物を表示する画像処理装置
US10764113B2 (en) * 2018-07-05 2020-09-01 At&T Intellectual Property I, L.P. Self-adjusting control loop
CN113168517B (zh) * 2018-11-30 2025-01-14 高通股份有限公司 处理传感器信息以供对象检测
US11586171B2 (en) * 2019-06-03 2023-02-21 At&T Intellectual Property I, L.P. Automatic control loop decision variation
US12017368B2 (en) * 2020-09-09 2024-06-25 Fanuc Corporation Mix-size depalletizing
US20220230335A1 (en) * 2021-01-20 2022-07-21 Nicolae Paul Teodorescu One-shot high-accuracy geometric modeling of three-dimensional scenes
CN112800923A (zh) * 2021-01-22 2021-05-14 北京市商汤科技开发有限公司 人体图像质量检测方法及装置、电子设备、存储介质
CN113361651B (zh) * 2021-03-05 2022-01-04 牧今科技 生成用于物体检测的安全空间列表的方法和计算系统
US12036678B2 (en) * 2021-05-25 2024-07-16 Fanuc Corporation Transparent object bin picking
MX2022013771A (es) * 2021-11-01 2023-05-02 Rehrig Pacific Co Sistemas de entrega.
US12243214B2 (en) * 2022-02-03 2025-03-04 Fanuc Corporation Failure detection and failure recovery for AI depalletizing
US20240233322A9 (en) * 2022-10-24 2024-07-11 International Business Machines Corporation Detecting fine-grained similarity in images

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9746855B2 (en) * 2012-09-03 2017-08-29 Canon Kabushiki Kaisha Information processing system, method, and program

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493465B2 (en) * 1996-02-21 2002-12-10 Canon Kabushiki Kaisha Matching point extracting method and apparatus therefor
JP2005141527A (ja) * 2003-11-07 2005-06-02 Sony Corp 画像処理装置、および画像処理方法、並びにコンピュータ・プログラム
US8837839B1 (en) * 2010-11-03 2014-09-16 Hrl Laboratories, Llc Method for recognition and pose estimation of multiple occurrences of multiple objects in visual images
US9008424B2 (en) * 2011-01-25 2015-04-14 Telecom Italia S.P.A. Method and system for comparing images
US9418442B2 (en) * 2011-07-22 2016-08-16 The Trustees Of Columbia University In The City Of New York Tool tracking during surgical procedures
US9002098B1 (en) * 2012-01-25 2015-04-07 Hrl Laboratories, Llc Robotic visual perception system
JP6192088B2 (ja) * 2013-02-20 2017-09-06 国立大学法人九州工業大学 物体検出方法および物体検出装置
CN103903013A (zh) * 2014-04-15 2014-07-02 复旦大学 一种无标记平面物体识别的优化算法
JP6503906B2 (ja) * 2015-06-10 2019-04-24 富士通株式会社 画像処理装置、画像処理方法および画像処理プログラム
CN108965690B (zh) * 2017-05-17 2021-02-26 欧姆龙株式会社 图像处理系统、图像处理装置及计算机可读存储介质
CN107610166B (zh) * 2017-09-26 2020-10-09 上海海事大学 一种基于线性特征区域分割的平面地图图像配准方法
JP6968342B2 (ja) * 2017-12-25 2021-11-17 オムロン株式会社 物体認識処理装置、物体認識処理方法及びプログラム
CN108717709B (zh) * 2018-05-24 2022-01-28 东北大学 图像处理系统及图像处理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9746855B2 (en) * 2012-09-03 2017-08-29 Canon Kabushiki Kaisha Information processing system, method, and program

Also Published As

Publication number Publication date
CN111199562A (zh) 2020-05-26
US11312020B2 (en) 2022-04-26
US20200156254A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
CN111199562B (zh) 用于在机器人拣选时快速物体检测的系统和方法
US9443164B2 (en) System and method for product identification
US9158988B2 (en) Method for detecting a plurality of instances of an object
US9418313B2 (en) Method for searching for a similar image in an image database based on a reference image
US20180260669A1 (en) Image processing apparatus, image processing method, template generation apparatus, object recognition processor, and object recognition processing program
JP6176388B2 (ja) 画像識別装置、画像センサ、画像識別方法
EP2565844A1 (en) Creation method and creation device of three-dimensional object recognition-use image database
EP3376433B1 (en) Image processing apparatus, image processing method, and image processing program
CN106056111A (zh) 图像处理装置及图像处理方法
CN106056112B (zh) 图像处理装置及图像处理方法
JP6278108B2 (ja) 画像処理装置、画像センサ、画像処理方法
Lepsøy et al. Statistical modelling of outliers for fast visual search
CN109658454A (zh) 一种位姿信息确定方法、相关装置及存储介质
US11772271B2 (en) Method and computing system for object recognition or object registration based on image classification
CN111325276A (zh) 图像分类方法及装置、电子设备、计算机可读存储介质
JP2009129237A (ja) 画像処理装置及びその方法
CN108764297B (zh) 一种可移动设备位置的确定方法、装置及电子设备
JP7294454B2 (ja) オブジェクト検出方法及びオブジェクト検出装置
JP6793925B2 (ja) 検証装置、方法、及びプログラム
JP2019021100A (ja) 画像探索装置、商品認識装置および画像探索プログラム
CN113228105A (zh) 一种图像处理方法、装置和电子设备
Higa et al. Multiple object identification using grid voting of object center estimated from keypoint matches
KR20230058886A (ko) 영상분석 기반의 물류사고 방지 방법 및 이를 위한 시스템
Ma et al. A novel sketch-based framework utilizing contour cues for efficient point cloud registration
EP2993623A1 (en) Apparatus and method for multi-object detection in a digital image

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210513

Address after: 101, 1st floor, building 2, yard 20, Suzhou street, Haidian District, Beijing

Applicant after: Beijing Jingbangda Trading Co.,Ltd.

Applicant after: JD.com American Technologies Corp.

Address before: 100086 8th Floor, 76 Zhichun Road, Haidian District, Beijing

Applicant before: BEIJING JINGDONG SHANGKE INFORMATION TECHNOLOGY Co.,Ltd.

Applicant before: JD.com American Technologies Corp.

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

Effective date of registration: 20210909

Address after: Room a1905, 19th floor, building 2, yard 18, Kechuang 11th Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing

Applicant after: Beijing Jingdong Qianshi Technology Co.,Ltd.

Applicant after: JD.com American Technologies Corp.

Address before: 101, 1st floor, building 2, yard 20, Suzhou street, Haidian District, Beijing 100080

Applicant before: Beijing Jingbangda Trading Co.,Ltd.

Applicant before: JD.com American Technologies Corp.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant