KR20230173293A - 입력 영상에 대한 ai 연산 처리 방법 및 이를 이용한 카메라 장치 - Google Patents

입력 영상에 대한 ai 연산 처리 방법 및 이를 이용한 카메라 장치 Download PDF

Info

Publication number
KR20230173293A
KR20230173293A KR1020220073872A KR20220073872A KR20230173293A KR 20230173293 A KR20230173293 A KR 20230173293A KR 1020220073872 A KR1020220073872 A KR 1020220073872A KR 20220073872 A KR20220073872 A KR 20220073872A KR 20230173293 A KR20230173293 A KR 20230173293A
Authority
KR
South Korea
Prior art keywords
npu
sources
source
camera device
controller
Prior art date
Application number
KR1020220073872A
Other languages
English (en)
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 한화비전 주식회사
Priority to KR1020220073872A priority Critical patent/KR20230173293A/ko
Priority to US18/092,447 priority patent/US20230409389A1/en
Publication of KR20230173293A publication Critical patent/KR20230173293A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/80Camera processing pipelines; Components thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • H04N21/2223Secondary servers, e.g. proxy server, cable television Head-end being a public access point, e.g. for downloading to or uploading from clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4343Extraction or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/50Constructional details
    • H04N23/54Mounting of pick-up tubes, electronic image sensors, deviation or focusing coils
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/92Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N5/9201Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving the multiplexing of an additional signal and the video signal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Neurology (AREA)
  • Library & Information Science (AREA)
  • Image Processing (AREA)
  • Studio Devices (AREA)

Abstract

카메라 장치는, 피사체로부터 영상을 촬상하는 이미지 센서와, 상기 촬상된 영상에 대한 AI 연산을 요청하고, 상기 요청에 따른 AI 처리 결과를 이용하여 상기 촬상된 영상에 대한 비디오 분석을 수행하는 AI 어플리케이션과, 상기 카메라 장치에 임베드 된 복수의 AI 소스와, 상기 AI 연산 요청에 따라, 상기 복수의 AI 소스의 현재 자원을 모니터링 하고, 상기 복수의 AI 소스의 우선 순위에 따라 상기 복수의 AI 소스 중에서 적어도 일부에 의해 AI 연산을 처리하게 하는 NPU 컨트롤러와, 상기 AI 어플리케이션과 상기 NPU 컨트롤러 사이에서 상기 AI 연산의 요청 및 상기 AI 연산의 처리된 결과를 전달하며, 상기 AI 어플리케이션과 상기 NPU 컨트롤러 사이의 명령어를 호환 가능하도록 변환하는 NPU 드라이버로 이루어진다.

Description

