KR20210010388A - 로봇 프로세스 자동화를 위한 컴퓨터 비전 모델의 리트레이닝 - Google Patents

로봇 프로세스 자동화를 위한 컴퓨터 비전 모델의 리트레이닝 Download PDF

Info

Publication number
KR20210010388A
KR20210010388A KR1020200088333A KR20200088333A KR20210010388A KR 20210010388 A KR20210010388 A KR 20210010388A KR 1020200088333 A KR1020200088333 A KR 1020200088333A KR 20200088333 A KR20200088333 A KR 20200088333A KR 20210010388 A KR20210010388 A KR 20210010388A
Authority
KR
South Korea
Prior art keywords
image
model
computer
selection
computing system
Prior art date
Application number
KR1020200088333A
Other languages
English (en)
Other versions
KR102580080B1 (ko
Inventor
코스민 보이쿠
Original Assignee
유아이패스, 인크.
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 유아이패스, 인크. filed Critical 유아이패스, 인크.
Publication of KR20210010388A publication Critical patent/KR20210010388A/ko
Application granted granted Critical
Publication of KR102580080B1 publication Critical patent/KR102580080B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • B25J9/163Programme controls characterised by the control loop learning, adaptive, model based, rule based expert control
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • G06F18/2178Validation; Performance evaluation; Active pattern learning techniques based on feedback of a supervisor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/40Software arrangements specially adapted for pattern recognition, e.g. user interfaces or toolboxes therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • G06K9/2054
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

머신 러닝(ML, Machine Learning) 시스템에 의해 생성된 컴퓨터 비전(CV, Computer Vision) 모델은, 로봇 프로세스 자동화(RPA, Robotic Process Automation) 에서의 더 정확한 컴퓨터 이미지 분석을 위해 리트레이닝될 수 있다. 디자이너 애플리케이션은, 이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 사용자로부터 수신하고, 선택을 포함하는 이미지의 영역의 대표 데이터를 결정하고, 대표 데이터 및 이미지를 이미지 데이터베이스에 송신할 수 있다. 검토자는 오류가 존재한다는 것을 확인하기 위해 CV 모델을 실행시키거나 CV 모델이 실행되게 하며, 만일 그렇다면, 리트레이닝을 위해 이미지 및 올바른 라벨을 ML 시스템에 전송한다. CV 모델이 리트레이닝되는 동안, 오식별되거나 미식별된 그래픽 컴포넌트를 식별하기 위해 대안적인 이미지 인식 모델이 사용될 수 있다.

Description

로봇 프로세스 자동화를 위한 컴퓨터 비전 모델의 리트레이닝{RETRAINING A COMPUTER VISION MODEL FOR ROBOTIC PROCESS AUTOMATION}
본 발명은 일반적으로 로봇 프로세스 자동화(RPA, Robotic Process Automation)에 관한 것이며, 더 구체적으로는, 더 정확한 컴퓨터 이미지 분석을 위한, 오식별되거나 미식별된 그래픽 컴포넌트의 식별 및 머신 러닝(ML, Machine Learning) 시스템에 의해 생성된 RPA용 컴퓨터 비전(CV, Computer Vision) 모델의 리트레이닝(retraining)에 관한 것이다.
현재, RPA를 위해 이미지 피처를 인식하기 위한 ML-생성 CV 모델 알고리즘을 자동화하기 위한 트레이닝 데이터는, 합성 데이터를 생성하고, 라이브 애플리케이션으로부터 또는 인터넷으로부터, 다양한 소프트웨어 애플리케이션의 실제 사용자 인터페이스의 스크린샷(즉, 디지털 이미지)을 수집함으로써 획득된다. 합성 데이터는, ML 모델의 트레이닝이라는 구체적인 목적으로 생성되는 데이터이다. 이는, 이미 존재하며 단지 수집 및 라벨링될 필요가 있는 데이터인 "실제(real)" 데이터 또는 "유기적(organic)" 데이터와는 상이하다. 이 경우, 유기적 데이터는, 다양한 메커니즘을 통해 수집되고 라벨링된 스크린샷을 포함한다.
트레이닝 데이터의 또 다른 소스는, 사용자가 자동화하기를 원하는 애플리케이션의 스크린샷이다. 이 접근법에서, CV 모델에 의해 인터페이스의 그래픽 요소(예컨대, 체크박스, 라디오 버튼, 텍스트 박스 등)가 검출되지 않으면, 사용자(예컨대, 고객)는, 식별되지 않은 요소를 선택하고, 선택의 스크린샷을 작성하고, 선택의 좌표와 함께 이미지를 서비스 제공자에게 전송할 수 있다. 그러나, 이 접근법은, 사용자가 피드백으로서의 이미지를 전송하고 오류를 보고하기 위한 노력을 확대하도록 요구한다. 실제로, 대부분의 사용자는 이를 행하지 않는다.
또한, 현재의 기법을 통해 캡처된 데이터는 구현 후에 최적이 아니게 되거나 무관해질 수 있다. 예컨대, 런타임(runtime) 시에 고객에 의해 사용되는 애플리케이션의 실제 사용자 인터페이스는, 디자인 타임(design time) 중에 데이터를 트레이닝하기 위해 사용되는 사용자 인터페이스와는 상이할 수 있다. 이는 CV 모델이 실제 사용자 인터페이스를 인지하지 못하게 하고, 잠재적으로 실제 사용자 인터페이스에 대해 적합하지 않게 하며, 결과적으로 CV 모델은 유효하게 동작하기 위해 리트레이닝을 요구할 수 있다. 따라서, CV 모델의 리트레이닝에 대한 개선된 접근법이 이로울 수 있다.
본 발명의 특정 실시예는, 현재의 CV 모델 기법에 의해 아직 완전히 식별되거나, 이해되거나, 해결되지 않은 당업계의 문제 및 필요에 대한 해결책을 제공할 수 있다. 예컨대, 본 발명의 일부 실시예는, 더 정확한 컴퓨터 이미지 분석을 위한, 오식별되거나 미식별된 그래픽 컴포넌트의 식별 및 ML 시스템에 의해 생성된 RPA용 CV 모델의 리트레이닝에 관한 것이다.
실시예에서, 컴퓨터 프로그램은 비일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium) 상에 수록된다. 프로그램은, 적어도 하나의 프로세서로 하여금, CV 모델의 실행으로부터 이미지 내의 그래픽 컴포넌트의 식별을 수신하게 하고, CV 모델에 의해 식별되었던, 상기 식별된 그래픽 컴포넌트와 함께 이미지를 시각 디스플레이 상에 디스플레이하게 하도록 구성된다. 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금, 이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 수신하게 하고, 선택을 포함하는 이미지의 영역의 대표 데이터를 결정하게 하고, 대표 데이터 및 이미지를 이미지 데이터베이스에 송신하게 하도록 구성된다.
또 다른 실시예에서, 컴퓨팅 시스템은, 기계 판독가능 컴퓨터 프로그램 명령어를 저장한 메모리, 및 컴퓨터 프로그램 명령어를 실행시키도록 구성된 적어도 하나의 프로세서를 포함한다. 명령어는, 적어도 하나의 프로세서로 하여금, 이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 수신하게 하고, 선택을 포함하는 이미지의 영역의 대표 데이터를 결정하게 하고, CV 모델의 리트레이닝을 위해 대표 데이터 및 이미지를 이미지 데이터베이스에 송신하게 하도록 구성된다. 명령어는 또한, 적어도 하나의 프로세서로 하여금, 리트레이닝된 CV 모델의 실행으로부터 이미지 내의 그래픽 컴포넌트의 식별을 수신하게 하고, 리트레이닝된 CV 모델에 의해 식별되었던, 상기 식별된 그래픽 컴포넌트와 함께 이미지를 시각 디스플레이 상에 디스플레이하게 하도록 구성된다.
또 다른 실시예에서, 컴퓨터-구현 방법(computer-implemented method)은, 컴퓨팅 시스템에 의해, 이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 수신하는 단계, 및 컴퓨팅 시스템에 의해, 선택을 포함하는 이미지의 영역의 대표 데이터를 결정하는 단계를 포함한다. 컴퓨터 구현 방법은 또한, 컴퓨팅 시스템에 의해, 대표 데이터 및 이미지를 이미지 데이터베이스에 송신하는 단계, 및 CV 모델이 리트레이닝되는 동안, 오식별되거나 미식별된 그래픽 컴포넌트를 식별하기 위해, 컴퓨팅 시스템에 의해, 이미지 및 대안적인 이미지 프로세싱 로직을 워크플로우(workflow) 내에 임베딩하는 단계를 포함한다.
본 발명의 특정 실시예의 장점이 수월하게 이해되도록 하기 위해, 간단하게 전술된 본 발명의 더 구체적인 설명이, 첨부된 도면에 도시된 특정 실시예를 참조함으로써 제공될 것이다. 이들 도면은 본 발명의 전형적인 실시예만을 묘사하고 따라서 본 발명의 범위를 제한하는 것으로 간주되어서는 안 된다는 것이 이해되어야 하며, 첨부되는 도면의 사용을 통해 추가적인 특이성 및 세부사항을 갖는 본 발명이 기술 및 설명될 것이다.
도 1은, 본 발명의 실시예에 따른, RPA 시스템을 도시하는 아키텍처 다이어그램이다.
도 2는, 본 발명의 실시예에 따른, 배치된(deployed) RPA 시스템을 도시하는 아키텍처 다이어그램이다.
도 3은, 본 발명의 실시예에 따른, 디자이너(designer), 액티비티(activity), 및 드라이버(driver) 사이의 관계를 도시하는 아키텍처 다이어그램이다.
도 4는, 본 발명의 실시예에 따른, RPA 시스템을 도시하는 아키텍처 다이어그램이다.
도 5a는, 본 발명의 실시예에 따른, 런타임 시 가상 머신(VM, Virtual Machine) 시스템을 위한 CV를 사용하는 RPA 구현예를 도시한다.
도 5b는, 본 발명의 실시예에 따른, 도 5a의 RPA 구현예로서, 디자인 타임 시 그래픽 컴포넌트가 식별되지 않았거나 오식별된 RPA 구현예를 도시한다.
도 6a는, 사용자가 화면 상의 그래픽 컴포넌트를 선택하려 시도하기 전의, VM을 위한 원격 데스크톱 연결 창을 도시하는 스크린샷이다.
도 6b는, 사용자가 화면 상의 그래픽 컴포넌트를 선택하려 시도한 후의, VM을 위한 원격 데스크톱 연결 창을 도시하는 스크린샷이다.
도 7a는, 본 발명의 실시예에 따른, 디자이너를 통해 CV/OCR이 실행되고 결과가 사용자에게 디스플레이된 후의 선택기 툴 창 및 원격 데스크톱 연결 창을 도시하는 스크린샷이다.
도 7b는, 본 발명의 실시예에 따른, 사용자가 그래픽 컴포넌트를 올바르게 식별되지 않거나 오식별된 것으로서 선택한 후의 선택기 툴 창 및 원격 데스크톱 연결 창을 도시하는 스크린샷이다.
도 7c는, 본 발명의 실시예에 따른, CV 모델을 리트레이닝시킨 후의 원격 데스크톱 연결 창을 도시하는 스크린샷이다.
도 8은, 본 발명의 실시예에 따른, 디자이너를 통해 CV/OCR이 실행되고 결과가 사용자에게 디스플레이된 후의 앵커 지정 창 및 원격 데스크톱 연결 창을 도시하는 스크린샷이다.
도 9a 내지 도 9c는, 본 발명의 실시예에 따른, 다중 앵커 매칭 알고리즘의 예를 도시한다.
도 10은, 본 발명의 실시예에 따른, 디자이너를 통해 CV/OCR이 실행되고 결과가 사용자에게 디스플레이된 후의 앵커 지정 창 및 원격 데스크톱 연결 창을 도시하는 스크린샷이다.
도 11은, 본 발명의 실시예에 따른, CV 모델을 리트레이닝시키기 위한 프로세스를 도시하는 흐름도이다.
도 12는, 본 발명의 실시예에 따른, CV 모델을 리트레이닝시키도록 구성된 컴퓨팅 시스템을 도시하는 아키텍처 다이어그램이다.
일부 실시예는, 더 정확한 컴퓨터 이미지 분석을 위한, 오식별되거나 미식별된 그래픽 컴포넌트의 식별 및 ML 시스템에 의해 생성된 RPA용 CV 모델의 리트레이닝에 관한 것이다. 자동화될 애플리케이션의 그래픽 사용자 인터페이스(GUI, Graphical User Interface)를 포함하는 시각 디스플레이의 스크린샷 이미지가 캡처될 수 있다. Citrix®, VMWare®, VNC®, Windows® 원격 데스크톱 등과 같은, 가상 머신(VM) 실시예에서, 또는 특정 Flash, Silverlight, 또는 PDF 문서에서, 주어진 애플리케이션에 대해 이미지만 표시될 수 있다. 이미지는 본 발명의 범위로부터 벗어나지 않으면서 창, 문서, 금융 영수증, 송장, 및/또는 임의의 다른 그래픽 요소를 포함할 수 있다. 일부 실시예에서, 이미지는 구조화되지 않은 데이터(unstructured data)를 포함할 수 있지만, 특정 실시예에서, 데이터는 구조화(structured)된다.
CV 모델이 그 후, 잠재적으로 OCR로부터의 텍스트 인식 모델과 함께, 스크린샷 이미지에 대해 실행될 수 있고, 이미지 내에서 식별된 특정 그래픽 컴포넌트가 디자이너에게 제공되어, 디자이너는 스크린샷 이미지 및 CV/OCR로부터의 컴포넌트를 식별하는 데이터를 입력으로서 받아들인 후, 식별된 그래픽 컴포넌트의 표시를 사용자를 위해 시각 디스플레이(예컨대, 컴퓨터 모니터, 랩톱 화면, 스마트 폰, 가상 현실 또는 증강 현실 디스플레이 디바이스 등) 상에 디스플레이한다. 시각 디스플레이 상에 하나 이상의 오식별되거나 미식별된 그래픽 컴포넌트(예컨대, 체크박스, 텍스트 박스, 라디오 버튼, 일반 버튼 등)가 있는 경우, 사용자는 자신의 화면 상에서 이들 그래픽 컴포넌트를 망라하는 선택을 할 수 있다. 일부 실시예에서, 효과적인 대안을 사용자에게 제공하는 것(예컨대, 오식별되거나 미식별된 그래픽 컴포넌트를 위한 이미지 매칭 알고리즘을 사용할 수 있는 능력을 사용자에게 제공하는 것)은, 사용자가 선택을 하도록 장려할 수 있다. 일부 실시예에서, 그래픽 컴포넌트는, CV 모델에 의해 식별가능한 시각 디스플레이 요소, OCR에 의해 식별가능한 시각 디스플레이 요소, 및/또는 둘 다에 의한 식별을 요구하는 시각 디스플레이 요소(예컨대, 적어도 약간의 텍스트를 포함하는 텍스트 필드)를 포함할 수 있다는 점에 유의해야 한다. 선택으로부터, 디자이너는, 사용자에 의해 선택된 시각 디스플레이의 영역의 대표 데이터를 결정할 수 있다.
일부 실시예에서, 이 대표 정보는, 영역을 갖는 형상을 정의하는 좌표, 선분, 또는 둘 다를 포함한다. 특정 실시예에서, 선택은 본 발명의 범위로부터 벗어나지 않으면서 직사각형, 원형, 타원형, 정사각형, 육각형, 자유형태, 및/또는 임의의 다른 적합한 형상일 수 있다. 일부 실시예에서, 사용자는 각 관심 그래픽 컴포넌트에 가장 잘 어울릴 수 있는 다수의 유형의 형상 중에서 선택할 수 있을 수도 있다. 예를 들어, 직사각형 형상은 텍스트 박스에 가장 잘 어울릴 수 있지만, 원형 형상은 라디오 버튼에 가장 잘 어울릴 수 있다. 특정 실시예에서, 컴퓨팅 시스템은, 완전히 둘러싸이지 않은 자유 형태 형상을 추론하여 완료하려고 시도할 수 있다.
일부 실시에에서, 적합한 하드웨어가 사용된다면, 대표 정보에 대한 연관된 조정을 이용하여, 형상은 부피를 갖는(즉, 픽셀 대신 복셀을 갖는) 3차원 형상일 수 있다는 점에 유의해야 한다. 예를 들어, 사용자의 손가락의 위치를 검출하는 증강 현실 헤드세트가 사용될 수 있고, 임베딩된 센서를 갖는 포인터 장치가 3차원 위치를 제공할 수 있으며, 다른 것들 또한 가능하다. 예를 들어, 그러한 시스템은 직사각형 또는 원 대신 박스 또는 구를 정의할 수 있다.
디자이너는 그 후 스크린샷 이미지 및 대표 데이터를 이미지 데이터베이스에 송신하고, 검토자는 그 후 이미지 데이터베이스로부터 이 정보를 수신한다. 이 송신은 자동으로 또는 사용자의 명령 시에 발생할 수 있다. 일부 실시예에서 사용자로부터의 추가적인 액션(action) 없이 송신이 자동으로 일어난다는 점은 신규한 것이다. 실제로, 일부 실시예에서, 리트레이닝 프로세스가 개시되었다는 임의의 지식 없이, 또는 사용자가 리트레이닝 프로세스에서 역할을 수행했다는 임의의 지식 없이, 사용자는 오식별 및/또는 미식별된 그래픽 컴포넌트를 식별할 수 있다. 검토자는, 자신의 컴퓨팅 시스템을 통해, 스크린샷 이미지 및 사용자의 디자이너 애플리케이션을 사용하여 사용자에 의해 선택된 영역을 검토하고, 오류가 존재하는 것을 확인한다. 예를 들어, 인간 검토자는 그 후, 거짓 긍정(false positive)을 발견하기 위해, 사용자에 의해 이루어진 선택을 검토하여, 미식별 및/또는 오식별이 실제로 발생하는 것을 보장할 수 있다. 예를 들어, 인간 검토자는 사용자가 창에 대한 최대화/최소화 아이콘을 식별되지 않은 것으로서 선택하지 않았다는 것을 검증할 수 있다. 만일 그렇다면, 검토자는 리트레이닝을 위해 스크린샷 이미지 및 대표 데이터를 ML 시스템에 제출한다. 일부 실시예에서, 리트레이닝은 식별된 다른 문제와 함께 배치(batch)로 행해진다. 일부 실시예에서, 리트레이닝을 증강시키기 위해 이미지 데이터베이스 내의 디자인 타임으로부터의 다른 이미지가 사용된다. 특정 실시예에서, ML 시스템은, CV 모델을 트레이닝시키기 위해 사용된 것과 동일하지만, 스크린샷 이미지 및 대표 데이터에 기초하여 (그리고 전술한 바와 같이 가능하게는 일부 실시예에서 다른 오류를 해소하기 위해) 업데이트된 ML 시스템이다. ML 시스템은 그 후 CV 모델을 리트레이닝시키며, 오식별 및/또는 미식별된 그래픽 컴포넌트를 더 정확하게 식별하는 리트레이닝된 CV 모델을 생성한다. 리트레이닝된 CV 모델은 그 후, CV 모델을 실행하는 컴퓨팅 시스템(예컨대, 별도의 서버, 사용자의 컴퓨팅 시스템 등)에 전송되고, 리트레이닝된 CV 모델은 오식별 및/또는 미식별된 그래픽 컴포넌트를 비롯한 모든 비-텍스트(non-textual) 그래픽 컴포넌트를 올바르게 식별하기 위해 사용된다.
CV 모델의 리트레이닝은 하나 이상의 딥 러닝 신경망(DLNN, Deep Learning Neural Network)을 사용할 수 있다. 예를 들어, TensorFlow®, PyTorch® 등이 사용될 수 있다. 그러나, 이 DLNN 기반 리트레이닝은 완료하는 데 수 일 또는 수 주를 소요할 수 있다. 따라서, 일부 실시예에서, 오식별 또는 미식별된 컴포넌트를 인식하기 위해 대안적인 이미지 인식 기술이 사용자에 의해 사용될 수 있다. 예를 들어, 사용자에 의해 선택된 화면의 영역 내의 그래픽 컴포넌트를 식별하려고 시도하기 위해 해당 영역 상에 이미지 매칭 알고리즘이 사용될 수 있다. 리트레이닝된 CV 모델이 준비되고 배치될 때까지, 디자이너는 향후의 프로세싱을 위해 사용되도록 이 로직을 워크플로우 내에 임베딩할 수 있다. 이미지 매칭은 통상적으로 본 명세서에서 논의되는 다중 앵커 기법보다 덜 정확하지만, CV 모델이 리트레이닝되는 동안, 오식별 또는 미식별된 그래픽 컴포넌트가 적어도 어느 정도의 정확도 레벨로 식별되도록 하는 임시방편을 제공할 수 있다. 이는 즉각적인 임시적 해결책을 제공하기 때문에 사용자가 오식별 및/또는 미식별된 그래픽 컴포넌트의 선택을 하도록 더욱 장려한다.
일부 실시예에서, 그래픽 컴포넌트가 식별되지 않거나 오식별되었을 때 사용자는 덜 정확한 알고리즘을 사용하도록 하는 옵션을 선택한다. 그러나, 특정 실시예에서, 사용자는 자신이 선택을 할 때 그 이면에서 임의의 일이 발생하고 있다는 것을 인지하지 못할 수 있으며, 디자이너는 놓치거나 오식별된 컴포넌트를 위해 대안적인 이미지 인식 모델을 워크플로우 내에 자동으로 임베딩할 수 있다. 따라서, 예컨대, 선택을 하고 "확인" 버튼을 클릭하는 것은, 사용자가 자신이 시스템과 행하고 있는 상호작용이라고 아는 유일한 상호작용일 수 있다.
Citrix®, VMWare®, VNC®, 및 Windows® 원격 데스크톱과 같은 VDI(Virtual Desktop Infrastructure) 환경을 신뢰가능하게 자동화하는 것은 RPA를 사용하여 달성하기 어려웠다. 네이티브 컴퓨팅 시스템을 위한 통상적인 RPA 구현예에서, 선택기가 사용되며, 선택기는, 애플리케이션 요소(예컨대, 버튼, 텍스트 필드 등)를 식별하기 위해 사용자 인터페이스(UI, User Interface)의 요소의 그 하부의 특성을 사용하여 작동한다. 그러나, 이 기법은 VDI 환경 내에서 동일한 소프트웨어를 자동화하려고 할 때 고장 난다. 고장에 대한 이유는, VDI 환경은 비디오 스트리밍 서비스가 이미지를 스트리밍하는 방식과 유사한 방식으로 원격 데스크톱의 이미지를 스트리밍하기 때문이다. 간단히 말하면, "비디오"의 이미지(즉, "프레임") 내에는 식별될 선택기가 없다. 광학 문자 인식(OCR, Optical Character Recognition) 및 이미지 매칭을 사용하여 이러한 과제를 해결하기 위한 시도가 이루어져 왔다. 그러나, 이들 기법은 충분히 신뢰가능하지 않다고 증명되었으며, UI 내의 사소한 변경조차도 자동화를 중단시키는 경향이 있기 때문에 유지보수 문제를 야기해 왔다.
그러나, UiPath®에 의해 사용되는 것과 같은, CV 모델의 사용은 딥 러닝을 사용하여 그러한 이미지 기반 환경을 자동화할 수 있는 능력을 제공한다. 일부 실시예에서 디자이너는(그리고 이하에서 로봇은) 인공 지능(AI, Artificial Intelligence), CV, OCR, 텍스트 퍼지 매칭, 및 단일 앵커 또는 다중 앵커일 수 있는 신규한 앵커링 시스템의 혼합체를 사용하여 인간처럼 사용자 인터페이스를 인식하는 것을 가능케 할 수 있다. 이는 그러한 디자이너/로봇이 그래픽 컴포넌트의 숨겨진 특성, 식별자, 및 다른 메타데이터에 의존하는 대신 화면을 "보고" 그 그래픽 컴포넌트를 시각적으로 식별하도록 한다. 이 CV 기반 접근법은 일부 실시예에서의 VDI 환경으로 제한되지 않는다는 점에 유의해야 한다. 특정 실시예는 또한, SAP, Flash, Silverlight, PDF, 다양한 형식(예컨대, JPG, PNG, BMP 등)의 이미지 등을 포함하지만 이들로 제한되지 않는, 종래의 UI 자동화 기법이 어려움을 겪는 광범위한 사례에 걸쳐서 시각적 그래픽 컴포넌트를 인식할 수 있다.
종래의 이미지 자동화와는 달리, 일부 실시예는 1차 CV 모델을 위해 이미지 매칭에 의존하지 않는다. 결과로서, 그러한 실시예는, 해당 인터페이스에 대한 이미지 매칭 모델을 중단시킬 수 있는, 색상, 글씨체, 크기, 해상도 변경 등을 포함하지만 이들로 제한되지 않는 인터페이스 변경에 고도로 탄력적일 수 있다. 일부 실시예의 CV 모델은 이들 변경 모두를 한 번에 처리하면서도, 의도된 그래픽 컴포넌트를 찾을 수 있다.
일부 실시예는 씬 클라이언트 아키텍처(thin client architecture)와 같은 VM 아키텍처에 대해 특히 이로울 수 있다. 그러나, 가상화는 임의의 적합한 성능 및 기능을 갖는 클라이언트 컴퓨팅 시스템(예컨대, 단독형 데스크톱 및 랩톱 컴퓨팅 시스템, 스마트 폰 등)을 이용하여 수행될 수 있다. 씬 클라이언트 아키텍처에서, 예를 들어, 클라이언트 컴퓨팅 시스템은, 서버와, 또는 로컬에 위치되거나 분산된(예컨대, 클라우드 컴퓨팅 아키텍처) 서버의 네트워크와 원격 연결을 수립하는 경량 컴퓨터이다. 통상적으로, 클라이언트 VM 세션은 하나의 서버 상에서 실행된다.
서버는 종래의 개인용 컴퓨터의 작업 대부분을 수행하며(즉, 소프트웨어 애플리케이션을 시작시키고 데이터를 저장함) 화면 이미지를 클라이언트 컴퓨팅 시스템에 전송한다. 클라이언트 컴퓨팅 시스템은, 사용자가 이미지와 상호작용하고 있는 곳의 키스트로크 및 마우스 클릭(또는 햅틱 인터페이스 상에서의 터치)을 추적하고 이 정보를 서버에 전송한다. 서버는 그 후, 사용자가 상호작용하고자 하는, 서버 상에서 실행되는 대응하는 애플리케이션에 이 정보를 제공한다. 그 후 화면 이미지가 그에 따라 업데이트되고 사용자에게 전송되며, 이는 통상적으로, 사용자의 컴퓨팅 시스템 상에서 실행되는 것처럼, 애플리케이션을 모방한다. 통상적으로, 화면 업데이트는 씬 클라이언트에 실시간 또는 근실시간으로 전송된다.
이미지가 사용되기 때문에, 전술한 바와 같이 일부 실시예는 VM 시스템에서 사용하기에 적합할 수 있다. CV 모델은 이미지 내에 포함된 그래픽 컴포넌트를 식별하려고 한다. 이는, 그래픽 컴포넌트 내에 포함되어 있을 수 있는 이미지 내의 텍스트(예컨대, 텍스트 박스, 텍스트 필드 등)를 식별하려고 하는 텍스트 인식 모듈로 보강될 수 있다.
도 1은, 본 발명의 실시예에 따른, RPA 시스템(100)을 도시하는 아키텍처 다이어그램이다. RPA 시스템(100)은, 개발자가 워크플로우를 설계 및 구현하도록 하는 디자이너(110)를 포함한다. 디자이너(110)는 애플리케이션 통합, 그리고 제3자 애플리케이션, 관리 정보 기술(IT, Information Technology) 작업, 및 비즈니스 IT 프로세스의 자동화를 위한 솔루션을 제공할 수 있다. 디자이너(110)는, 비즈니스 프로세스의 그래픽 표현인, 자동화 프로젝트의 개발을 용이하게 할 수 있다. 간단히 말하면, 디자이너(110)는 워크플로우 및 로봇의 개발 및 배치를 용이하게 한다.
자동화 프로젝트는, 워크플로우 내에서 개발되는 단계의 커스텀 세트 사이의 관계 및 실행 순서에 대한 제어권을 개발자에게 제공함으로써 규칙 기반 프로세스의 자동화를 가능케 하며, 이는 본 명세서에서 "액티비티(activity)"로서 정의된다. 디자이너(110)의 실시예의 하나의 상용 예는 UiPath Studio™이다. 각 액티비티는, 버튼 클릭, 파일 읽기, 로그 패널에 기록하기 등과 같은 액션을 포함할 수 있다. 일부 실시예에서, 워크플로우는 중첩(nested)되거나 임베딩될 수 있다.
일부 유형의 워크플로우는 시퀀스, 흐름도, 유한 상태 머신(FSM, Finite State Machine), 및/또는 전역적 예외 핸들러를 포함할 수 있지만 이들로 제한되지 않는다. 시퀀스는 선형적 프로세스에 대해 특히 적합할 수 있으며, 워크플로우를 난잡스럽게 하지 않으면서 하나의 액티비티로부터 또 다른 액티비티로의 흐름을 가능케 한다. 흐름도는 더 복잡한 비즈니스 로직에 특히 적합할 수 있으며, 다수의 분기 로직 연산자를 통해 더 다양한 방식으로 의사결정의 통합과 액티비티의 연결을 가능케 한다. FSM은 대규모 워크플로우에 대해 특히 적합할 수 있다. FSM은, 실행 중에 유한한 수의 상태를 사용하며, 이는 조건(즉, 전이) 또는 액티비티에 의해 트리거링된다. 전역적 예외 핸들러는, 예외 오류가 발생할 때 그리고 프로세스의 디버깅을 위해 워크플로우 거동을 결정하는 데 특히 적합할 수 있다.
디자이너(110) 내에서 워크플로우가 개발되면, 비즈니스 프로세스의 실행은, 디자이너(110) 내에서 개발된 워크플로우를 실행하는 하나 이상의 로봇(130)을 오케스트레이션(orchestration)하는 컨덕터(conductor)(120)에 의해 오케스트레이션된다. 컨덕터(120)의 실시예의 하나의 상용 예는 UiPath Orchestrator™이다. 컨덕터(120)는 환경 내의 자원의 생성, 모니터링, 및 배치의 관리를 용이하게 한다. 컨덕터(120)는 제3자 솔루션 및 애플리케이션과의 통합 지점으로서의 역할을 할 수 있다.
컨덕터(120)는 로봇(130)의 무리(fleet)를 관리하여, 중앙화된 지점으로부터 로봇(130)을 연결 및 실행시킬 수 있다. 관리될 수 있는 로봇(130)의 유형은 유인형 로봇(attended robot)(132), 무인형 로봇(unattended robot)(134), 개발 로봇(무인형 로봇(134)과 유사하지만, 개발 및 테스팅 목적을 위해 사용됨), 및 비생산 로봇(유인형 로봇(132)과 유사하지만, 개발 및 테스팅 목적을 위해 사용됨)을 포함하지만 이들로 제한되지 않는다. 유인형 로봇(132)은 사용자 이벤트에 의해 트리거링되고 동일한 컴퓨팅 시스템 상에서 인간과 함께 동작한다. 유인형 로봇(132)은 중앙화된 프로세스 개발 및 로깅 매체용으로 컨덕터(120)와 함께 사용될 수 있다. 유인형 로봇(132)은 인간 사용자가 다양한 작업을 완료하는 것을 도울 수 있고, 사용자 이벤트에 의해 트리거링될 수 있다. 일부 실시예에서, 프로세스는 이러한 유형의 로봇 상에서 컨덕터(120)로부터 시작될 수 없고, 그리고/또는 잠긴 화면 하에서 실행될 수 없다. 특정 실시예에서, 유인형 로봇(132)은 오직 로봇 트레이로부터 또는 명령 프롬프트로부터만 시작될 수 있다. 일부 실시예에서, 유인형 로봇(132)은 인간의 감독 하에서 실행되어야 한다.
무인형 로봇(134)은 가상 환경 내에서 무인 상태로 실행되며 여러 프로세스를 자동화할 수 있다. 무인형 로봇(134)은 원격 실행, 모니터링, 스케줄링, 및 워크 큐(work queue)에 대한 지원 제공을 담당할 수 있다. 일부 실시예에서, 모든 로봇 유형에 대한 디버깅은 디자이너(110) 내에서 실행될 수 있다. 유인형 및 무인형 로봇 둘 다는, 메인프레임, 웹 애플리케이션, VM, 엔터프라이즈 애플리케이션(예컨대, SAP®, SalesForce®, Oracle® 등에 의해 생산되는 엔터프라이즈 애플리케이션), 및 컴퓨팅 시스템 애플리케이션(예컨대, 데스크톱 및 랩톱 애플리케이션, 모바일 디바이스 애플리케이션, 웨어러블 컴퓨터 애플리케이션 등)을 포함하지만 이들로 제한되지 않는 다양한 시스템 및 애플리케이션을 자동화할 수 있다.
컨덕터(120)는, 프로비저닝(provisioning), 배치, 구성, 큐잉, 모니터링, 로깅, 및/또는 상호연결성 제공을 포함하지만 이들로 제한되지 않는 다양한 능력을 가질 수 있다. 프로비저닝은 로봇(130)과 컨덕터(120)(예컨대, 웹 애플리케이션) 사이의 연결의 생성 및 유지보수를 포함할 수 있다. 배치는, 실행을 위해 할당된 로봇(130)으로의 패키지 버전의 올바른 전달을 보장하는 것을 포함할 수 있다. 구성은 로봇 환경 및 프로세스 구성의 유지보수 및 전달을 포함할 수 있다. 큐잉은, 큐 및 큐 항목의 관리를 제공하는 것을 포함할 수 있다. 모니터링은, 로봇 식별 데이터를 지속적으로 추적하고 사용자 권한을 유지보수하는 것을 포함할 수 있다. 로깅은, 로그를 데이터베이스(예컨대, SQL 데이터베이스) 및/또는 다른 저장 메커니즘(예컨대, 대규모 데이터세트를 저장하고 신속하게 질의(query)할 수 있는 능력을 제공하는 ElasticSearch®)에 저장하고 인덱싱하는 것을 포함할 수 있다. 컨덕터(120)는 제3자 솔루션 및/또는 애플리케이션에 대한 중앙화된 통신 지점으로서의 역할을 함으로써 상호연결성을 제공할 수 있다.
로봇(130)은, 디자이너(110) 내에서 빌드된 워크플로우를 실행시키는 실행 에이전트이다. 로봇(130)의 일부 실시예의 하나의 상용 예는 UiPath Robots™이다. 일부 실시예에서, 로봇(130)은 Microsoft Windows® Service Control Manager(SCM)-관리 서비스를 디폴트로서 인스톨한다. 결과로서, 그러한 로봇(130)은 로컬 시스템 계정 하에서 상호작용식 Windows® 세션을 열고 Windows® 서비스의 권한을 가질 수 있다.
일부 실시예에서, 로봇(130)은 사용자 모드에서 인스톨될 수 있다. 그러한 로봇(130)의 경우, 이것은, 주어진 로봇(130)이 사용자의 권한 하에서 인스톨되었을 때, 로봇은 사용자와 동일한 권한을 갖는다는 것을 의미한다. 이 특징은 또한 고밀도(HD, High Density) 로봇에 대해서도 사용가능할 수 있으며, 이는 각 머신의 최대 잠재력에서의 완전한 이용을 보장한다. 일부 실시예에서, 임의의 유형의 로봇(130)이 HD 환경 내에서 구성될 수 있다.
일부 실시예에서 로봇(130)은 여러 컴포넌트로 분할되며, 각 컴포넌트는 특정 자동화 작업 전용이다. 일부 실시에에서 로봇 컴포넌트는 SCM-관리 로봇 서비스, 사용자 모드 로봇 서비스, 실행기, 에이전트, 및 명령 라인을 포함하지만 이들로 제한되지 않는다. SCM-관리 로봇 서비스는 Windows® 세션을 관리 및 모니터링하고, 컨덕터(120)와 실행 호스트(즉, 해당 컴퓨팅 시스템 상에서 로봇(130)이 실행되는 컴퓨팅 시스템) 사이의 프록시(proxy)로서의 역할을 한다. 이들 서비스는 로봇(130)을 위한 자격증명(credential)을 이용하여 신뢰되고 해당 자격증명을 관리한다. 로컬 시스템 하에서 SCM에 의해 콘솔 애플리케이션이 시작된다.
일부 실시예에서 사용자 모드 로봇 서비스는 Windows® 세션을 관리 및 모니터링하고, 컨덕터(120)와 실행 호스트 사이의 프록시로서의 역할을 한다. 사용자 모드 로봇 서비스는 로봇(130)을 위한 자격증명을 이용하여 신뢰되고 해당 자격증명을 관리한다. SCM-관리 로봇 서비스가 인스톨되어 있지 않다면 Windows® 애플리케이션이 자동으로 시작될 수 있다.
실행기는 Windows® 세션 하에서 주어진 작업을 실행시킬 수 있다(즉, 워크플로우를 실행시킬 수 있음). 실행기는 모니터별 DPI(dots per inch) 설정을 인지하고 있을 수 있다. 에이전트는, 시스템 트레이 창 내에 사용가능한 작업을 디스플레이하는 Windows® Presentation Foundation(WPF) 애플리케이션일 수 있다. 에이전트는 서비스의 클라이언트일 수 있다. 에이전트는 작업을 시작 및 정지하도록 그리고 설정을 변경하도록 요청할 수 있다. 명령 라인은 서비스의 클라이언트이다. 명령 라인은, 작업을 시작하도록 그리고 작업의 출력을 대기하도록 요청할 수 있는 콘솔 애플리케이션이다.
로봇(130)의 컴포넌트가 전술한 바와 같이 분할되도록 하는 것은, 각 컴포넌트가 무엇을 실행하는지를 개발자, 지원 사용자, 및 컴퓨팅 시스템이 더 쉽게 실행, 식별 및 추적하도록 돕는다. 이러한 방식으로, 실행기와 서비스에 대해 상이한 방화벽 규칙을 설정하는 것과 같이, 컴포넌트별로 특수한 거동이 구성될 수 있다. 일부 실시예에서 실행기는 항상 모니터별 DPI 설정을 인지하고 있을 수 있다. 결과로서, 워크플로우는, 해당 워크플로우가 생성되었던 컴퓨팅 시스템의 구성에 상관없이, 임의의 DPI에서 실행될 수 있다. 일부 실시예에서 디자이너(110)로부터의 프로젝트는 또한 브라우저 줌 레벨에 독립적일 수 있다. 일부 실시예에서, DPI를 인지하고 있지 않거나, 인지하고 있지 않은 것으로서 의도적으로 마킹된 애플리케이션의 경우, DPI가 디스에이블링될 수 있다.
도 2는, 본 발명의 실시예에 따른, 배치된 RPA 시스템(200)을 도시하는 아키텍처 다이어그램이다. 일부 실시예에서, RPA 시스템(200)은 도 1의 RPA 시스템(100)일 수 있거나 도 1의 RPA 시스템(100)의 일부일 수 있다. 클라이언트 측, 서버 측, 또는 둘 다는 본 발명의 범위로부터 벗어나지 않으면서 임의의 원하는 수의 컴퓨팅 시스템을 포함할 수 있다는 점에 유의해야 한다. 클라이언트 측에서, 로봇 애플리케이션(210)은 실행기(212), 에이전트(214), 및 디자이너(216)를 포함한다. 그러나, 일부 실시예에서, 디자이너(216)는 컴퓨팅 시스템(210) 상에서 실행되고 있지 않을 수 있다. 실행기(212)는 프로세스를 실행하고 있다. 도 2에 도시된 바와 같이, 여러 비즈니스 프로젝트가 동시에 실행될 수 있다. 이 실시예에서 에이전트(214)(예컨대, Windows® 서비스)는 모든 실행기(212)에 대한 단일 접촉 지점이다. 이 실시예에서 모든 메시지는 컨덕터(230) 내에 로깅되며, 컨덕터(230)는 데이터베이스 서버(240), 인덱서 서버(250), 및 둘 다를 통해 메시지를 더 프로세싱한다. 도 1에 관하여 전술한 바와 같이, 실행기(212)는 로봇 컴포넌트일 수 있다.
일부 실시예에서, 로봇은 머신 이름과 사용자이름 사이의 연관을 나타낸다. 로봇은 다수의 실행기를 동시에 관리할 수 있다. 동시에 실행되는 다수의 상호작용식 세션을 지원하는 컴퓨팅 시스템(예컨대, Windows® Server 2012) 상에서, 다수의 로봇이, 각각 고유한 사용자이름을 사용하여 별도의 Windows® 세션 내에서, 동시에 실행되고 있을 수 있다. 이는 전술한 HD 로봇으로서 지칭된다.
에이전트(214)는 또한 로봇의 상태를 전송(예컨대, 로봇이 여전히 기능하고 있다는 것을 나타내는 "하트비트(heartbeat)" 메시지를 주기적으로 전송)하고 실행될 패키지의 요구되는 버전을 다운로드하는 것을 담당한다. 일부 실시예에서 에이전트(214)와 컨덕터(230) 사이의 통신은 항상 에이전트(214)에 의해 개시된다. 알림 시나리오에서, 에이전트(214)는, 명령(예컨대, 시작, 정지 등)을 로봇에 전송하기 위해 컨덕터(230)에 의해 이후에 사용되는 WebSocket 채널을 열 수 있다.
서버 측에서는, 표현 계층(웹 애플리케이션(232), OData(Open Data Protocol) REST(Representative State Transfer) API(Application Programming Interface) 엔드포인트(234), 및 알림 및 모니터링(236)), 서비스 계층(API 구현/비즈니스 로직(238)), 및 영속 계층(데이터베이스 서버(240) 및 인덱서 서버(250))이 포함된다. 컨덕터(230)는 웹 애플리케이션(232), OData REST API 엔드포인트(234), 알림 및 모니터링(236), 및 API 구현/비즈니스 로직(238)을 포함한다. 일부 실시예에서, 컨덕터(220)의 인터페이스에서(예컨대, 브라우저(220)를 통해) 사용자가 수행하는 대부분의 액션은 다양한 API를 호출함으로써 수행된다. 그러한 액션은 본 발명의 범위로부터 벗어나지 않으면서 로봇 상에서의 작업의 시작, 큐 내의 데이터의 추가/제거, 무인 상태로 실행될 작업의 스케줄링 등을 포함하지만 이들로 제한되지 않는다. 웹 애플리케이션(232)은 서버 플랫폼의 시각 계층이다. 이 실시예에서, 웹 애플리케이션(232)은 HTML(Hypertext Markup Language) 및 JS(JavaScript)를 사용한다. 그러나, 본 발명의 범위로부터 벗어나지 않으면서 임의의 원하는 마크업 언어, 스크립트 언어, 또는 임의의 다른 형식이 사용될 수 있다. 이 실시예에서 사용자는 컨덕터(230)를 제어하기 위한 다양한 액션을 수행하기 위해 브라우저(220)를 통해 웹 애플리케이션(232)으로부터 웹 페이지와 상호작용한다. 예를 들어, 사용자는 로봇 그룹을 생성하고, 로봇에 패키지를 할당하고, 로봇별 및/또는 프로세스별 로그를 분석하고, 로봇을 시작 및 정지할 수 있으며, 다른 것들 또한 가능하다.
웹 애플리케이션(232)에 더하여, 컨덕터(230) 또한, OData REST API 엔드포인트(234)를 노출시키는 서비스 계층을 포함한다. 그러나, 본 발명의 범위로부터 벗어나지 않으면서 다른 엔드포인트가 포함될 수 있다. REST API는 웹 애플리케이션(232)과 에이전트(214) 둘 다에 의해 소비된다. 이 실시예에서 에이전트(214)는 클라이언트 컴퓨터 상의 하나 이상의 로봇의 수퍼바이저이다.
이 실시예에서 REST API는 구성, 로깅, 모니터링, 및 큐잉 기능을 커버한다. 일부 실시예에서 구성 엔드포인트는, 애플리케이션 사용자, 권한, 로봇, 애셋, 릴리스, 및 환경을 정의 및 구성하기 위해 사용될 수 있다. 로깅 REST 엔드포인트는, 예를 들어, 오류, 로봇에 의해 전송된 명시적 메시지, 및 다른 환경 특유 정보와 같은 상이한 정보를 로깅하기 위해 사용될 수 있다. 배치 REST 엔드포인트는, 컨덕터(230) 내에서 작업 시작 명령이 사용된다면 실행되어야 하는 패키지 버전을 질의하기 위해 로봇에 의해 사용될 수 있다. 큐잉 REST 엔드포인트는, 큐에 데이터를 추가하는 것, 큐로부터 트랜잭션을 획득하는 것, 및 트랜잭션의 상태를 설정하는 것 등과 같은, 큐 및 큐 항목 관리를 담당할 수 있다.
모니터링 REST 엔드포인트는 웹 애플리케이션(232) 및 에이전트(214)를 모니터링한다. 알림 및 모니터링 API(236)는, 에이전트(214)를 등록하고, 구성 설정을 에이전트(214)에 전달하고, 서버 및 에이전트(214)로부터의 알림을 전송/수신하기 위해 사용되는 REST 엔드포인트일 수 있다. 일부 실시예에서 알림 및 모니터링 API(236)는 또한 WebSocket 통신을 사용할 수 있다.
이 실시예에서 영속 계층은 서버 쌍 - 데이터베이스 서버(240)(예컨대, SQL 서버) 및 인덱서 서버(250) - 을 포함한다. 이 실시예에서 데이터베이스 서버(240)는 로봇의 구성, 로봇 그룹, 연관된 프로세스, 사용자, 역할, 스케줄 등을 저장한다. 일부 실시예에서 이 정보는 웹 애플리케이션(232)을 통해 관리된다. 데이터베이스 서버(240)는 큐 및 큐 항목을 관리할 수 있다. 일부 실시예에서, 데이터베이스 서버(240)는 (인덱서 서버(250)에 더하여 또는 인덱서 서버(250) 대신), 로봇에 의해 로깅된 메시지를 저장할 수 있다.
일부 실시예에서는 선택적인, 인덱서 서버(250)는, 로봇에 의해 로깅된 정보를 저장 및 인덱싱한다. 특정 실시예에서, 인덱서 서버(250)는 구성 설정을 통해 디스에이블링될 수 있다. 일부 실시예에서, 인덱서 서버(250)는, 오픈 소스 프로젝트 전체 텍스트 검색 엔진인 ElasticSearch®를 사용한다. (예컨대, 메시지 로깅 또는 라인 기록과 같은 액티비티를 사용하여) 로봇에 의해 로깅된 메시지는 로깅 REST 엔드포인트를 통해 인덱서 서버(250)에 전송될 수 있으며, 향후의 이용을 위해 인덱서 서버(250)에서 인덱싱된다.
도 3은, 본 발명의 실시예에 따른, 디자이너(310), 액티비티(320, 330), 및 드라이버(340) 사이의 관계(300)를 도시하는 아키텍처 다이어그램이다. 전술한 바와 같이, 개발자는, 로봇에 의해 실행되는 워크플로우를 개발하기 위해 디자이너(310)를 사용한다. 워크플로우는 사용자 정의 액티비티(320) 및 UI 자동화 액티비티(330)를 포함할 수 있다. 일부 CV 액티비티는 클릭(click), 타이핑(type), 텍스트 가져오기(get text), 호버링(hover), 요소의 존재(element exists), 범위 리프레싱(refresh scope), 강조(highlight) 등을 포함할 수 있지만 이들로 제한되지 않는다. 일부 실시예에서, 클릭은, 예컨대, CV, OCR, 퍼지 텍스트 매칭, 및 다중 앵커를 사용하여 요소를 식별하고 해당 요소를 클릭한다. 타이핑은 전술한 바를 사용하여 요소를 식별할 수 있고 해당 요소 내에 타이핑한다. 텍스트 가져오기는 특정 텍스트의 위치를 식별하고 OCR을 사용하여 해당 텍스트를 스캐닝할 수 있다. 호버링은 요소를 식별하고 해당 요소 위에서 호버링할 수 있다. 요소의 존재는, 전술한 기법을 사용하여 화면 상에 요소가 존재하는지의 여부를 확인할 수 있다. 일부 실시예에서, 디자이너(310) 내에서 구현될 수 있는 수백 개 또는 심지어 수천 개의 액티비티가 있을 수 있다. 그러나, 본 발명의 범위로부터 벗어나지 않으면서 임의의 수 및/또는 유형의 액티비티가 사용가능할 수 있다.
UI 자동화 액티비티(330)는, 하위 레벨 코드로 기록되는 특수한 하위 레벨 액티비티(예컨대, CV 액티비티)의 서브세트이며 화면과의 상호작용을 용이하게 한다. UI 자동화 액티비티는, 원하는 소프트웨어와 로봇이 상호작용하도록 하는 드라이버(340)를 통해 이들 상호작용을 용이하게 한다. 예를 들어, 드라이버(340)는 OS 드라이버(342), 브라우저 드라이버(344), VM 드라이버(346), 엔터프라이즈 애플리케이션 드라이버(348) 등을 포함할 수 있다.
드라이버(340)는 후크(hook)를 찾고, 키에 대해 모니터링하는 등, 로우 레벨에서 OS와 상호작용할 수 있다. 드라이버는 Chrome®, IE®, Citrix®, SAP® 등과의 통합을 용이하게 할 수 있다. 예를 들어, "클릭" 액티비티는 드라이버(340)를 통해 이들 상이한 애플리케이션 내에서 동일한 역할을 수행한다.
도 4는, 본 발명의 실시예에 따른, RPA 시스템(400)을 도시하는 아키텍처 다이어그램이다. 일부 실시예에서, RPA 시스템(400)은 도 1 및/또는 도 2의 RPA 시스템(100 및/또는 200)이거나 그러한 RPA 시스템을 포함할 수 있다. RPA 시스템(400)은, 로봇을 실행시키는 다수의 클라이언트 컴퓨팅 시스템(410)을 포함한다. 컴퓨팅 시스템(410)은, 해당 컴퓨팅 시스템 상에서 실행되는 웹 애플리케이션을 통해 컨덕터 컴퓨팅 시스템(420)과 통신할 수 있다. 컨덕터 컴퓨팅 시스템(420)은, 이어서, 데이터베이스 서버(430) 및 선택적인 인덱서 서버(440)와 통신할 수 있다.
도 2 및 도 4에 관하여, 이들 실시예에서는 웹 애플리케이션이 사용되지만, 본 발명의 범위로부터 벗어나지 않으면서 임의의 적합한 클라이언트/서버 소프트웨어가 사용될 수 있다는 점에 유의해야 한다. 예를 들어, 컨덕터는, 클라이언트 컴퓨팅 시스템 상의 웹 기반이 아닌 클라이언트 소프트웨어와 통신하는 서버 측 애플리케이션을 실행시킬 수 있다.
도 5a는, 본 발명의 실시예에 따른, 런타임 시 VM 시스템을 위한 CV를 사용하는 RPA 구현예(500)를 도시한다. VM 서버(510)는, 클라이언트 컴퓨팅 시스템(530)에 전송되는 일련의 이미지(520)를 생성한다. 이미지(520)는, 컴퓨팅 시스템(530) 상에서 실행되는 애플리케이션에 의해 디스플레이될 수 있다. 대안적으로, 이미지(520)는 컴퓨팅 시스템(530) 자체의 화면으로서 디스플레이될 수 있다.
VM 서버(510)로부터의 이미지(520)는 로봇(532)에 전송되며, 로봇(532)은, CV 서버(540) 상에서 실행되는 CV 모델로부터 그래픽 컴포넌트의 식별을 수신하고, (예컨대, Google®, Microsoft®, Abbyy® 등에 의해 제공되는) OCR 서버(550)로부터 OCR 데이터를 수신한다. 일부 실시예에서, CV 모델 및 OCR은 동일한 서버 상에서 실행될 수 있다. 특정 실시예에서 CV 모델과 OCR 중 하나 또는 둘 다는 컴퓨팅 시스템(530) 상에서 실행될 수 있다. 일부 실시예에서, 로봇(532)은, CV 서버(540) 및 OCR 서버(550)로부터의 이미지(520) 및 데이터에 대한 액세스를 가지고 있는 한, 상이한 컴퓨팅 시스템 상에 상주할 수 있다. 로봇(532)은, CV 모델 및 OCR로부터 수신된 정보를 프로세싱하고, 이 정보를 사용하여 이미지 내의 그래픽 컴포넌트를 인식한다. 로봇은 그 후 원하는 액티비티(예컨대, 정보 채우기, 버튼 클릭하기, 제3자 소프트웨어와의 인터페이싱 등)를 수행한다.
도 5b는, 본 발명의 실시예에 따른, 디자인 타임 시 그래픽 컴포넌트가 오식별되었거나 식별되지 않은 RPA 구현예(500)를 도시한다. 이 실시예에서 컴퓨팅 시스템(530)은 로봇(532)을 실행시키기보다는 디자이너(534)를 실행시킨다. 컴퓨팅 시스템(530)은 도 5b에서 동일한 컴퓨팅 시스템으로서 도시되었다는 점에도 유의해야 한다. 이 경우에, 사용자는 그래픽 컴포넌트가 오식별되었거나 식별되지 않은 이미지(520)의 섹션을 둘러싸는 경계 형상(522)을 그렸다.
디자이너(534)는 경계 형상(522)의 대표 데이터를 수신하고 이 정보를 이미지(520)와 함께 이미지 데이터베이스(560)에 전송한다. 이미지 데이터베이스(560)는, 이어서, 대표 데이터 및 이미지를 검토자의 컴퓨팅 시스템(570)에 제공한다. 검토자 컴퓨팅 시스템(570)을 사용하는 인간 검토자는, 그래픽 컴포넌트가 실제로 식별되지 않았거나 오식별되었는지의 여부를 결정할 수 있는 능력을 가진 소프트웨어 엔지니어 또는 어떠한 다른 개인일 수 있다. 인간 검토자는 그 후 CV 서버(540)를 통해 이미지를 CV 모델에 통과시키고 결과를 확인한다. 디자이너(534)에 의해 제출된 이미지 및 대표 데이터가 실제로 그러한 오류를 나타낸다면, 검토자는, 검토자 컴퓨팅 시스템(570)을 통해, 오식별되거나 미식별된 그래픽 컴포넌트를 올바르게 라벨링하고, 리트레이닝을 위해 적절한 라벨과 함께 이미지(520)를 ML 시스템(580)(예컨대, 하나 이상의 서버, 분산형 또는 클라우드 컴퓨팅 시스템, 수퍼컴퓨터, 양자 컴퓨팅 시스템 등)에 전송한다. ML 시스템(580)은 그 후 CV 모델을 위한 딥 러닝 리트레이닝 프로세스를 시작한다. 전술한 바와 같이, 일부 실시예에서, DLNN 시스템이 CV 모델을 리트레이닝시키는 데 소요할 수 있는 상대적으로 긴 시간으로 인해, 이 리트레이닝은 다른 오류가 수신된 후에 배치로 행해질 수 있다.
일부 실시예에서 CV의 정상 동작 중에, (1) 디자인 타임 이미지; (2) 보고된 문제; 및 (3) 이미지 매칭 영역이라는 3개의 유형의 정보가 이미지 데이터베이스(540) 내에 저장되고, 리트레이닝을 위해 사용될 수 있다. 일부 실시예에서 디자인 타임 이미지는, 사용자가 자동화하기 원한다는 것을 애플리케이션에 나타낼 때 캡처된 스크린샷이다. 일부 실시예에서 그러한 스크린샷은 추가적인 데이터를 갖지 않는 전체 UI일 수 있다. 이는 검토자가 스크린샷 및 그 검출 결과를 보고 모든 것이 올바르게 검출되었는지의 여부를 확인할 수 있도록 하기 위한 것일 수 있다. 만일 그렇다면, 스크린샷은 폐기될 수 있다. 그러나, 임의의 오류가 인지되면, 검토자는 그에 따라 오류에 라벨링하고 오류를 ML 시스템(580)(예컨대, ML 트레이닝 서버)에 전송할 수 있다.
일부 실시예에서, 보고된 문제에 관하여, 요소가 검출되지 않거나 오식별될 때, 예컨대, 사용자는 "문제 보고하기" 버튼을 클릭하고, 오류가 존재하는 영역을 나타내기 위해 (예컨대, 박스를 그리는 것을 통해) 선택을 하고, 제출 버튼을 클릭할 수 있다. 이 스크린샷 이미지 및 강조된 영역은 그 후 검토자에게 전송된다. 검토자는 실제로 오류가 있었는지의 여부를 확인하고, 요소를 올바른 라벨로 라벨링하고, 리트레이닝을 위해 이미지 및 올바른 라벨을 ML 시스템(580)에 전송한다.
일부 실시예에서 이미지 매칭 영역은, 보고된 문제와 동일한 일반적인 흐름을 따를 수 있다. 전체 UI 및 이미지 매칭 영역의 좌표가 이미지 데이터베이스(540)에 전송될 수 있다. 검토자가 그 후 모든 것을 확인하고, 만일 오류가 있다면, 리트레이닝을 위해 데이터를 ML 시스템(560)에 전송한다.
CV 모델이 리트레이닝되면, ML 시스템(580)은 리트레이닝된 CV 모델을 CV 서버(540)에 전송한다. 리트레이닝된 CV 모델은 그 후 이미지(520)의 향후 버전에 관한 CV 분석을 수행하기 위해 사용된다.
전술한 바와 같이, 일부 실시예는 SAP, Flash, Silverlight, PDF, 다양한 형식(예컨대, JPG, PNG, BMP 등)의 이미지 등에 대해 CV 및 OCR을 수행할 수 있는 능력을 지니고 있다. SAP의 경우, SAP 서버가 VM 서버(510)를 대신할 수 있다. 일부 실시예에서, 다수의 서버 유형(예컨대, VM 서버, SAP 서버 등)이 동시에 클라이언트 컴퓨팅 시스템(530)과 통신할 수 있다. 특정 실시예에서, 전술한 원격 서버에 더하여 또는 전술한 원격 서버 대신, Flash, Silverlight, PDF, 이미지 등의 로컬 인스턴스가 클라이언트 컴퓨팅 시스템(530) 상에 디스플레이될 수 있고, 전술한 바와 같이 로봇(532)이 그 이미지를 프로세싱할 수 있다.
도 6a 및 도 6b는, 사용자가 화면 상의 그래픽 컴포넌트를 선택하려 시도하기 전(도 6a) 및 후(도 6b)의, VM을 위한 원격 데스크톱 연결 창(600)을 도시한다. 볼 수 있는 바와 같이, 사용자가 "On Us Check" 옆의 필드를 선택하려고 할 때, 전체 창이 강조되었다. 이는, 원격 데스크톱 연결 창(600)이 단지 이미지일 뿐이기 때문이다.
도 7a는, 본 발명의 실시예에 따른, 디자이너를 통해 CV/OCR이 실행되고 결과가 사용자에게 디스플레이된 후의 선택기 툴 창(710) 및 원격 데스크톱 연결 창(700)을 도시하는 스크린샷이다. 볼 수 있는 바와 같이, 텍스트 필드(702)가 이제 식별되었고 선택 가능하며, 창(600)의 경우에는 그러하지 않았다. 그러나, CV 모델은 항상 모든 그래픽 컴포넌트를 올바르게 식별할 수 있는 것은 아니고, 그리고/또는 하나 이상의 그래픽 컴포넌트를 놓칠 수 있다. 예를 들어, "Cash Count" 버튼이 CV 모델에 의해 식별되지 않았다고 가정한다. 그러한 경우, 사용자는, 사용자가 선택(704)을 할 수 있도록 하는 선택기 툴 창(700)을 사용할 수 있다. 도 7b를 참조한다. 이 실시예에서, 선택에 관한 결과는 선택기 창(710) 내에 표시된다. 사용자는 그 후 오식별 또는 미식별이 발생한 화면 상의 영역을 선택하여, 선택된 영역(706)을 생성할 수 있다. 전술한 바와 같이, 본 발명의 범위로부터 벗어나지 않으면서 임의의 적합한 형상이 정의 및/또는 사용될 수 있다는 점에 유의해야 한다.
일부 실시예에서, 이미지 및 대표 데이터는 자동화 파일(워크플로우) 내에 저장되며, 로봇이 워크플로우 로직을 자율적으로 실행시킬 때 해당 특정 화면 요소의 위치를 확인하고 해당 특정 요소를 동작시키기 위해(예컨대, 해당 특정 요소를 클릭) 런타임 시에 사용될 것이다. 특정 실시예에서, 그 이면에서는, 사용자에 의해 표시된 선택에 관한 이미지 및 대표 데이터는, 검토자에 의해 검토되기 위해, 그리고 가능하게는 리트레이닝을 위해 사용되기 위해, 이미지 데이터베이스에 전송된다. 전술한 바와 같이, 이는 사용자가 알지 못하게 발생할 수 있다.
CV 모델의 리트레이닝이 발생한 후, CV 모델 내에서 식별된 그래픽 컴포넌트를 사용자에게 보이기 위해 CV 모델은 다시 실행되고 디자이너에 의해 사용될 수 있다. 도 7c의 음영에 의해 나타난 바와 같이, 이제 창(700) 내의 모든 그래픽 컴포넌트는 올바르게 식별되어야 한다. Cash Count 버튼(708)은 이제 인식된다. 사용자가, 워크플로우가 올바르게 동작하고 있고 모든 그래픽 컴포넌트가 올바르게 식별되었다는 신뢰감을 갖는다면, 워크플로우는 로봇에 의해 자율적으로 실행될 수 있다.
일부 실시예에서, 이미지 내의 그래픽 컴포넌트를 고유하게 인식하기 위해 다중 앵커 매칭 알고리즘이 사용된다. CV 모델은 화면 상의 특정 그래픽 컴포넌트를 식별할 수 있다. 도 8은, 본 발명의 실시예에 따른, 디자이너를 통해 CV/OCR이 실행되고 결과가 사용자에게 디스플레이된 후의 앵커 지정 창(810) 및 원격 데스크톱 연결 창(800)을 도시하는 스크린샷이다. 여기서, 사용자는 Cash Count 버튼(802)을 타겟으로서 식별한다. 사용자는 그 후 그 외쪽에 있는 텍스트 필드(804)를 앵커로서 식별한다. 이 경우, Cash Count 버튼(802)의 왼쪽에 있는 텍스트 필드(804)의 존재는, Cash Count 버튼(802)을 고유하게 식별하는 데 충분하다.
그러나, 이는 모든 경우의 그래픽 컴포넌트를 고유하게 식별하는 데 충분하지 않을 수 있다(예컨대, "Name"이라는 2개의 텍스트 라벨이 2개의 상이한 텍스트 필드의 왼쪽에 있음). 그러한 경우, 사용자는, 그래픽 컴포넌트를 고유하게 식별하기 위한 하나 이상의 고유한 구별자 앵커(discriminator anchor)를 추가하도록 요구받을 수 있다. 앵커 및 타겟에 관한 위치 정보, 크기 정보, 방향(orientation) 정보 등은, 기하학적 형상 또는 그래픽 구조(예컨대, 방향(벡터)이 없고, 다수의 선분이 다양한 방식으로 연결되어 있는, 외측 별(out-star)과 같은, 그래픽으로 된 "별")의 특성을 정의하기 위해 사용될 수 있다. 이 형상 또는 구조는 그 후 타겟 그래픽 컴포넌트를 고유하게 결정하기 위해 사용될 수 있다.
비제한적인 예로, 특정 텍스트 라벨이 이름 텍스트 필드(예컨대, "Name")의 왼쪽에서 발견되는 전술한 경우를 고려할 수 있다. 그러나, 이미지는 또한, 동일한 라벨 텍스트를 그 왼쪽에 갖는 제2 이름 텍스트 필드를 포함한다고 가정한다. 이 라벨의 존재만으로는 2개의 텍스트 필드를 구별하지 못한다.
그러나, 이는, 또 다른 그래픽 요소의 위치 관계가, 하나의 텍스트 필드를 나머지 다른 하나의 텍스트 필드에 대해 고유하게 식별하도록 하는 경우일 수 있다. 예를 들어, 화면 상의 특정 장소에 버튼이 위치될 수 있다. 나머지 다른 하나의 텍스트 필드, 그 왼쪽에 있는 라벨, 및 버튼 사이의 삼각형의 특성에 대해, 하나의 텍스트 필드, 그 왼쪽에 있는 라벨, 및 버튼 사이의 삼각형의 특성(예컨대, 꼭지점 좌표)을 분석함으로써, 두 텍스트 필드를 고유하게 구별하는 것이 가능하다. 이 고유한 식별은, 워크플로우를 실행시키는 로봇이 후속적으로 두 텍스트 필드 다를 올바르게 식별하고 적절한 각각의 정보가 텍스트 필드에 입력되게 한다.
도 9a 내지 도 9c는 그러한 예를 도시한다. 창(900)은 중복된 라벨 및 텍스트 필드를 갖는 양식을 포함한다. 라벨은 OCR을 사용해 인식될 수 있고 텍스트 필드는 CV 모델을 사용해 인식될 수 있다. 이 경우, 창(900)은 이름(First Name) 텍스트 필드(910, 920) 및 이름 라벨(912, 922)을 포함한다.
도 9b에서 보이는 바와 같이, 예컨대, 텍스트 필드 왼쪽에 있는 "이름" 라벨은, 이름 텍스트 필드(910)와 이름 텍스트 필드(920)를 고유하게 구별하는 데 충분하지 않다. 예를 들어, 사용자가 이름 텍스트 필드(910)를 타겟으로서 식별하기 위해 이름 라벨(912)을 앵커로서 선택할 때, 시스템은 이것이 이름 텍스트 필드(920)도 식별하리라는 것을 인식한다. 따라서 시스템은, 앵커로서의 이름 라벨(912)만으로는 효과가 없으리라는 것을 사용자에게 알리기 위해 이름 텍스트 필드(920) 및 이름 라벨(922)에 음영을 표시한다. 따라서 또 다른 앵커가 요구된다는 것을 인식하여, 사용자는 배송(Shipping) 라벨(914)을 제2 앵커로서 선택한다. 시스템은, 이것이 이 양식 내에서 이름 텍스트 필드(910)를 고유하게 식별하도록 한다는 것을 인식한다.
각 그래픽 컴포넌트의 상대적 위치는 이미지 사이에서 다소 변경될 수 있다는 점에도 유념해야 한다(예컨대, 스캐닝된 영수증의 경우를 고려할 수 있음). 그러나, 각 형상 관계(이 경우에는, 타겟(910) 및 각 앵커(912, 914)에 대한 창(900) 내의 좌표, 그리고 그 모서리 사이의 선분이지만, 본 발명의 범위로부터 벗어나지 않으면서 임의의 원하는 위치가 사용될 수 있음)를 정의하고 세그먼트 길이 및 각도를 확인함으로써, 어느 텍스트 필드가 어느 것인지 결정될 수 있다. 여기서는 타겟(910)으로부터 각 앵커(912, 914)까지의 선분이 사용되지만, 본 발명의 범위로부터 벗어나지 않으면서 임의의 원하는 수의 앵커 및 임의의 원하는 형상이 사용될 수 있다. 실제로, 본 발명의 범위로부터 벗어나지 않으면서 임의의 기하학적 형상(예컨대, 삼각형, 직사각형 등) 또는 비기하학적 형상(예컨대, 도시된 바와 같은, 닫히지 않은 선분 기반 구조)이 사용될 수 있다.
일부 실시예에서, 다중 앵커 매칭 알고리즘에 의해 정의되는 형상의 각도 및 세그먼트 길이는, UI 내의 비례, DPI, 색상 변동, 글씨체, 비디오 프레임 레이트, 섀도잉 등의 변경을 수용하기 위해 허용오차 내에서 탄성적일 수 있다. 일부 실시예에서 탄성은 VM으로부터의 비디오 스트림 또는 이미지에 대해 특히 이로울 수 있다. 그러나, 특정 실시예에서, 알고리즘은 상대적으로 또는 완전히 비탄성적일 수 있으며, 전자의 경우에는 제한된 허용오차를 사용하고 후자의 경우에는 허용오차를 사용하지 않는다. 이는 각각 가까운 매치 또는 완전한 매치를 찾는 것을 보조할 수 있다.
일부 실시예에서, Google® Cloud OCR, Microsoft® OCR, Tesseract® OCR 등과 같은 OCR 엔진 내의 부정확성 또는 오류에 대해 보상하기 위해 텍스트 퍼지 매칭 로직이 사용될 수 있다. 예로서, 텍스트 퍼지 매칭을 사용하면, "NAM" 또는 "NME"를 검출하는 것은, "NAME"과 논리적으로 연관되거나 매칭될 수 있다.
본 명세서에서 주어지는 예에서, 앵커와 연관된 상대적인 거리에 대한 문턱치 설정(thresholding)과 같은, 문턱치 설정을 사용하는 기하학적 매칭이 UI의 RPA를 위해 이용될 수 있다. 예로서, UI의 이미지 내의 각 요소는 신뢰 수준(confidence level)과 관련될 수 있다. 문턱치 미만의 요소의 가능성 있는 매치는, 매칭에 대해 폐기될 수 있다. 비제한적인 예로, CI가 60% 미만인 검출된 요소는 폐기될 수 있다.
일부 실시예에서, 다수의 앵커 및 타겟에 의해 정의되는 기하학적 형상의 적어도 일부가, 기하학적 문턱치 설정에 대한 더 작은 허용오차를 가지고 수평 및/또는 수직으로 스내핑될 수 있다. 다른 경우에 문턱치 설정은 전술한 바와 같이, 그러나 더 엄격한 허용오차를 가지고, 실행될 수 있다. 이는, 그래픽 컴포넌트의 서로에 대한 상대적 위치가 고정되어 있을 가능성이 높은 경우에 행해질 수 있다.
특정 실시예에서, 각 그래픽 요소에 대해 CV 모델로부터 확률 목록이 리턴될 수 있다. 요소가 오식별될 때, 다른 요소는 결정을 내리기 위한 앵커로서 사용될 수 있다. 예를 들어, 가장 확률이 높은 매치로서, 라디오 버튼이 체크박스로서 오식별된 경우를 고려할 수 있다. 예컨대, 도 10의 스크린샷(1000) 및 선택기 창(1010)을 참조한다. 두 번째로 또는 세 번째로 가장 가능성이 높은 매치가 실제 매치인 경우가 되는 경향이 있다. 근처의 라디오 버튼과 같은 또 다른 앵커의 추가는, 주어진 컴포넌트가 확률 목록으로부터의 어느 요소인지 식별하도록 돕는다.
CV 모델이 도로 가운데에 있는 객체가 자전거일 가능성이 가장 높은 것으로 식별하는 또 다른 예를 고려할 수 있다. 그러나, 객체는 실제로는 드론이며, 자전거는 확률 목록 상에서 더 아래에 있다. "앵커"로서의 자전거 운전자를 갖는 것은, CV 모델이 객체를 자전거로서 올바르게 식별하도록 할 수 있다.
도 11은, 본 발명의 실시예에 따른, CV 모델을 리트레이닝시키기 위한 프로세스(1100)를 도시하는 흐름도이다. 프로세스(1100)는, 단계(1105)에서 이미지 내의 그래픽 컴포넌트를 식별하기 위해 그래픽 컴포넌트를 포함하는 이미지에 대해 CV 모델 및 OCR을 실행시키는 단계로 시작된다. 일부 실시예에서, 이미지는 가상 머신(VM)으로부터의 이미지이다. 단계(1110)에서 디자이너 애플리케이션은 그 후 CV 모델 및 OCR을 실행시키는 단계로부터 그래픽 컴포넌트 및 텍스트의 식별을 수신한다. 단계(1115)에서 디자이너는, CV 모델에 의해 식별되었던, 상기 식별된 그래픽 컴포넌트와 함께 이미지를 시각 디스플레이 상에 디스플레이한다. 단계(1120)에서 디자이너는 그 후 이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 수신한다. 단계(1125)에서, 이 선택에 기초하여, 로봇은, 선택을 포함하는 이미지의 영역의 대표 데이터를 결정하고, 단계(1130)에서 대안적인 이미지 프로세싱 로직(예컨대, 이미지 매칭 로직)과 함께 사용될 이미지를 워크플로우 내에 임베딩한다. 단계(1135)에서 대표 데이터 및 이미지는 그 후 이미지 데이터베이스에 송신된다.
일부 실시예에서, 대표 정보는, 영역을 갖는 형상을 정의하는 좌표, 선분, 또는 둘 다를 포함한다. 특정 실시예에서, 디자이너가 실행되고 있는 컴퓨팅 시스템의 사용자는 오식별되거나 미식별된 그래픽 컴포넌트를 수동으로 선택하고, 디자이너는 대표 데이터 및 이미지가 CV 모델의 리트레이닝을 위해 제출된다는 표시를 사용자에게 제공하지 않는다. 일부 실시예에서, CV 모델은, 타겟 그래픽 컴포넌트의 유형을 결정하기 위해 이미지 내의 타겟 그래픽 컴포넌트 및 적어도 2개의 앵커 그래픽 컴포넌트에 의해 정의되는 형상 특성을 사용하는 다중 앵커 매칭 알고리즘을 사용한다. 특정 실시예에서, 타겟 그래픽 컴포넌트 및 각 앵커 그래픽 컴포넌트에 대한 좌표 세트가 형상의 엔드포인트로서 사용되고 기하학적 형상 내의 선분 및 각도를 정의하기 위해 사용되며, 비율, DPI, 색상 변동, 글씨체, 비디오 프레임 레이트, 섀도잉, 또는 이들의 조합의 변경을 수용하기 위해 기하학적 형상의 선분의 각도 및 길이는 허용오차 내에서 탄성적이다.
이미지 데이터베이스에 의한 수신 후, 단계(1140)에서 이미지는 검토자 컴퓨팅 시스템에 송신된다. 검토자 컴퓨팅 시스템을 동작시키는 검토자는(또는 검토자 컴퓨팅 시스템 자체가 자동으로) 이미지에 대해 CV 모델을 실행시키거나 CV 모델이 실행되게 한다. 단계(1145)에서 검토자가 오류가 존재한다고 믿지 않는다면, 프로세스는 종료되고, 일부 실시예에서 이미지는 이미지 데이터베이스로부터 삭제될 수 있다. 그러나, 단계(1145)에서 검토자가 오류를 확인한다면, 단계(1150)에서, 이미지 및 오식별되거나 미식별된 컴포넌트에 대한 올바른 라벨이 리트레이닝을 위해 ML 시스템에 전송된다. ML 시스템이 CV 모델을 리트레이닝시킨 후, 리트레이닝된 CV 모델이, 예컨대, CV 서버 또는 사용자 컴퓨팅 시스템에 의해 수신되고, 리트레이닝된 CV 모델이 이전의 CV 모델 대신 사용된다.
도 12는, 본 발명의 실시예에 따른, CV 모델을 리트레이닝시키도록 구성된 컴퓨팅 시스템(1200)을 도시하는 아키텍처 다이어그램이다. 일부 실시예에서, 컴퓨팅 시스템(1200)은 도 1 내지 도 5b의 컴퓨팅 시스템 중 하나 이상일 수 있다. 컴퓨팅 시스템(1200)은 정보의 통신을 위한 버스(1205) 또는 다른 통신 메커니즘, 및 정보의 프로세싱을 위해 버스(1205)에 커플링된 프로세서(1210)를 포함한다. 프로세서(1210)는 CPU(Central Processing Unit), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), GPU(Graphics Processing Unit), 이들의 다수의 인스턴스, 및/또는 이들의 임의의 조합을 비롯한 임의의 유형의 범용 프로세서 또는 특정 목적의 프로세서일 수 있다. 프로세서(1210)는 또한 다수의 프로세싱 코어를 가질 수 있으며, 코어 중 적어도 일부는, 특정한 기능을 수행하도록 구성될 수 있다. 일부 실시예에서 다중 병렬 프로세싱이 사용될 수 있다. 특정 실시예에서, 프로세서(1210) 중 적어도 하나는, 생물학적 뉴런을 모방하는 프로세싱 요소를 포함하는 뉴로모픽 회로(neuromorphic circuit)일 수 있다. 일부 실시예에서, 뉴로모픽 회로는 폰 노이만 컴퓨팅 아키텍처의 통상적인 컴포넌트를 요구하지 않을 수 있다.
컴퓨팅 시스템(1200)은, 프로세서(1210)에 의해 실행될 명령어 및 정보를 저장하기 위한 메모리(1215)를 더 포함한다. 메모리(1215)는 RAM(Random Access Memory), ROM(Read Only Memory), 플래시 메모리, 캐시, 자기 또는 광학 디스크와 같은 정적 저장장치, 또는 임의의 다른 유형의 비일시적 컴퓨터 판독가능 매체나 이들의 조합의 임의의 조합을 포함할 수 있다. 비일시적 컴퓨터 판독가능 매체는, 프로세서(1210)에 의해 액세스될 수 있는 임의의 사용가능한 매체일 수 있고, 휘발성 매체, 비휘발성 매체, 또는 둘 다를 포함할 수 있다. 매체는 또한 탈착식, 비탈착식, 또는 둘 다일 수 있다.
또한, 무선 및/또는 유선 연결을 통해 통신 네트워크에 대한 액세스를 제공하기 위해 컴퓨팅 시스템(1200)은 송수신기와 같은 통신 디바이스(1220)를 포함한다. 일부 실시예에서, 통신 디바이스(1220)는 본 발명의 범위로부터 벗어나지 않으면서 FDMA(Frequency Division Multiple Access), SC-FDMA(Single Carrier FDMA), TDMA(Time Division Multiple Access), CDMA(Code Division Multiple Access), OFDM(Orthogonal Frequency Division Multiplexing), OFDMA(Orthogonal Frequency Division Multiple Access), GSM(Global System for Mobile communications), GPRS(General Packet Radio Service), UMTS(Universal Mobile Telecommunications System), cdma2000, W-CDMA(Wideband CDMA), HSDPA(High-Speed Downlink Packet Access), HSUPA(High-Speed Uplink Packet Access), HSPA(High-Speed Packet Access), LTE(Long Term Evolution), LTE-A(LTE Advanced), 802.11x, Wi-Fi, Zigbee, UWB(Ultra-WideBand), 802.16x, 802.15, HnB(Home Node-B), Bluetooth, RFID(Radio Frequency Identification), IrDA(Infrared Data Association), NFC(Near-Field Communications), 5세대(5G), NR(New Radio), 이들의 임의의 조합, 및/또는 임의의 다른 현존하거나 미래에 구현될 통신 표준 및/또는 프로토콜을 사용하도록 구성될 수 있다. 일부 실시예에서, 통신 디바이스(1220)는, 본 발명의 범위로부터 벗어나지 않으면서, 단일형, 어레이형, 위상형, 스위칭형, 빔포밍형, 빔스티어링형, 이들의 조합, 및/또는 임의의 다른 안테나 구성인 하나 이상의 안테나를 포함할 수 있다.
프로세서(1210)는 또한, 버스(1205)를 통해, 플라즈마 디스플레이, LCD(Liquid Crystal Display), LED(Light Emitting Diode) 디스플레이, FED(Field Emission Display), OLED(Organic Light Emitting Diode) 디스플레이, 플렉서블 OLED 디스플레이, 플렉서블 기판 디스플레이, 프로젝션 디스플레이, 4K 디스플레이, 고선명 디스플레이, Retina® 디스플레이, IPS(In-Plane Switching) 디스플레이, 또는 사용자에게 정보를 디스플레이하기 위한 임의의 다른 적합한 디스플레이와 같은 디스플레이(1225)에 커플링된다. 디스플레이(1225)는, 저항, 정전용량, 표면 탄성파(SAW, surface-acoustic wave) 정전용량, 적외선, 광학 이미징, 분산 신호 기술(dispersive signal technology), 음향 펄스 인식(acoustic pulse recognition), 불완전 내부 전반사(frustrated total internal reflection) 등을 사용하는 터치(햅틱) 디스플레이, 3차원(3D) 터치 디스플레이, 다중 입력 터치 디스플레이, 다중 터치 디스플레이 등으로서 구성될 수 있다. 본 발명의 범위로부터 벗어나지 않으면서 임의의 적합한 디스플레이 디바이스 및 햅틱 I/O가 사용될 수 있다.
사용자가 컴퓨팅 시스템과 인터페이싱할 수 있도록 하기 위해 키보드(1230), 그리고 컴퓨터 마우스, 터치패드 등과 같은 커서 제어 디바이스(1235)가 또한 버스(1205)에 커플링된다. 그러나, 특정 실시예에서, 물리적 키보드 및 마우스가 존재하지 않을 수 있고, 사용자는 디스플레이(1225) 및/또는 터치패드(도시되지 않음)만을 통해 디바이스와 상호작용할 수 있다. 설계 선택 사항으로서, 임의의 유형 및 조합의 입력 디바이스가 사용될 수 있다. 특정 실시예에서, 물리적 입력 디바이스 및/또는 디스플레이가 존재하지 않는다. 예를 들어, 사용자는, 컴퓨팅 시스템(1200)과 통신하는 또 다른 컴퓨팅 시스템을 통해 컴퓨팅 시스템(1200)과 원격으로 상호작용할 수 있거나, 컴퓨팅 시스템(1200)은 자율적으로 동작할 수 있다.
메모리(1215)는, 프로세서(1210)에 의해 실행될 때 기능을 제공하는 소프트웨어 모듈을 저장한다. 모듈은 컴퓨팅 시스템(1200)을 위한 운영 체제(1240)를 포함한다. 모듈은, 본 명세서에 설명된 프로세스의 전부 또는 일부나 그 파생형을 수행하도록 구성된 CV 모델 리트레이닝 모듈(1245)을 더 포함한다. 예컨대, 컴퓨팅 시스템(1200)은 클라이언트 컴퓨팅 시스템, 컨덕터 서버, 데이터베이스 서버, 인덱서 서버, OCR 및/또는 CV를 수행하는 컴퓨팅 시스템, 검토자 컴퓨팅 시스템, ML 프로세스의 전부 또는 일부를 수행하는 컴퓨팅 시스템 등일 수 있다. 그러나, GPU가 사용되는 실시예와 같은 특정 실시예에서, CV 모델 리트레이닝 모듈 코드는 해당 컴포넌트 상의 로컬 메모리 내에 저장될 수 있다는 점에 유의해야 한다. 컴퓨팅 시스템(1200)은, 추가적인 기능을 포함하는 하나 이상의 추가적인 기능 모듈(1250)을 포함할 수 있다.
당업자는, "시스템"이 본 발명의 범위로부터 벗어나지 않으면서 서버, 임베디드 컴퓨팅 시스템, 개인용 컴퓨터, 콘솔, PDA(personal digital assistant), 셀룰러 폰, 태블릿 컴퓨팅 디바이스, 양자 컴퓨팅 시스템, 또는 임의의 다른 적합한 컴퓨팅 디바이스, 또는 디바이스들의 조합으로서 실시될 수 있다는 것을 이해할 것이다. 전술한 기능이 "시스템"에 의해 수행되는 것으로서 표현하는 것은, 임의의 방식으로 본 발명의 범위를 제한하도록 의도되지 않으며, 본 발명의 여러 실시예 중 하나의 예를 제공하도록 의도된다. 실제로, 본 명세서에 개시된 방법, 시스템, 및 장치는, 클라우드 컴퓨팅 시스템을 비롯한 컴퓨팅 기술과 모순되지 않는 로컬화된 형태 및 분산된 형태로 구현될 수 있다.
본 명세서에 기술된 시스템 특징 중 일부는, 구현 독립성을 더 특별히 강조하기 위해, 모듈로서 표현되었다는 점에 유의해야 한다. 예컨대, 모듈은, 커스텀 VLSI(very large scale integration) 회로 또는 게이트 어레이, 로직 칩과 같은 상용 반도체, 트랜지스터, 또는 다른 개별 컴포넌트를 포함하는 하드웨어 회로로서 구현될 수 있다. 모듈은 또한, 필드 프로그래밍가능 게이트 어레이, 프로그래밍가능 어레이 로직, 프로그래밍가능 로직 디바이스, 그래픽 프로세싱 유닛 등과 같은 프로그래밍가능 하드웨어 디바이스로 구현될 수 있다.
모듈은 또한 다양한 유형의 프로세서에 의한 실행을 위해 적어도 부분적으로 소프트웨어로 구현될 수 있다. 예를 들어, 실행가능 코드의 식별되는 단위는, 예를 들어, 객체, 프로시저, 또는 함수로서 조직화될 수 있는 컴퓨터 명령어의 하나 이상의 물리적 또는 논리적 블록을 포함할 수 있다. 그럼에도 불구하고, 식별되는 모듈의 실행가능 코드는 물리적으로 함께 위치될 필요는 없지만, 논리적으로 함께 결합될 때 해당 모듈을 포함하고 해당 모듈에 대한 서술된 목적을 달성하는, 상이한 위치에 저장된 서로 다른 명령어를 포함할 수 있다. 또한, 모듈은, 본 발명의 범위로부터 벗어나지 않으면서, 예를 들어, 하드 디스크 드라이브, 플래시 디바이스, RAM, 테이프, 및/또는 데이터를 저장하기 위해 사용되는 임의의 다른 그러한 비일시적 컴퓨터 판독가능 매체일 수 있는 컴퓨터 판독가능 매체 상에 저장될 수 있다.
실제로, 실행가능 코드의 모듈은 단일 명령어 또는 여러 명령어일 수 있고, 여러 상이한 코드 세그먼트에 걸쳐서, 상이한 프로그램 사이에서, 그리고 여러 메모리 디바이스에 걸쳐서 분산될 수도 있다. 유사하게, 동작 데이터가 식별되고 본 명세서에서 모듈 내에 있는 것으로 묘사될 수 있고, 임의의 적합한 형태로 실시되고 임의의 적합한 유형의 데이터 구조 내에서 조직화될 수 있다. 동작 데이터는 단일 데이터 세트로서 수집될 수 있거나, 상이한 저장 디바이스를 비롯한 상이한 위치에 걸쳐서 분산될 수 있고, 적어도 부분적으로 단지 시스템 또는 네트워크 상의 전자 신호로서만 존재할 수 있다.
도 11에서 수행되는 프로세스 단계는, 본 발명의 실시예에 따른, 도 11에 설명된 프로세스의 적어도 일부를 프로세서가 수행하도록 하는 명령어를 인코딩하는 컴퓨터 프로그램에 의해 수행될 수 있다. 컴퓨터 프로그램은 비일시적 컴퓨터 판독가능 매체 상에 수록될 수 있다. 컴퓨터 판독가능 매체는 하드 디스크 드라이브, 플래시 디바이스, RAM, 테이프, 및/또는 임의의 다른 그러한 매체 또는 데이터를 저장하기 위해 사용되는 매체의 조합일 수 있지만 이들로 제한되지 않는다. 컴퓨터 프로그램은, 도 11에 설명된 프로세스 단계의 전부 또는 일부를 구현하도록 프로세서(1200)를 제어하기 위한 인코딩된 명령어를 포함할 수 있으며, 그러한 명령어는 또한 컴퓨터 판독가능 매체 상에 저장될 수 있다.
컴퓨터 프로그램은 하드웨어, 소프트웨어, 또는 하이브리드 구현예로 구현될 수 있다. 컴퓨터 프로그램은, 서로 동작가능하게 통신하는 모듈로 구성될 수 있으며, 그러한 모듈은, 정보 또는 명령어를 디스플레이에 전달하도록 설계된다. 컴퓨터 프로그램은, 범용 컴퓨터, ASIC, 또는 임의의 다른 적합한 디바이스 상에서 동작하도록 구성될 수 있다.
본 발명의 다양한 실시예의 컴포넌트는, 본 명세서의 도면에서 일반적으로 설명 및 도시된 바와 같이, 매우 다양한 상이한 구성으로 배열 및 설계될 수 있다는 것이 수월하게 이해될 것이다. 따라서, 첨부 도면에 표현된 바와 같은 본 발명의 실시예의 상세한 설명은, 청구되는 바와 같은 본 발명의 범위를 제한하도록 의도되지 않으며, 단지 본 발명의 선택된 실시예를 표현할 뿐이다.
또한, 본 명세서 전반에 걸쳐 설명된 본 발명의 특징, 구조, 또는 특성은 하나 이상의 실시예에서 임의의 적합한 방식으로 조합될 수 있다. 예컨대, 본 명세서에 전반에 걸친 "특정 실시예", "일부 실시예"에 대한 언급, 또는 유사한 표현은, 실시예와 연결하여 설명된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전반에 걸친 "특정 실시예에서", "일부 실시예에서", "다른 실시예에서"라는 어구, 또는 유사한 표현의 등장은, 필연적으로 모두가 동일한 실시예 그룹을 지칭하는 것은 아니며, 설명된 특징, 구조, 또는 특성은 하나 이상의 실시예에서 임의의 적합한 방식으로 조합될 수 있다.
본 명세서 전반에 걸친 특징, 장점에 대한 언급, 또는 유사한 표현은, 본 발명으로 실현될 수 있는 특징 및 장점 전부가 본 발명의 임의의 단일 실시예 내에 있어야 하거나 본 발명의 임의의 단일 실시예 내에 있다는 것을 의미하지 않는다는 점에 유의해야 한다. 오히려, 특징 및 장점을 지칭하는 표현은, 실시예와 연결하여 설명된 특정한 특징, 장점, 또는 특성이 본 발명의 적어도 하나의 실시예 내에 포함된다는 것을 의미하도록 이해된다. 따라서, 본 명세서 전반에 걸친 특징 및 장점에 대한 논의, 및 유사한 표현은, 동일한 실시예를 지칭할 수 있지만, 필연적으로 그러한 것은 아니다.
또한, 본 발명의 설명된 특징, 장점, 및 특성은 하나 이상의 실시예에서 임의의 적합한 방식으로 조합될 수 있다. 당업자는, 특정 실시예의 구체적인 특징 또는 장점 중 하나 이상 없이도, 본 발명이 실시될 수 있다는 것을 인식할 것이다. 다른 경우에, 특정 실시예에서, 본 발명의 모든 실시예 내에 존재하지는 않을 수 있는 추가적인 특징 및 장점이 인식될 수 있다.
당업자는, 전술한 바와 같은 본 발명은 개시된 것과는 상이한 순서의 단계, 및/또는 상이한 구성의 하드웨어 요소로 실시될 수 있다는 것을 수월하게 이해할 것이다. 따라서, 본 발명은 이들 바람직한 실시예에 기초하여 설명되었지만, 본 발명의 사상 및 범위 내에서 유지되면서, 특정한 수정예, 변형예, 및 대안적인 구성이 명백하리라는 것이 당업자에게 명백할 것이다. 따라서, 본 발명의 범위를 결정하기 위해, 첨부되는 청구범위를 참조해야 한다.