입력 영상에 대한 AI 연산 처리 방법 및 이를 이용한 카메라 장치{Method for processing AI operation on input image and camera device using the same}
본 발명은 입력 영상에 대한 AI 연산 처리에 관한 것으로, 더욱 상세하게는, NPU(neural processing unit)를 장착한 카메라 장치에서 상기 입력 영상에 대한 AI 연산 처리를 효율적으로 수행하는 장치 및 방법에 관한 것이다.
지금 개발된 고도화된 AI 기술 구현에서는 GPU(graphic processing unit)이 많이 사용되었다. GPU의 원래 목적은 컴퓨터 그래픽 처리다. AI용으로 GPU를 쓰는 이유는 그래픽 처리와 AI 연산이 비슷한 방법으로 이뤄지기 때문이다. 다만, GPU의 원래 목적이 AI 연산은 아니기 때문에 비용이나 전력소모 등 비효율적인 부분이 발생한다.
GPU나 FPGA는 성능을 떠나서 가격 면에서부터 단점이 있다. AI 연산을 처리하기에 적합한 성능은 가지지만 AI 연산과 직접 관련성이 없는 다수의 기능을 포함하기 때문에 비싸고 비효율적이다. 따라서, AI 연산 처리만을 위한 전용의 프로세서, 소위 NPU(neural processing unit)의 개발이 요구되고 있다. 상기 NPU는 AI 연산 과정에서 필수적인, 대량의 데이터 전송에 드는 시간이 전체 동작 성능에 장점이 있고, AI 알고리즘에 최적화된 고속 데이터 전송 구조 설계를 갖추고 있다.
이러한 NPU의 기본적인 아키텍쳐는 사실상 제약 없이 거의 모든 어플리케이션에서 응용될 수 있다. 다만, NPU의 제조사에 따라 사용되는 API의 종류나 기능이 상이하여 다양한 NPU 간에 표준화된 데이터 포맷은 존재하지 않는 실정이다.
특히, 입력된 영상에서 객체를 식별하고 이벤트를 추출하여 메타데이터를 생성하는, 소위 감사 카메라에서 사용되는 비디오 분석(VA, video analytics) 기술은 AI 알고리즘을 적용하기에 매우 적합한 환경에 있다. 특히, 최근 들어 방대한 양의 영상이 감시 카메라에 의해 촬상되고 여기에서 특정 객체나 이벤트를 추출하는 것은 AI 학습의 속성과도 일치하는 특징이다.
이와 같이, 감시 카메라에서 다양한 제조사에 의해 SoC(system on chip)의 형태로 NPU가 개발되고 있지만, 이러한 NPU는 필연적으로 상기 NPU에 호환 가능한 소프트웨어가 지원되어야 한다. 따라서, 다양한 제조사에 의해 제조된 다수의 카메라 장치가 사용되거나, 기존의 카메라 장치의 SoC를 변경해야 하는 경우 많은 시간과 비용을 요하게 된다.
따라서, 다양한 NPU의 종류와 상관없이 개방 플랫폼(Open Platform)에서 만들어진 소프트웨어 프로그램 및 하드웨어로 구현된 NPU 컨트롤러를 추가하여 호환성을 제공함으로써, 감시 카메라 내부와 외부에 존재하는 AI 소스들 중에서 실시간으로 가장 적합한 것을 선택하여 입력 영상을 처리하게 하는 표준화된 방식을 개발할 필요가 있다.
일본 특허공개공보 2018-205900호 (2018. 12. 27 공개)
본 발명이 이루고자 하는 기술적 과제는, AI 기반의 비디오 분석을 위해, AI 연산이 가능한 카메라 장치 내부 및 외부의 AI 자원을 효율적으로 활용할 수 있도록, 개방 플랫폼 환경의 인터페이스 및 API를 갖는 카메라 장치를 제공하고자 하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 카메라 장치는, 프로세서와, 상기 프로세서에 의해 실행 가능한 인스트럭션들을 저장하는 메모리를 구비하며, 피사체로부터 영상을 촬상하는 이미지 센서; 상기 촬상된 영상에 대한 AI 연산을 요청하고, 상기 요청에 따른 AI 처리 결과를 이용하여 상기 촬상된 영상에 대한 비디오 분석을 수행하는 AI 어플리케이션; 상기 카메라 장치에 임베드 된 복수의 AI 소스; 상기 AI 연산 요청에 따라, 상기 복수의 AI 소스의 현재 자원을 모니터링 하고, 상기 복수의 AI 소스의 우선 순위에 따라 상기 복수의 AI 소스 중에서 적어도 일부에 의해 AI 연산을 처리하게 하는 NPU 컨트롤러; 및 상기 AI 어플리케이션과 상기 NPU 컨트롤러 사이에서 상기 AI 연산의 요청 및 상기 AI 연산의 처리된 결과를 전달하며, 상기 AI 어플리케이션과 상기 NPU 컨트롤러 사이의 명령어를 호환 가능하도록 변환하는 NPU 드라이버를 포함한다.
상기 카메라 장치는 최상위 응용 계층, 상기 응용 계층 아래에 위치하는 SW 계층 및 상기 SW 계층의 아래에 위치하는 HW 계층으로 이루어지고, 상기 AI 어플리케이션은 상기 응용 계층에 속하고, 상기 NPU 드라이버는 상기 SW 계층에 속하며, 상기 복수의 AI 소스 및 NPU 컨트롤러는 상기 HW 계층에 속한다.
상기 NPU 컨트롤러는, 상기 임베드 된 복수의 AI 소스와 상기 카메라 장치 외부의 AI 소스를 포함한 가용한 AI 소스의 현재 자원을 모니터링 하여, 상기 모니터링되는 현재 자원이 임계치 이상인 AI 소스 중에서 우선 순위가 가장 높은 AI 소스를 선정하고, 상기 선정된 AI 소스에 의해 상기 AI 연산을 처리하게 한다.
상기 NPU 컨트롤러는, 상기 AI 소스를 선정한 후, 상기 선정된 AI 소스가 갖는 현재 자원을 모니터링하여, 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스의 다음 우선 순위를 갖는 AI 소스를 선정한다.
또는, 상기 NPU 컨트롤러는, 상기 AI 소스를 선정한 후, 상기 선정된 AI 소스가 갖는 현재 자원을 모니터링하여, 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스 및 그 다음 우선 순위를 갖는 AI 소스를 함께 선정한다.
상기 임베드 된 복수의 AI 소스는 NPU를 적어도 포함하고, GPU, DSP 및 CPU 중에서 하나 이상을 더 포함하며, 상기 외부의 AI 소스는 분리형 외부 SoC 및 클라우드 서버 중에서 적어도 하나를 포함한다.
상기 가용한 AI 소스 중에서 NPU가 가장 높은 우선 순위를 갖는다.
상기 우선 순위는 NPU, 분리형 외부 SoC, 클라우드 서버, GPU, DSP 및 CPU 순서이다.
상기 NPU가 1그룹에 속하고, 상기 분리형 외부 SoC 및 클라우드 서버가 2그룹에 속하며, 상기 GPU, DSP 및 CPU가 3그룹에 속하고, 상기 우선 순위는 상기 1그룹, 상기 2그룹 및 상기 3그룹 순서이다.
상기 NPU 드라이버는, 상기 복수의 AI 소스를 제어할 수 있는 복수의 API를 상기 NPU 컨트롤러로부터 제공받고, 상기 복수의 API를 상기 복수의 API를 적어도 포함하는 확장 API로 변환하고, 상기 AI 어플리케이션은 상기 확장 API를 이용하여 AI 연산을 요청한다.
상기 복수의 API는 운영 체제의 API와 SDK의 API를 포함한다.
상기 AI 어플리케이션은 AI 학습 모델을 NPU 컨트롤러에 전달하고, 상기 NPU 컨트롤러는 상기 전달된 학습 모델을 상기 선정된 AI 소스에 제공한다.
상기 NPU 컨트롤러는, 상기 선정된 AI 소스에 의한 상기 AI 연산 처리를 위해, 이미지 센서에 의해 촬상된 비디오 및 상기 AI 연산 요청을 상기 선정된 AI 소스에 제공한다.
상기 NPU 컨트롤러는, 상기 촬상된 비디오의 속성을 상기 선정된 AI 소스에서 지원하는 속성으로 가공한 후 상기 AI 소스에 제공하되, 상기 비디오의 속성은 3차원 색공간, 해상도, 프레임율, 비트율, 색 깊이 중에서 적어도 하나를 포함한다.
상기 NPU 컨트롤러는, 상기 선정된 AI 소스로부터 AI 처리 결과를 수신한 후, 상기 AI 처리 결과를 나타내는 데이터 포맷의 호환성을 판단하고, 상기 판단 결과 호환성이 없는 경우에는 데이터 포맷을 가공한 후 패킷화하고, 상기 판단 결과 호환성이 있는 경우에는 데이터 포맷의 가공 없이 패킷화하여 얻어진 데이터 패킷을 상기 NPU 드라이버에 전달한다.
상기 데이터 패킷은 헤더와 페이로드로 구성되고, 상기 헤더는 AI 처리 결과를 갖는 데이터 패킷임을 표시하는 AI 식별자를 포함한다.
상기 페이로드는 비디오 프레임의 순서를 나타내는 필드, 상기 비디오 프레임이 생성된 시간을 나타내는 필드, 상기 비디오 프레임 내에서 식별된 객체의 종류를 나타내는 필드, 상기 식별된 객체가 정확할 확률을 표시하는 필드 및 상기 비디오 프레임 내에서 상기 식별된 객체의 위치를 나타내는 필드를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 AI 연산 처리 방법은, 피사체로부터 영상을 촬상하는 단계; 상기 촬상된 영상에 대한 AI 연산을 요청하는 단계; 상기 AI 연산 요청에 따라, 상기 카메라 장치에 임베드 된 복수의 AI 소스 및 상기 카메라 장치 외부의 AI 소스를 포함한 가용한 AI 소스의 현재 자원을 모니터링 하는 단계; 상기 가용한 AI 소스의 우선 순위 및 상기 현재 자원의 유휴량에 따라 상기 가용한 AI 소스 중에서 적어도 일부에 의해 AI 연산을 처리하게 하는 단계; 및 상기 AI 연산의 처리 결과를 이용하여 상기 촬상된 영상에 대한 비디오 분석을 수행하는 단계를 포함한다.
상기 AI 연산을 처리하게 하는 단계는, 상기 임베드 된 복수의 AI 소스와 상기 카메라 장치 외부의 AI 소스를 포함한 가용한 AI 소스의 현재 자원을 모니터링 하는 단계; 및 상기 모니터링되는 현재 자원이 임계치 이상인 AI 소스 중에서 우선 순위가 가장 높은 AI 소스를 선정하는 단계를 포함한다.
상기 AI 연산을 처리하게 하는 단계는, 상기 AI 소스를 선정한 후, 상기 선정된 AI 소스가 갖는 현재 자원을 모니터링하여, 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스의 다음 우선 순위를 갖는 AI 소스를 선정하는 단계를 더 포함한다.
본 발명에 따르면, 다양한 SoC 환경에서 호환 가능하도록 NPU 컨트롤러 및 개방 플랫폼용으로 확장된 API를 제공하여 감시 카메라 장치의 제품 경쟁력을 제고할 수 있는 장점이 있다.
또한, 본 발명에 따르면, 다양한 SoC 환경에서 현재 상황에 가장 적합한 AI 소스를 이용하여 입력 영상에 대한 최적의 AI 연산을 처리함으로써, AI 연산 처리의 저비용 및 고효율을 도모할 수 있는 장점도 있다.
도 1은 본 발명의 실시예에 따른 영상 감시 시스템의 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 카메라 장치의 구성을 도시한 블록도이다.
도 3은 도 2의 카메라 장치에 포함된 NPU 컨트롤러의 구성을 보다 자세히 도시한 블록도이다.
도 4는 도 3의 NPU 컨트롤러에 포함된 AI 데이터 처리부의 구성을 보다 자세히 도시한 블록도이다.
도 5는 AI 데이터 처리부에 의해 상위 계층으로 전달되는 데이터 패킷의 구성을 도시한 도면이다.
도 6은 도 2의 카메라 장치를 실현하는 컴퓨팅 장치의 구현예를 도시하는 도면이다.
도 7은 본 발명의 일 실시예에 따른 카메라 장치에서 수행되는 AI 연산 처리 방법을 개략적으로 도시한 흐름도이다.
도 8은 AI 어플리케이션 및 NPU 컨트롤러에 의해 수행되는 구체적인 단계들을 도시한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하 첨부된 도면들을 참조하여 본 발명의 일 실시예를 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 영상 감시 시스템(10)의 구성을 도시한 도면이다. 도 1에 따르면, 상기 시스템(10)은 상호 간에 네트워크(30)를 통해 연결된 복수의 카메라 장치(100: 100A, 100B, 100C), 네트워크 비디오 레코더(NVR: network video recorder)(150), 비디오 관리 시스템(VMS: video management system)(160) 및 사용자 단말 장치(170)를 포함하여 구성될 수 있다.
상기 카메라 장치(100A, 100B, 100C)는 영상을 촬상하는 기능과 AI 연산을 처리하는 기능을 갖는다. 본 발명에서 영상(image)이란 정지 영상(still picture) 및 동영상(moving picture)을 포괄하는 의미로 사용된다. 상기 동영상은 일반적으로 비디오(video)라고도 불린다.
상기 카메라 장치(100A, 100B, 100C)에 의해 촬상된 영상과, 상기 AI 연산 처리 결과에 기초하여 비디오 분석(VA: video analytics)를 수행할 수 있다. 상기 VA를 통해 얻어지는 메타데이터는 네트워크 비디오 레코더(150)에 저장될 수 있다.
비디오 관리 시스템(160)은 사용자의 검색 요청에 따라 상기 메타데이터를 이용하여 상기 저장된 영상 중에서 이벤트가 발생된 영상을 검색하고, 상기 이벤트에 대응되는 조치(알람, 객체 추적 등)를 취할 수 있다.
사용자 단말 장치(170)는 개인용 컴퓨터, 모바일 단말 등으로 구현될 수 있으며, 상기 네트워크(30)를 통해 카메라 장치(100), 네트워크 비디오 레코더(150), 비디오 관리 시스템(160) 등에 접속할 수 있다.
이와 같이, 카메라 장치(100A, 100B, 100C)는 AI 연산을 통해 VA를 수행할 수 있고, 이를 위해 내부에 다양한 하드웨어(SoC: system on chip) 및 소프트웨어 기반으로 AI 처리 기능을 갖는다. 그러나, 카메라 장치(100A, 100B, 100C)의 제조사 마다 고유의 SoC가 사용되고 있으므로 다양한 소프트웨어 기반의 AI 어플리케이션과 직접 호환되지 못하므로 상기 SoC마다 전용의 AI 어플리케이션을 탑재해야 하는 번거로움이 발생할 수 있다.
따라서, 본 발명에서 카메라 장치(100)는 오픈 플랫폼(Open Platform) 환경에서 소프트웨어 계층에서 AI 처리를 위한 명령어 함수, 예를 들어 API(application programming interface)를 호환 가능하게 변환하고, 하드웨어적으로는 NPU 컨트롤러를 추가하여 다양한 SoC 환경에서 동일한 AI 어플리케이션을 호환 가능하게 사용할 수 있게 해 준다.
도 2는 본 발명의 일 실시예에 따른 카메라 장치(100)의 구성을 도시한 블록도이다.
도시된 바와 같이, 카메라 장치(100)는 최상위 응용 계층(Layer2)과, 상기 응용 계층(Layer2) 아래에 위치하는 SW 계층(Layer1)과, 상기 SW 계층(Layer1)의 아래에 위치하는 HW 계층(Layer0)으로 구성될 수 있다.
여기서, AI 어플리케이션(110)은 상기 응용 계층(Layer2)에 속하고, 상기 NPU 드라이버(120)는 상기 SW 계층(Layer1)에 속하며, 카메라 장치(100)에 임베드 된 복수의 AI 소스(51, 54, 55, 56) 및 NPU 컨트롤러(130)는 상기 HW 계층(Layer0)에 속한다.
제어부 내지 CPU(56)는 카메라 장치(100)의 다른 구성요소들의 동작을 제어하는 컨트롤러 역할을 한다. 또한, 메모리(미도시 됨)는 CPU(56)에서 수행된 결과를 저장하거나 CPU(150)의 동작을 위해 필요한 데이터를 저장하는 저장 매체로서, 휘발성 메모리 또는 비휘발성 메모리로 구현될 수 있다.
먼저, HW 계층(Layer0)를 살펴보면, 이미지 센서(60)는 외부의 피사체로부터 영상을 촬상한다. 상기 이미지 센서(60)는 CCD, CMOS와 같은 알려진 촬상 소자로 구현될 수 있으며, 상기 촬상 영상에 포함된 화소들을 디지털 값으로 출력한다.
ISP(image signal processor)(65)는 상기 촬상된 영상을 저장하기 전에 상기 영상에 대한 전처리를 수행할 수 있다. 상기 전처리는 화이트 밸런스, 감마 조정, 업/다운 샘플링 등의 영상 처리를 포함할 수 있다. 상기 ISP(65)에 의해 처리된 영상은 입력 비디오로서 NPU 컨트롤러(130)에 제공된다.
또한, HW 계층(Layer0)에는 복수의 AI 소스(51, 54, 55, 56)이 임베드 되어 있고, 각각의 AI 소스(51, 54, 55, 56)는 NPU 컨트롤러(130)와 통신 가능하게 연결되어 있다. 상기 임베드 된 AI 소스(51, 54, 55, 56)는 카메라 장치(100) 자체에 내장되어 상기 AI 연산을 처리할 수 있는 기능을 갖는 SoC들로서, NPU(neural processing unit)(51), GPU(graphic processing unit)(54), DSP(digital signal processor)(55) 및 CPU(central processing unit)(56)를 포함할 수 있다.
GPU(54)의 원래 목적은 컴퓨터 그래픽 처리이지만, AI 연산 처리용으로 GPU를 쓰는 이유는 그래픽 처리와 AI 연산이 비슷한 방법으로 이뤄지기 때문이다. 예를 들어, 엔비디아 사의 GPU는 쿠다(CUDA)를 이용해 AI 연산의 처리가 가능하고, 다른 제조사의 GPU도 고유한 API를 제공함으로써 AI 연산을 처리할 수 있다.
이에 비해, NPU(51)는 AI 연산만을 위한 목적이기 때문에 GPU보다 범용성이 낮지만 AI 연산 전용의 처리를 위한 칩이므로 AI 연산의 처리 속도는 상당히 높다. 다만, NPU(51)는 이와 같은 낮은 범용성으로 인하여 다른 AI 알고리즘을 습득하기 어렵다. 왜냐하면, NPU(51)는 AI 알고리즘의 딥러닝 네트워크를 구성하는 신경망을 하드웨어로 구현했기 때문이다. 따라서, 구조가 다른 알고리즘을 구현할 때 오히려 더 큰 시간과 비용이 들 수 있다. 다만, 원래 용도에서 NPU(51)는 GPU(54)에 대비하여 높은 효율을 보인다. 이러한 NPU(51)의 제조사로는 ARM, 삼성전자, 애플, 퀄컴, 화웨이 등이 있다.
한편, 상기 임베드 된 복수의 AI 소스(51, 54, 55, 56)로부터 확장하여 카메라 장치(100) 외부의 AI 소스(52, 53)도 NPU 컨트롤러(130)에 함께 연결될 수 있다. 이러한 임베드 된 AI 소스와 외부의 AI 소스를 포괄하여 "가용한 AI 소스(50)"라고 정의할 수 있다.
분리형 외부 SoC(52)는 접속 소켓(75), 예를 들어 USB 단자를 통해 카메라 장치(100)에 직접 유선/무선으로 접속될 수 있는 AI 소스 형태이다. 이러한 분리형 외부 SoC(52)는 별도의 네트워크를 통한 통신이 불필요하므로, 카메라 장치(100) 내부에 NPU(51)가 설치되어 있지 않은 환경에서 유용하게 활용될 수 있다.
또한, 클라우드 서버(53)는 대규모 데이터센터, 엣지 서버(edge server), 게이트웨이(Gateway) 등에 설치되어 네트워크 통신에 의해 카메라 장치(100)와 연결될 수 있는 AI 소스의 형태이다. 따라서, 클라우드 서버(53)와의 연결을 위해, 카메라 장치(100)는 이더넷, WLAN과 같은 네트워크 인터페이스(70)를 포함할 수 있다.
상기 HW 계층(Layer0)의 상위에는 SW 계층(Layer1)이 존재한다. 상기 SW 계층(Layer1)에는 소프트웨어로 구성된, NPU 드라이버(120), 윈도우, 안드로이드, IOS와 같은 운영 체제(OS: operating system)(121), SDK(software development kit)(123) 등이 설치된다.
SDK(123)란, 일반적으로 NPU(51)와 같은 하드웨어 플랫폼, 운영체제(121), 프로그래밍 언어의 확장 기능을 사용할 수 있도록 배포되는 개발 도구이다. 본 발명에서 SDK(123)는 NPU(51)의 확장 기능을 위해 사용된다. 일반적으로 운영 체제(121) 뿐만 아니라, SDK(123)에도 API(application programming interface)가 포함되는 것이 일반적이다. 일반적으로, API는 정보 제공자와 정보 사용자 간의 계약으로 지칭되며 소비자에게 필요한 콘텐츠(호출)와 생산자에게 필요한 콘텐츠(응답)를 구성한다. 이러한 API를 통해 사용자는 복잡한 애플리케이션을 더욱 쉽게 개발하게 될 수 있고, 필요에 따라 디버깅하고 새로운 기능을 추가할 수 있게 된다.
상기 NPU 드라이버(120)는, 상기 가용한 AI 소스(51, 52, 53, 54, 55, 56)를 제어할 수 있는 상기 API(Application Programming Interface)를 상기 NPU 컨트롤러(130)로부터 SDK의 형태로 제공받아, 상기 운영 체제(121)나 SDK(123)에서 제공하는 복수의 API를, 상기 복수의 API를 적어도 포함하는 확장 API 사이의 변환을 수행한다. 즉, NPU 컨트롤러(130)는 다양한 AI 소스 제공하는 각각의 제조사 별로 상이한 API를, AI 어플리케이션(110)에서 이용 가능한 표준화된 형태의 확장 API(EAPI: expanded API)로 변환하여 AI 어플리케이션(110)으로부터 전달할 수 있다. 마찬가지로, AI 어플리케이션(110)의 요청에 따라 수신된 EAPI를 상기 AI 소스들에서 정의된 API의 형태로 변환하여 NPU 컨트롤러(130)에 제공할 수 있다.
이러한 NPU 드라이버(120)를 통한 AI 어플리케이션(110)의 요청에 따라, NPU 컨트롤러(130)는 가용한 AI 소스(50) 중에서 적어도 하나를 선택하여 AI 연산 처리를 수행할 것을 명령한다.
구체적으로, NPU 드라이버(120)는 상기 카메라 장치(100)에 임베드 된 AI 소스(51, 54, 55, 56)과 상기 카메라 장치(100) 외부의 AI 소스(52, 53)를 포함한 가용한 AI 소스(50)의 현재 자원을 모니터링 하여, 상기 모니터링되는 현재 자원이 임계치 이상인 AI 소스 중에서 우선 순위가 가장 높은 AI 소스를 선정하고, 상기 선정된 AI 소스에 의해 상기 AI 연산을 처리하게 한다.
또한, NPU 드라이버(120)는 상기 AI 소스를 선정한 후에도, 상기 선정된 AI 소스가 갖는 현재 자원을 모니터링하여, 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스의 다음 우선 순위를 갖는 AI 소스를 선정할 수 있다. 또는, NPU 드라이버(120)는 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스 및 그 다음 우선 순위를 갖는 AI 소스를 함께 선정하여 복수의 AI 소스에 AI 연산을 분배하여 처리하게 할 수도 있다.
이러한 가용한 AI 소스(50) 중에서, 일단 전용의 AI 연산 처리가 가능하고 카메라 장치(100)에 임베드 된 NPU(51)가 가장 높은 우선 순위를 갖는다(제1 그룹). 그 다음으로는 카메라 장치(100)의 외부에 있기는 하지만 전용의 NPU를 내장한 분리형 외부 SoC(52) 및 클라우드 서버(53)가 다음의 우선 순위를 갖는다(제2 그룹). 마지막으로, 카메라 장치(100) 임베드 된 나머지 SoC인 GPU(54), DSP(55) 및 CPU(56)가 최하위 우선 순위를 갖는다(제3 그룹).
이상과 같은 우선 순위로 인하여 NPU 컨트롤러(130)는 현재 자원이 임계치 이상 보장되는 AI 소스 중에서 AI 연산 처리 능력이 높은 순서대로 AI 연산을 수행하고, 이후에 자원 상황이 변경되면 차순위의 AI 소스로 하여금 AI 연산을 수행하게 할 수 있다.
이와 같이, 3개의 그룹으로 우선순위를 그룹화할 수도 있지만 전체의 개별 AI 소스 별로 우선 순위를 정할 수도 있다. 예를 들어, 상기 개별 우선 순위는 NPU(51), 분리형 외부 SoC(52), 클라우드 서버(53), GPU(54), DSP(55) 및 CPU(56) 순서인 것이 바람직하다.
또한, SW 계층(Layer1) 위에는 최상위 계층으로서 응용 계층(Layer2)가 위치한다. 상기 최상위 계층(Layer2)에 있는 AI 어플리케이션(110)은, 이미지 센서(60)에 의해 촬상된 영상에 대한 AI 연산을 NPU 드라이버(120)에 요청한다. 그 결과로서, AI 어플리케이션(110)은 NPU 컨트롤러(130) 및 NPU 드라이버(120)를 거쳐서 상기 AI 연산의 처리 결과를 수신한다. AI 어플리케이션은 상기 요청에 따른 AI 처리 결과를 이용하여 상기 촬상된 영상에 대한 비디오 분석(video analytics)을 수행할 수 있다. 이러한 비디오 분석은 입력 비디오에 대해 사람, 동물, 자동차와 같은 객체 및 이벤트를 추출하여, 상기 입력 비디오와 매칭되는 메타데이터를 생성하는 과정이다. 이와 같이 입력 비디오와 메타데이터의 쌍이 생성되면, 전술한 비디오 관리 시스템(170)에 의한 객체 검색 및/또는 이벤트 검색이 가능하다.
한편, AI 연산을 위해서는 반복된 AI 학습을 위해 학습 모델이 제공될 필요가 있다. 이러한 학습 모델(신경망 모델)은 AI 어플리케이션(110)에 의해 사전에 생성되어 NPU 컨트롤러(130)를 통해 상기 선정된 AI 소스에 제공되는 것이 바람직하다. 그렇지 않으면 입력 비디오를 이용하여 별도의 학습 모델을 확보하는 과정이 필요하기 때문이다. 이와 같이 사전에 AI 학습을 위한 학습 모델을 확보하는 과정은 다음과 같다.
학습 모델 생성부(도 3의 111)는 신경망 모델에 러닝 데이터로 입력하기 위한 로 데이터(raw data) 내지 트레이닝 데이터로서 사용한다. 상기 학습 모델 생성부는 획득한 트레이닝 데이터를 이용하여 학습 모델이 소정의 데이터를 어떻게 분류하는지 판단하는 기준을 갖도록 학습한다. 이 경우, 상기 학습 모델 생성부는 러닝 데이터의 적어도 일부를 판단 기준으로 하여 감독 학습(supervised learning)을 통해 신경망 모델을 학습시킬 수 있다. 또는, 상기 학습 모델 생성부는 비지도 학습을 통해 신경망 모델을 학습시켜 감독 없이 학습 데이터를 사용하여 자가 학습하여 기준을 발견할 수도 있다. 신경망 모델이 학습되면, 상기 학습 모델 생성부는 최종적으로 학습 모델(신경망 모델)을 메모리에 저장한다.
상기 AI 어플리케이션(110)은 상기 생성된 AI 학습 모델을 NPU 컨트롤러(130)에 전달하고, 상기 NPU 컨트롤러(130)는 상기 전달된 학습 모델(131)을 상기 선정된 AI 소스에 제공한다.
도 3은 도 2의 카메라 장치(100)에 포함된 AI 어플리케이션(110) 및 NPU 컨트롤러(130)의 구성을 보다 자세히 도시한 블록도이다.
상기 AI 어플리케이션(110) 및 AI 입출력 처리부(113)를 포함하고, NPU 컨트롤러(130)는 학습 모델 전송부(131), AI 데이터 처리부(133) 및 영상 가공부(135)를 포함하여 구성될 수 있다.
전술한 바와 같이, 학습 모델 생성부(111)에 의해 미리 생성된 학습 모델은 NPU 컨트롤러(130)의 학습 모델 전송부(131)에 전달된다. 이 때, 학습 모델 전송부(131)는 상기 전달된 학습 모델을 그대로 상기 선정된 AI 소스에 제공하거나 상기 AI 소스에서 사용할 수 있는 AI 파라미터(신경망 파라미터)의 형태로 변환하여 상기 AI 소스에 제공할 수 있다.
또한, 영상 가공부(135)는 상기 촬상된 비디오의 속성을 상기 선정된 AI 소스에서 지원하는 속성으로 가공한 후, 가공된 비디오를 상기 선정된 AI 소스에 제공한다. 이러한 비디오의 가공이란, 다양한 영상 속성을 상기 선정된 AI 소스에서 지원 가능한 영상 속성으로 변경하는 과정으로서, 상기 영상 속성으로는 3차원 색공간(color space)(예: RGB, YCbCr 등), 해상도(resolution), 프레임율(frame-rate), 비트율(bitrate), 색 깊이(color depth)(예: 256 컬러, 트루 컬러 등) 중에서 적어도 하나를 포함한다.
그리고, AI 데이터 처리부(133)는 NPU 드라이버(120)와 가용한 AI 소스(50) 사이에서 명령어를 하향 또는 상향으로 전달하는 역할을 한다. 먼저, AI 어플리케이션(110)의 AI 입출력 처리부(113)는 AI 연산을 요청할 때 확장된 API(EAPI)를 NPU 드라이버(120)에 전달하고, NPU 드라이버(120)는 상기 EAPI를 가용한 AI 소스(50)에서 지원하는 API로 변환하여 AI 데이터 처리부(133)에 전달한다. 이후, AI 데이터 처리부(133)는 상기 변환된 API를 가용한 AI 소스(50) 중에서 선정된 AI 소스에 제공한다.
반대로, 상기 선정된 AI 소스에서 AI 연산을 수행하여 얻은 처리 결과는 다시 AI 데이터 처리부(133)에 제공된다. 이 때, AI 데이터 처리부(133)는 상기 처리 결과를 표준화된 데이터 패킷으로 생성하여 NPU 드라이버(120)를 통해 AI 어플리케이션(110)의 AI 입출력 처리부(113)에 제공한다. 이러한 데이터 패킷의 구체적인 예시는 도 5를 참조하여 후술하기로 한다.
요컨대, NPU 컨트롤러(130)는 가용한 AI 소스(50)에 학습 모델, AI 연산 요청(API 형태) 및 가공된 비디오를 제공하고, 상기 가용한 AI 소스(50)로부터 AI 연산의 처리 결과를 수신한다.
도 4는 도 3의 NPU 컨트롤러(130)에 포함된 AI 데이터 처리부(133)의 구성을 보다 자세히 도시한 블록도이다.
전술한 바와 같이 AI 데이터 처리부(133)는 가용한 AI 소스(50)로부터 AI 연산의 처리 결과를 수신하여 NPU 드라이버(120)에 표준화된 데이터 패킷의 형태로 제공한다. 다만, 호환성 판단부(136)는 상기 선정된 AI 소스로부터 AI 처리 결과를 수신한 후, 상기 AI 처리 결과를 나타내는 데이터 포맷의 호환성을 판단한다. 상기 판단 결과, 호환성이 없는 경우에, 포맷 가공부(137)는 상기 AI 연산의 처리 결과를 가공하고, 패킷화부(139)는 상기 가공된 데이터 포맷을 기초로 데이터 패킷을 생성한다. 반면에, 상기 판단 결과 호환성이 있는 경우에는 데이터 포맷의 가공 없이 그대로 패킷화하여 얻어진 데이터 패킷을 NPU 드라이버(120)에 전달할 수 있다.
이러한 호환성이란 AI 연산의 처리 결과가 AI 어플리케이션(110)이 인식할 수 있는 양식의 데이터인지 여부를 의미한다. 일반적으로 AI 연산의 처리 결과는 AI 소스에 의존적이며 전혀 표준화되어 있지 않다. 예를 들어, 어떤 AI 소스가 제공하는 처리 결과의 데이터 필드 수 자체가 다른 AI 소스와 다를 수도 있고, 객체나 이벤트의 분류 기준이나 분류 개수가 상이할 수도 있다. 또한, 동일한 객체나 이벤트를 다른 명칭으로 정의하는 경우도 있다.
이러한 호환성 문제를 고려하여, 포맷 가공부(137)는 호환성이 없는 AI 연산의 처리 결과를 호환성이 있는 데이터로 가공하여, 패킷화부(139)에 전달하고 패킷화부(139)는 항상 표준화된 데이터 패킷의 형태로 NPU 드라이버(120)에 제공한다.
도 5는 AI 데이터 처리부(133)에 의해 상위 계층으로 전달되는 표준화된 데이터 패킷(90)의 구성을 도시한 도면이다.
상기 데이터 패킷(90)은 기본적으로 헤더(91)와 페이로드(92)로 구성된다. 이 때, 상기 헤더(91)는 AI 처리 결과를 갖는 데이터 패킷임을 표시하는 AI 식별자(예: 0x0919)를 포함한다. 이러한 식별자는 상기 데이터 패킷(90)이 AI 처리 결과를 포함하고 있음을 나타내고, 다른 다양한 데이터 패킷들의 종류와 구분하기 위해 사용된다.
또한, 상기 페이로드(92)는 표준화된 다수의 데이터 필드들로 구성될 수 있다. 상기 페이로드(92)는 구체적으로, 비디오 프레임의 순서를 나타내는 필드(93), 상기 비디오 프레임이 생성된 시간을 나타내는 필드(94), 상기 비디오 프레임 내에서 식별된 객체의 종류를 나타내는 필드(95), 상기 식별된 객체가 정확할 확률을 표시하는 필드(96) 및 상기 비디오 프레임 내에서 상기 식별된 객체의 위치를 나타내는 필드(97, 98)를 포함할 수 있다. 또한, 상기 페이로드(92)는 사용자 정의에 따른 추가적인 데이터를 기록하기 위한 필드(99)를 더 포함할 수 있다.
도 6은 도 2의 카메라 장치(100)를 실현하는 컴퓨팅 장치(200)의 구현예를 도시하는 도면이다.
컴퓨팅 장치(200)는 버스(220), 프로세서(230), 메모리(240), 스토리지(250), 입출력 인터페이스(210) 및 네트워크 인터페이스(260)를 가진다. 버스(220)는 프로세서(230), 메모리(240), 스토리지(250), 입출력 인터페이스(210) 및 네트워크 인터페이스(260)가 서로 데이터를 송수신하기 위한 데이터 전송로이다. 단, 프로세서(230) 등을 서로 접속하는 방법은 버스 연결로 제한되지 않는다. 프로세서(230)은 CPU (Central Processing Unit)나 GPU (Graphics Processing Unit), DSP(Digital Signal Processor) 등의 연산 처리 장치이다. 메모리(240)는 RAM(Random Access Memory)나 ROM (Read Only Memory) 등의 메모리이다. 스토리지(250)은 하드 디스크, SSD (Solid State Drive), 또는 메모리 카드 등의 저장 장치이다. 또한 스토리지(250)은 RAM 나 ROM 등의 메모리일 수 있다.
입출력 인터페이스(210)는 컴퓨팅 장치(200)과 입출력 디바이스를 접속하기 위한 인터페이스이다. 예를 들면 입출력 인터페이스(210)에는 키보드나 마우스 등이 접속될 수 있다.
네트워크 인터페이스(260)는 컴퓨팅 장치(200)을 외부 장치와 통신 가능하게 접속하여 전송 패킷을 송수신하기 위한 인터페이스이다. 네트워크 인터페이스(260)는 유선 회선과 접속하기 위한 네트워크 인터페이스라도 좋고 무선 회선과 접속하기 위한 네트워크 인터페이스라도 좋다. 예를 들면, 컴퓨팅 장치(200)는 네트워크(30)를 통해 다른 컴퓨팅 장치(200-1)와 접속될 수 있다.
스토리지(250)는 컴퓨팅 장치(200)의 각 기능을 구현하는 프로그램 모듈을 기억하고 있다. 프로세서(230)는 이들 각 프로그램 모듈을 실행함으로써, 그 프로그램 모듈에 대응하는 각 기능을 구현한다. 여기서 프로세서(230)는 상기 각 모듈을 실행할 때, 이 모듈들을 메모리(240) 상으로 읽어낸 후 실행할 수 있다.
다만, 컴퓨팅 장치(200)의 하드웨어 구성은 도 6에 나타낸 구성으로 제한되지 않는다. 예를 들면 각 프로그램 모듈은 메모리(240)에 저장되어도 좋다. 이 경우, 컴퓨팅 장치(200)은 스토리지(250)을 구비하지 않아도 된다.
이와 같이, 카메라 장치(100)는 적어도, 프로세서(230)와 상기 프로세서(230)에 의해 실행 가능한 인스트럭션들(instructions)을 저장하는 메모리(240)를 포함한다. 특히, 도 2의 카메라 장치(100)에서 응용 계층(Layer2) 및 SW 계층(Layer1)은 상기 카메라 장치(100)에 포함된 다양한 기능 블록들 내지 단계들을 포함하는 인스트럭션들이 상기 프로세서(230)에 의해 수행됨으로써 동작된다.
도 7은 본 발명의 일 실시예에 따른 카메라 장치(100)에서 수행되는 AI 연산 처리 방법을 개략적으로 도시한 흐름도이다.
먼저, 이미지 센서(60)는 피사체로부터 영상을 촬상한다(S61).
다음으로, AI 어플리케이션(110)은 상기 촬상된 영상에 대한 AI 연산을 NPU 드라이버(120)에 요청한다(S62).
NPU 컨트롤러(130)는 상기 AI 연산 요청에 따라, 상기 카메라 장치(100)에 임베드 된 복수의 AI 소스(51, 54, 55, 56) 및 상기 카메라 장치 외부의 AI 소스(52, 53)를 포함한 가용한 AI 소스(50)의 현재 자원을 모니터링 한다(S63).
또한, NPU 컨트롤러(130)는 상기 가용한 AI 소스(50)의 우선 순위 및 상기 현재 자원의 유휴량에 따라 상기 가용한 AI 소스 중에서 적어도 일부를 선정하여 AI 연산을 처리하게 한다(S64).
이에 따라, 선정된 AI 소스는 AI 연산을 수행한 후 그 처리 결과를 NPU 컨트롤러(130)에게 제공한다(S65). 그 후, AI 어플리케이션(110)는 상기 제공된 AI 연산의 처리 결과를 이용하여 상기 촬상된 영상에 대한 비디오 분석(VA)을 수행한다(S66).
도 8은 도 7의 흐름도를 보다 상세화하기 위해, AI 어플리케이션(110) 및 NPU 컨트롤러(130)에 의해 수행되는 구체적인 단계들을 도시한 흐름도이다. 도 8에서 점선으로 표시된 블록들은 AI 어플리케이션(110)에서 수행되는 단계들을, 실선으로 표시된 블록들은 NPU 컨트롤러(130)에서 수행되는 단계들을 나타낸다.
먼저, AI 어플리케이션(110)은 AI 소스들을 모니터링 할 것을 요청하고(S71), 이에 대한 응답으로 NPU 컨트롤러(130)는 AI 어플리케이션(110)에 가용한 AI 소스(50)의 리스트를 전달한다(S72).
다음으로, AI 어플리케이션(110)은 AI 소스의 현재 자원 내지 사용량을 요청한다(S73). 이에 대한 응답으로 NPU 컨트롤러(130)는 AI 어플리케이션(110)에 가용한 AI 소스 및 현재 자원의 사용량을 전달한다(S74).
그 후, AI 어플리케이션(110)은 자동으로 또는 사용자의 명령에 기초하여 소정의 우선 순위 순으로 AI 소스를 선정할 것과(S75), 상기 선정된 AI 소스에 의한 AI 연산을 요청한다(S76). 이에 따라, NPU 컨트롤러(130)는 상기 선정된 AI 소스가 AI 연산을 수행하게 한다(S77).
이후에도, NPU 컨트롤러(130)는 주기적으로 상기 선정된 AI 소스의 현재 유휴 자원을 모니터링한다(S78). 그 결과, 상기 유휴 자원이 소정의 임계치 이상이면(S78의 Y), 상기 선정된 AI 소스에 의한 AI 연산 수행을 지속한다(S77). 그렇지 않으면(S78의 N), 상기 선정된 AI 소스의 유휴 자원이 부족한 상태이므로, 다른 AI 소스(바람직하게는 차순위 AI 소스)에 AI 연산을 요청한다(S79). 이 때, 다른 AI 소스로 완전한 이전도 가능하지만, 상기 선정된 AI 소스 및 상기 다른 AI 소스 간에 AI 연산의 서브셋을 분배하여 함께 처리하게 할 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.
50: 가용한 AI 소스들 51: NPU
52: 분리형 외부 SoC 53: 클라우드 서버
54: GPU 55: DSP
56: CPU 60: 이미지 센서
65: ISP 70: 네트워크 인터페이스
75: 접속 소켓 100: 카메라 장치
110: AI 어플리케이션 111: 학습 모델 생성부
113: AI 입출력 처리부 120: NPU 드라이버
121: 운영 체제 123: SDK
130: NPU 컨트롤러 131: 학습 모델 전송부
133: AI 데이터 처리부 135: 영상 가공부
136: 호환성 판단부 137: 포맷 가공부
139: 패킷화부

Claims (20)

  1. 프로세서와, 상기 프로세서에 의해 실행 가능한 인스트럭션들을 저장하는 메모리를 구비하는 카메라 장치로서,
    피사체로부터 영상을 촬상하는 이미지 센서;
    상기 촬상된 영상에 대한 AI 연산을 요청하고, 상기 요청에 따른 AI 처리 결과를 이용하여 상기 촬상된 영상에 대한 비디오 분석을 수행하는 AI 어플리케이션;
    상기 카메라 장치에 임베드 된 복수의 AI 소스;
    상기 AI 연산 요청에 따라, 상기 복수의 AI 소스의 현재 자원을 모니터링 하고, 상기 복수의 AI 소스의 우선 순위에 따라 상기 복수의 AI 소스 중에서 적어도 일부에 의해 AI 연산을 처리하게 하는 NPU 컨트롤러; 및
    상기 AI 어플리케이션과 상기 NPU 컨트롤러 사이에서 상기 AI 연산의 요청 및 상기 AI 연산의 처리된 결과를 전달하며, 상기 AI 어플리케이션과 상기 NPU 컨트롤러 사이의 명령어를 호환 가능하도록 변환하는 NPU 드라이버를 포함하는, 카메라 장치.
  2. 제1항에 있어서,
    상기 카메라 장치는 최상위 응용 계층, 상기 응용 계층 아래에 위치하는 SW 계층 및 상기 SW 계층의 아래에 위치하는 HW 계층으로 이루어지고,
    상기 AI 어플리케이션은 상기 응용 계층에 속하고, 상기 NPU 드라이버는 상기 SW 계층에 속하며, 상기 복수의 AI 소스 및 NPU 컨트롤러는 상기 HW 계층에 속하는, 카메라 장치.
  3. 제1항에 있어서, 상기 NPU 컨트롤러는
    상기 임베드 된 복수의 AI 소스와 상기 카메라 장치 외부의 AI 소스를 포함한 가용한 AI 소스의 현재 자원을 모니터링 하여,
    상기 모니터링되는 현재 자원이 임계치 이상인 AI 소스 중에서 우선 순위가 가장 높은 AI 소스를 선정하고, 상기 선정된 AI 소스에 의해 상기 AI 연산을 처리하게 하는, 카메라 장치.
  4. 제3항에 있어서, 상기 NPU 컨트롤러는
    상기 AI 소스를 선정한 후, 상기 선정된 AI 소스가 갖는 현재 자원을 모니터링하여, 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스의 다음 우선 순위를 갖는 AI 소스를 선정하는, 카메라 장치.
  5. 제3항에 있어서, 상기 NPU 컨트롤러는
    상기 AI 소스를 선정한 후, 상기 선정된 AI 소스가 갖는 현재 자원을 모니터링하여, 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스 및 그 다음 우선 순위를 갖는 AI 소스를 함께 선정하는, 카메라 장치.
  6. 제3항에 있어서,
    상기 임베드 된 복수의 AI 소스는 NPU를 적어도 포함하고, GPU, DSP 및 CPU 중에서 하나 이상을 더 포함하며, 상기 외부의 AI 소스는 분리형 외부 SoC 및 클라우드 서버 중에서 적어도 하나를 포함하는, 카메라 장치.
  7. 제6항에 있어서,
    상기 가용한 AI 소스 중에서 NPU가 가장 높은 우선 순위를 갖는, 카메라 장치.
  8. 제7항에 있어서,
    상기 우선 순위는 NPU, 분리형 외부 SoC, 클라우드 서버, GPU, DSP 및 CPU 순서인, 카메라 장치.
  9. 제7항에 있어서,
    상기 NPU가 1그룹에 속하고, 상기 분리형 외부 SoC 및 클라우드 서버가 2그룹에 속하며, 상기 GPU, DSP 및 CPU가 3그룹에 속하고,
    상기 우선 순위는 상기 1그룹, 상기 2그룹 및 상기 3그룹 순서인, 카메라 장치.
  10. 제3항에 있어서,
    상기 NPU 드라이버는, 상기 복수의 AI 소스를 제어할 수 있는 복수의 API를 상기 NPU 컨트롤러로부터 제공받고, 상기 복수의 API를 상기 복수의 API를 적어도 포함하는 확장 API로 변환하고,
    상기 AI 어플리케이션은 상기 확장 API를 이용하여 AI 연산을 요청하는, 카메라 장치.
  11. 제10항에 있어서,
    상기 복수의 API는 운영 체제의 API와 SDK의 API를 포함하는, 카메라 장치.
  12. 제10항에 있어서,
    상기 AI 어플리케이션은 AI 학습 모델을 NPU 컨트롤러에 전달하고,
    상기 NPU 컨트롤러는 상기 전달된 학습 모델을 상기 선정된 AI 소스에 제공하는, 카메라 장치.
  13. 제3항에 있어서, 상기 NPU 컨트롤러는,
    상기 선정된 AI 소스에 의한 상기 AI 연산 처리를 위해, 이미지 센서에 의해 촬상된 비디오 및 상기 AI 연산 요청을 상기 선정된 AI 소스에 제공하는, 카메라 장치.
  14. 제13항에 있어서, 상기 NPU 컨트롤러는,
    상기 촬상된 비디오의 속성을 상기 선정된 AI 소스에서 지원하는 속성으로 가공한 후 상기 AI 소스에 제공하되,
    상기 비디오의 속성은 3차원 색공간, 해상도, 프레임율, 비트율, 색 깊이 중에서 적어도 하나를 포함하는, 카메라 장치.
  15. 제3항에 있어서, 상기 NPU 컨트롤러는,
    상기 선정된 AI 소스로부터 AI 처리 결과를 수신한 후, 상기 AI 처리 결과를 나타내는 데이터 포맷의 호환성을 판단하고,
    상기 판단 결과 호환성이 없는 경우에는 데이터 포맷을 가공한 후 패킷화하고, 상기 판단 결과 호환성이 있는 경우에는 데이터 포맷의 가공 없이 패킷화하여 얻어진 데이터 패킷을 상기 NPU 드라이버에 전달하는, 카메라 장치.
  16. 제1항에 있어서,
    상기 데이터 패킷은 헤더와 페이로드로 구성되고,
    상기 헤더는 AI 처리 결과를 갖는 데이터 패킷임을 표시하는 AI 식별자를 포함하는, 카메라 장치.
  17. 제16항에 있어서,
    상기 페이로드는 비디오 프레임의 순서를 나타내는 필드, 상기 비디오 프레임이 생성된 시간을 나타내는 필드, 상기 비디오 프레임 내에서 식별된 객체의 종류를 나타내는 필드, 상기 식별된 객체가 정확할 확률을 표시하는 필드 및 상기 비디오 프레임 내에서 상기 식별된 객체의 위치를 나타내는 필드를 포함하는, 카메라 장치.
  18. 프로세서와, 상기 프로세서에 의해 실행 가능한 인스트럭션들을 저장하는 메모리를 구비하는 카메라 장치에서, 상기 프로세서의 제어에 따라 인스트럭션들에 의해 수행되는 AI 연산 처리 방법으로서,
    피사체로부터 영상을 촬상하는 단계;
    상기 촬상된 영상에 대한 AI 연산을 요청하는 단계;
    상기 AI 연산 요청에 따라, 상기 카메라 장치에 임베드 된 복수의 AI 소스 및 상기 카메라 장치 외부의 AI 소스를 포함한 가용한 AI 소스의 현재 자원을 모니터링 하는 단계;
    상기 가용한 AI 소스의 우선 순위 및 상기 현재 자원의 유휴량에 따라 상기 가용한 AI 소스 중에서 적어도 일부에 의해 AI 연산을 처리하게 하는 단계; 및
    상기 AI 연산의 처리 결과를 이용하여 상기 촬상된 영상에 대한 비디오 분석을 수행하는 단계를 포함하는 방법.
  19. 제18항에 있어서, 상기 AI 연산을 처리하게 하는 단계는,
    상기 임베드 된 복수의 AI 소스와 상기 카메라 장치 외부의 AI 소스를 포함한 가용한 AI 소스의 현재 자원을 모니터링 하는 단계; 및
    상기 모니터링되는 현재 자원이 임계치 이상인 AI 소스 중에서 우선 순위가 가장 높은 AI 소스를 선정하는 단계를 포함하는 방법.
  20. 제19항에 있어서, 상기 AI 연산을 처리하게 하는 단계는,
    상기 AI 소스를 선정한 후, 상기 선정된 AI 소스가 갖는 현재 자원을 모니터링하여, 상기 현재 자원이 상기 임계치를 미달하게 되면, 상기 선정된 AI 소스의 다음 우선 순위를 갖는 AI 소스를 선정하는 단계를 더 포함하는, 방법.