Claims (20)

  1. 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램은, 적어도 하나의 프로세서로 하여금,
    컴퓨터 비전(CV, Computer Vision) 모델의 실행으로부터 이미지 내의 그래픽 컴포넌트의 식별(identification)을 수신하게 하고;
    상기 CV 모델에 의해 식별되었던, 상기 식별된 그래픽 컴포넌트와 함께 상기 이미지를 시각 디스플레이 상에 디스플레이하게 하고;
    상기 이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 수신하게 하고;
    상기 선택을 포함하는 상기 이미지의 영역의 대표 데이터를 결정하게 하고;
    상기 대표 데이터 및 상기 이미지를 이미지 데이터베이스에 송신하게 하도록 구성된 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  2. 제1항에 있어서,
    상기 컴퓨터 프로그램은 또한, 상기 적어도 하나의 프로세서로 하여금,
    광학 문자 인식(OCR, optical character recognition) 애플리케이션에 의해 제공되는 상기 이미지로부터의 텍스트 정보를 수신하게 하도록 구성된 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  3. 제1항에 있어서,
    상기 컴퓨터 프로그램은 또한, 상기 적어도 하나의 프로세서로 하여금,
    상기 CV 모델이 리트레이닝(retraining)되는 동안, 상기 오식별되거나 미식별된 그래픽 컴포넌트를 식별하기 위해 상기 이미지 및 대안적인 이미지 프로세싱 로직을 워크플로우(workflow) 내에 임베딩하게 하도록 구성된 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  4. 제3항에 있어서,
    상기 대안적인 이미지 프로세싱 로직은 이미지 매칭 알고리즘을 포함하는 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  5. 제1항에 있어서,
    상기 컴퓨터 프로그램은 또한, 상기 적어도 하나의 프로세서로 하여금,
    상기 선택을 포함하는 상기 이미지의 영역의 대표 데이터를 결정하게 하고,
    사용자에게 표시를 제공하지 않으면서 상기 이미지 및 상기 선택을 송신하게 하도록 구성된 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  6. 제1항에 있어서,
    상기 이미지 데이터베이스는 디자인 타임(design time) 이미지로서의 스크린샷, 보고된 문제, 및 이미지 매칭 영역 선택을 저장한 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  7. 제1항에 있어서,
    상기 이미지는 가상 머신(VM, virtual machine)으로부터 유래된 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  8. 제1항에 있어서,
    상기 대표 데이터는, 영역을 갖는 형상을 정의하는 좌표, 선분, 또는 둘 다를 포함한 것인, 컴퓨터 판독가능 비일시적 매체 상에 수록된 컴퓨터 프로그램.
  9. 컴퓨팅 시스템에 있어서,
    기계 판독가능 컴퓨터 프로그램 명령어를 저장한 메모리; 및
    상기 컴퓨터 프로그램 명령어를 실행시키도록 구성된 적어도 하나의 프로세서
    를 포함하며,
    상기 명령어는, 상기 적어도 하나의 프로세서로 하여금,
    이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 수신하게 하고,
    상기 선택을 포함하는 상기 이미지의 영역의 대표 데이터를 결정하게 하고,
    컴퓨터 비전(CV) 모델의 리트레이닝을 위해 상기 대표 데이터 및 상기 이미지를 이미지 데이터베이스에 송신하게 하고,
    리트레이닝된 CV 모델의 실행으로부터 상기 이미지 내의 그래픽 컴포넌트의 식별을 수신하게 하고,
    상기 리트레이닝된 CV 모델에 의해 식별되었던, 상기 식별된 그래픽 컴포넌트와 함께 상기 이미지를 시각 디스플레이 상에 디스플레이하게 하도록 구성된 것인, 컴퓨팅 시스템.
  10. 제9항에 있어서,
    상기 명령어는 또한, 상기 적어도 하나의 프로세서로 하여금,
    상기 CV 모델이 리트레이닝되는 동안, 상기 오식별되거나 미식별된 그래픽 컴포넌트를 식별하기 위해 상기 이미지 및 대안적인 이미지 프로세싱 로직을 워크플로우 내에 임베딩하게 하도록 구성된 것인, 컴퓨팅 시스템.
  11. 제10항에 있어서,
    상기 대안적인 이미지 프로세싱 로직은 이미지 매칭 알고리즘을 포함한 것인, 컴퓨팅 시스템.
  12. 제9항에 있어서,
    상기 명령어는, 상기 적어도 하나의 프로세서로 하여금, 상기 선택을 포함하는 상기 이미지의 영역의 대표 데이터를 결정하게 하고, 사용자에 대한 표시를 제공하지 않으면서 상기 이미지 및 상기 선택을 송신하게 하도록 구성된 것인, 컴퓨팅 시스템.
  13. 제9항에 있어서,
    상기 이미지 데이터베이스는 디자인 타임 이미지로서의 스크린샷, 보고된 문제, 및 이미지 매칭 영역 선택을 저장한 것인, 컴퓨팅 시스템.
  14. 제9항에 있어서,
    상기 대표 데이터는, 영역을 갖는 형상을 정의하는 좌표, 선분, 또는 둘 다를 포함한 것인, 컴퓨팅 시스템.
  15. 컴퓨터 구현 방법에 있어서,
    컴퓨팅 시스템에 의해, 이미지 내의 오식별되거나 미식별된 그래픽 컴포넌트의 선택을 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 선택을 포함하는 상기 이미지의 영역의 대표 데이터를 결정하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 대표 데이터 및 상기 이미지를 이미지 데이터베이스에 송신하는 단계; 및
    CV 모델이 리트레이닝되는 동안, 상기 오식별되거나 미식별된 그래픽 컴포넌트를 식별하기 위해, 상기 컴퓨팅 시스템에 의해, 상기 이미지 및 대안적인 이미지 프로세싱 로직을 워크플로우 내에 임베딩하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  16. 제15항에 있어서,
    상기 컴퓨팅 시스템에 의해, 리트레이닝된 CV 모델의 실행으로부터 상기 이미지 내의 그래픽 컴포넌트의 식별을 수신하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 상기 리트레이닝된 CV 모델에 의해 식별되었던, 상기 식별된 그래픽 컴포넌트와 함께 상기 이미지를 시각 디스플레이 상에 디스플레이하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  17. 제15항에 있어서,
    상기 대안적인 이미지 프로세싱 로직은 이미지 매칭 알고리즘을 포함한 것인, 컴퓨터 구현 방법.
  18. 제15항에 있어서,
    상기 컴퓨팅 시스템은, 상기 선택을 포함하는 상기 이미지의 영역의 대표 데이터를 결정하고, 사용자에 대한 표시를 제공하지 않으면서 상기 이미지 및 상기 선택을 송신하도록 구성된 것인, 컴퓨터 구현 방법.
  19. 제15항에 있어서,
    상기 이미지 데이터베이스는 디자인 타임 이미지로서의 스크린샷, 보고된 문제, 및 이미지 매칭 영역 선택을 저장한 것인, 컴퓨터 구현 방법.
  20. 제15항에 있어서,
    상기 대표 데이터는, 영역을 갖는 형상을 정의하는 좌표, 선분, 또는 둘 다를 포함한 것인, 컴퓨터 구현 방법.