KR1020220073872A 2022-06-17 2022-06-17 입력 영상에 대한 ai 연산 처리 방법 및 이를 이용한 카메라 장치 KR20230173293A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220073872A KR20230173293A (ko) 2022-06-17 2022-06-17 입력 영상에 대한 ai 연산 처리 방법 및 이를 이용한 카메라 장치
US18/092,447 US20230409389A1 (en) 2022-06-17 2023-01-03 Ai operation processing method on input image and camera device using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220073872A KR20230173293A (ko) 2022-06-17 2022-06-17 입력 영상에 대한 ai 연산 처리 방법 및 이를 이용한 카메라 장치

Publications (1)

Publication Number Publication Date
KR20230173293A true KR20230173293A (ko) 2023-12-27

Family

ID=89169901

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220073872A KR20230173293A (ko) 2022-06-17 2022-06-17 입력 영상에 대한 ai 연산 처리 방법 및 이를 이용한 카메라 장치

Country Status (2)

Country Link
US (1) US20230409389A1 (ko)
KR (1) KR20230173293A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018205900A (ja) 2017-05-31 2018-12-27 パナソニックIpマネジメント株式会社 監視システム及び監視方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018205900A (ja) 2017-05-31 2018-12-27 パナソニックIpマネジメント株式会社 監視システム及び監視方法