KR1020200088333A 2019-07-19 2020-07-16 로봇 프로세스 자동화를 위한 컴퓨터 비전 모델의 리트레이닝 KR102580080B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/517,225 2019-07-19
US16/517,225 US11487973B2 (en) 2019-07-19 2019-07-19 Retraining a computer vision model for robotic process automation

Publications (2)

Publication Number Publication Date
KR20210010388A true KR20210010388A (ko) 2021-01-27
KR102580080B1 KR102580080B1 (ko) 2023-09-18

Family

ID=71670084

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200088333A KR102580080B1 (ko) 2019-07-19 2020-07-16 로봇 프로세스 자동화를 위한 컴퓨터 비전 모델의 리트레이닝

Country Status (5)

Country Link
US (2) US11487973B2 (ko)
EP (1) EP3767528A1 (ko)
JP (1) JP7034217B2 (ko)
KR (1) KR102580080B1 (ko)
CN (1) CN112241581A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102363774B1 (ko) * 2020-11-20 2022-02-16 유아이패스, 인크. 사용자 인터페이스 자동화에서의 자동 앵커 결정 및 타겟 그래픽 요소 식별
US11307876B1 (en) 2020-11-20 2022-04-19 UiPath, Inc. Automated remedial action to expose a missing target and/or anchor(s) for user interface automation

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086751B2 (en) 2016-03-16 2021-08-10 Asg Technologies Group, Inc. Intelligent metadata management and data lineage tracing
US11847040B2 (en) 2016-03-16 2023-12-19 Asg Technologies Group, Inc. Systems and methods for detecting data alteration from source to target
US11057500B2 (en) 2017-11-20 2021-07-06 Asg Technologies Group, Inc. Publication of applications using server-side virtual screen change capture
US11611633B2 (en) 2017-12-29 2023-03-21 Asg Technologies Group, Inc. Systems and methods for platform-independent application publishing to a front-end interface
US10812611B2 (en) 2017-12-29 2020-10-20 Asg Technologies Group, Inc. Platform-independent application publishing to a personalized front-end interface by encapsulating published content into a container
US10877740B2 (en) 2017-12-29 2020-12-29 Asg Technologies Group, Inc. Dynamically deploying a component in an application
US10866997B2 (en) * 2018-03-26 2020-12-15 Kapow Technologies, Inc. Determining functional and descriptive elements of application images for intelligent screen automation
US11762634B2 (en) 2019-06-28 2023-09-19 Asg Technologies Group, Inc. Systems and methods for seamlessly integrating multiple products by using a common visual modeler
US11269660B2 (en) 2019-10-18 2022-03-08 Asg Technologies Group, Inc. Methods and systems for integrated development environment editor support with a single code base
US11055067B2 (en) * 2019-10-18 2021-07-06 Asg Technologies Group, Inc. Unified digital automation platform
US11941137B2 (en) 2019-10-18 2024-03-26 Asg Technologies Group, Inc. Use of multi-faceted trust scores for decision making, action triggering, and data analysis and interpretation
US11886397B2 (en) 2019-10-18 2024-01-30 Asg Technologies Group, Inc. Multi-faceted trust system
US11693982B2 (en) 2019-10-18 2023-07-04 Asg Technologies Group, Inc. Systems for secure enterprise-wide fine-grained role-based access control of organizational assets
USD942472S1 (en) * 2020-09-08 2022-02-01 UiPath, Inc. Display screen with a graphical user interface
US11232170B1 (en) 2020-09-08 2022-01-25 UiPath, Inc. Application-specific graphical element detection
US11507259B2 (en) * 2020-09-08 2022-11-22 UiPath, Inc. Graphical element detection using a combined series and delayed parallel execution unified target technique, a default graphical element detection technique, or both
US11385777B2 (en) * 2020-09-14 2022-07-12 UiPath, Inc. User interface (UI) mapper for robotic process automation
WO2022081476A1 (en) 2020-10-13 2022-04-21 ASG Technologies Group, Inc. dba ASG Technologies Geolocation-based policy rules
US11410316B1 (en) * 2021-01-27 2022-08-09 UiPath, Inc. System and computer-implemented method for validation of label data
CN112968736B (zh) * 2021-02-02 2022-08-02 浙江大学 基于自监督深度学习的端到端ofdm水下高速无线光通信系统及方法
CN113486858B (zh) * 2021-08-03 2024-01-23 济南博观智能科技有限公司 一种人脸识别模型训练方法、装置、电子设备及存储介质
US20230108015A1 (en) * 2021-10-05 2023-04-06 UiPath, Inc. Semantic matching between a source screen or source data and a target screen using semantic artificial intelligence
CN114529782A (zh) * 2022-01-12 2022-05-24 南方电网深圳数字电网研究院有限公司 基于电网的模型训练方法及装置
CN114926830B (zh) * 2022-05-30 2023-09-12 南京数睿数据科技有限公司 屏幕图像识别方法、装置、设备和计算机可读介质
CN115297025A (zh) * 2022-07-26 2022-11-04 来也科技(北京)有限公司 基于rpa和ai的ia机器人监控方法及装置
CN116168405B (zh) * 2023-04-23 2023-08-01 杭州实在智能科技有限公司 通用型rpa复选框操作组件的构建方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011059810A (ja) * 2009-09-07 2011-03-24 Nippon Soken Inc 画像認識システム
US20180370029A1 (en) * 2017-06-23 2018-12-27 Accenture Global Solutions Limited Self-learning robotic process automation
JP2019008796A (ja) * 2017-06-23 2019-01-17 ウーバー テクノロジーズ,インコーポレイテッド 自律可能車両用衝突回避システム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0561845A (ja) * 1991-08-07 1993-03-12 Fujitsu Ltd 適応型データ処理装置の自己学習処理方式
JPH0561845U (ja) 1992-01-24 1993-08-13 日本電気ホームエレクトロニクス株式会社 ディスク装置
JPH11252450A (ja) 1998-03-06 1999-09-17 Canon Inc 画像処理装置及びコンピュータ読み取り可能な記憶媒体
US20090063946A1 (en) 2007-08-29 2009-03-05 International Business Machines Corporation Anchor store for transmitting multiple dynamic anchors
US20100138775A1 (en) 2008-11-28 2010-06-03 Sharon Kohen Method, device and system, for extracting dynamic content from a running computer application
US8918739B2 (en) 2009-08-24 2014-12-23 Kryon Systems Ltd. Display-independent recognition of graphical user interface control
US8943468B2 (en) 2012-08-29 2015-01-27 Kamesh Sivaraman Balasubramanian Wireframe recognition and analysis engine
WO2014075174A1 (en) * 2012-11-19 2014-05-22 Imds America Inc. Method and system for the spotting of arbitrary words in handwritten documents
WO2016004075A1 (en) 2014-06-30 2016-01-07 Amazon Technologies, Inc. Interactive interfaces for machine learning model evaluations
AU2014277851A1 (en) 2014-12-22 2016-07-07 Canon Kabushiki Kaisha Detecting a gap between text columns from text line fragments
EP3206170A1 (en) 2016-02-09 2017-08-16 Wipro Limited System and methods for creating on-demand robotic process automation
US10776926B2 (en) * 2016-03-17 2020-09-15 Avigilon Corporation System and method for training object classifier by machine learning
US20180157386A1 (en) 2016-12-05 2018-06-07 Jiawen Su System and Method for detection, exploration, and interaction of graphic application interface
US20190126463A1 (en) * 2017-10-31 2019-05-02 Bank Of America Corporation Robotic assisted action template generation based on profile
US11194596B2 (en) 2017-11-30 2021-12-07 Lendingclub Corporation Simulating human interface interaction resilient to user interface changes
US20190205363A1 (en) 2018-01-02 2019-07-04 Go Daddy Operating Company, LLC Method for creating html layouts based on visual input
US10878270B1 (en) * 2018-06-26 2020-12-29 Amazon Technologies, Inc. Keypoint-based multi-label word segmentation and localization
US11227176B2 (en) * 2019-05-16 2022-01-18 Bank Of Montreal Deep-learning-based system and process for image recognition

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011059810A (ja) * 2009-09-07 2011-03-24 Nippon Soken Inc 画像認識システム
US20180370029A1 (en) * 2017-06-23 2018-12-27 Accenture Global Solutions Limited Self-learning robotic process automation
JP2019008796A (ja) * 2017-06-23 2019-01-17 ウーバー テクノロジーズ,インコーポレイテッド 自律可能車両用衝突回避システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102363774B1 (ko) * 2020-11-20 2022-02-16 유아이패스, 인크. 사용자 인터페이스 자동화에서의 자동 앵커 결정 및 타겟 그래픽 요소 식별
US11307876B1 (en) 2020-11-20 2022-04-19 UiPath, Inc. Automated remedial action to expose a missing target and/or anchor(s) for user interface automation