Also Published As

Publication number Publication date
US20230409389A1 (en) 2023-12-21

Similar Documents

Publication Publication Date Title
US11449345B2 (en) Methods, systems and apparatus for adjusting a data path element of a neural network accelerator from convolution mode to pooling mode
Li et al. Learning IoT in edge: Deep learning for the Internet of Things with edge computing
US11983909B2 (en) Responding to machine learning requests from multiple clients
US20230072759A1 (en) Method and apparatus for obtaining virtual image, computer device, computer-readable storage medium, and computer program product
CN110554831B (zh) 操作同步方法、装置、设备及存储介质
KR20200145827A (ko) 얼굴 특징 추출 모델 학습 방법, 얼굴 특징 추출 방법, 장치, 디바이스 및 저장 매체
CN110969198A (zh) 深度学习模型的分布式训练方法、装置、设备及存储介质
US11822698B2 (en) Privacy transformations in data analytics
US11917230B2 (en) Method and system for maximizing uplink bandwidth in a communication system
US10733481B2 (en) Cloud device, terminal device, and method for classifying images
WO2019128735A1 (zh) 图像处理方法及装置
CN111369011A (zh) 机器学习模型应用的方法、装置、计算机设备和存储介质
CN112052759A (zh) 一种活体检测方法和装置
Sismananda et al. Performance comparison of yolo-lite and yolov3 using raspberry pi and motioneyeos
KR102321498B1 (ko) 동물 정보 판별용 어플리케이션을 구동하는 장치, 서버 및 이들을 포함하는 어플리케이션 관리 시스템
CN114640669A (zh) 边缘计算方法及装置
KR20230173293A (ko) 입력 영상에 대한 ai 연산 처리 방법 및 이를 이용한 카메라 장치
CN108596068B (zh) 一种动作识别的方法和装置
EP3843005B1 (en) Method and apparatus with quantized image generation
CN111901561B (zh) 监控系统中的视频数据处理方法、装置、系统及存储介质
KR20240070798A (ko) 감시 장치 및 방법
Nicolau et al. On Image Compression for Mobile Robots Using Feed-Forward Neural Networks
WO2024080231A1 (en) Server device, terminal device, information processing method, and information processing system
Liang et al. TAPU: A Transmission-Analytics Processing Unit for Accelerating Multi-functions in IoT Gateways
WO2023121154A1 (en) A method and system for capturing a video in a user equipment