Also Published As

Publication number Publication date
US20210019574A1 (en) 2021-01-21
CN112241581A (zh) 2021-01-19
US20230059729A1 (en) 2023-02-23
JP2021018816A (ja) 2021-02-15
JP7034217B2 (ja) 2022-03-11
EP3767528A1 (en) 2021-01-20
US11487973B2 (en) 2022-11-01
KR102580080B1 (ko) 2023-09-18
US11688192B2 (en) 2023-06-27

Similar Documents

Publication Publication Date Title
KR102580080B1 (ko) 로봇 프로세스 자동화를 위한 컴퓨터 비전 모델의 리트레이닝
JP7104107B2 (ja) マルチアンカーを用いたユーザインターフェース(ui)の抽出、認識および機械学習
US11200073B1 (en) Automatic anchor determination and target graphical element identification in user interface automation
US11599775B2 (en) Detecting user interface elements in robotic process automation using convolutional neural networks
KR20220078587A (ko) 인공 지능을 사용한 로봇 프로세스 자동화를 위한 모델 선택 및 체인화
US20230093280A1 (en) Artificial intelligence layer-based process extraction for robotic process automation
US11782733B2 (en) Training an artificial intelligence / machine learning model to recognize applications, screens, and user interface elements using computer vision
KR20220079838A (ko) 로봇 프로세스 자동화의 강화 학습
CN116324831A (zh) 经由人工智能/机器学习的机器人过程自动化异常检测和自我修复
KR102363774B1 (ko) 사용자 인터페이스 자동화에서의 자동 앵커 결정 및 타겟 그래픽 요소 식별
JP2023552666A (ja) アクションセンターを介した人工知能(ai)/機械学習(ml)モデルの補足、ai/mlモデル再訓練ハードウェア制御、およびai/mlモデル設定管理
JP2023523374A (ja) ロボティックプロセスオートメーションのための機械学習モデル再訓練パイプライン
KR102447072B1 (ko) 둘 이상의 그래픽 요소 검출 기법들로부터의 사용자 인터페이스 디스크립터 속성들의 조합을 사용한 그래픽 요소 검출

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant