KR20200100190A - 기계 학습을 위한 이미지 변환 - Google Patents

기계 학습을 위한 이미지 변환 Download PDF

Info

Publication number
KR20200100190A
KR20200100190A KR1020207022145A KR20207022145A KR20200100190A KR 20200100190 A KR20200100190 A KR 20200100190A KR 1020207022145 A KR1020207022145 A KR 1020207022145A KR 20207022145 A KR20207022145 A KR 20207022145A KR 20200100190 A KR20200100190 A KR 20200100190A
Authority
KR
South Korea
Prior art keywords
pixel
coordinate
horizontal
vertical
coordinates
Prior art date
Application number
KR1020207022145A
Other languages
English (en)
Other versions
KR102445872B1 (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 구글 엘엘씨
Priority to KR1020227032191A priority Critical patent/KR20220132659A/ko
Publication of KR20200100190A publication Critical patent/KR20200100190A/ko
Application granted granted Critical
Publication of KR102445872B1 publication Critical patent/KR102445872B1/ko

Links

Images

Classifications

    • G06T3/18
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/0093Geometric image transformation in the plane of the image for image warping, i.e. transforming by individually repositioning each pixel
    • 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/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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • G06T3/4007Interpolation-based scaling, e.g. bilinear interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • G06T3/4046Scaling the whole image or part thereof using neural networks
    • 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

Abstract

이미지 변환을 위한 픽셀 좌표 및 상기 변환된 이미지 데이터를 저장하기 위한 메모리 주소를 결정하기 위한 장치를 포함하는 방법, 시스템 및 장치. 일부 구현예에서, 시스템은 기계 학습 모델 및 이미지에 대한 픽셀 값들을 사용하여 이미지에 대한 기계 학습 계산을 수행하도록 구성된 프로세싱 유닛, 픽셀 값들을 저장하도록 구성된 저장 매체 및 하나 이상의 하드웨어 프로세서들을 포함하는 메모리 주소 계산 유닛을 포함한다. 프로세서는 이미지에 대한 이미지 데이터를 수신하고, 이미지의 디멘션들이 기계 학습 모델의 디멘션들과 일치하지 않는다고 결정하도록 구성된다. 이에 응답하여, 프로세서는 이미지의 변환된 버전에 대한 픽셀 좌표 및 픽셀 좌표들 각각에 대해, 기계 학습 모델에 대한 입력을 생성하는데 사용될 픽셀 값(들)을 저장 매체에 저장하기 위한 메모리 주소(들)를 결정한다.

Description

기계 학습을 위한 이미지 변환
기계 학습을 사용하여 이미지를 분류할 수 있다. 예를 들어, 신경 네트워크는 이미지의 시각적 피처들에 기초하여 이미지를 분류하는데 사용될 수 있다. 신경 네트워크들은 하나 이상의 레이어들을 이용하여 수신된 입력(예: 이미지의 피처들)에 대한 출력(예: 이미지의 분류)을 생성하는 기계 학습 모델들이다. 일부 신경 네트워크들은 외곽 레이어에 더하여 하나 이상의 히든 레이어들을 포함한다. 각 히든 레이어의 출력은 네트워크에서 다음 레이어 즉, 다음 히든 레이어 또는 네트워크의 출력 레이어에 대한 입력으로서 사용된다. 네트워크의 각 레이어는 각각의 세트의 현재 값들에 따라 수신된 입력으로부터 출력을 생성한다.
일부 신경 네트워크는 하나 이상의 컨볼루션 신경 네트워크 레이어들을 포함한다. 각 컨벌루션 신경 네트워크 레이어는 연관된 커널들의 세트를 가진다. 커널들은 가중 입력들의 행렬 구조로서 표현될 수 있다. 각 컨벌루션 레이어는 커널들을 사용하여 레이어에 대한 입력들을 프로세싱한다. 레이어에 대한 입력들의 세트는 매트릭스 구조로 표현될 수 있다.
신경 네트워크는 특정한 형상의 이미지를 수신하도록 구성된다. 그러나, 신경 네트워크를 사용하여 분류될 일부 이미지는 구성된 형상과는 다른 형상을 가질 수 있다.
본 명세서는 이미지 변환을 위한 픽셀 좌표 및 변환된 이미지 데이터를 저장하기 위한 메모리 주소들을 결정하는 특수 목적 계산 유닛에 관한 기술을 설명한다.
일반적으로, 본 명세서에 기술된 발명의 일 혁신적 양태는 시스템에 수록될 수 있고, 상기 시스템은: 기계 학습 모델 및 이미지들에 대한 픽셀 값들을 사용하여 이미지들에 대한 기계 학습 계산을 수행하도록 구성된 프로세싱 유닛을 포함한다. 기계 학습 모델은 특정한 디멘션들을 갖는 이미지들을 프로세싱하도록 구성될 수 있다. 시스템은 이미지에 대한 픽셀 값을 저장하도록 구성된 저장 매체 및 하나 이상의 하드웨어 프로세서들을 포함하는 메모리 주소 계산 유닛을 포함할 수 있다. 하나 이상의 하드웨어 프로세서들은 이미지에 대한 이미지 데이터를 수신하도록 구성될 수 있다. 이미지 데이터는 이미지의 디멘션들을 특정할 수 있다. 이미지의 디멘션들은 수평 픽셀 디멘션과 수직 픽셀 디멘션을 특정할 수 있다. 수평 픽셀 디멘션은 이미지의 수평 디멘션을 따른 픽셀들의 수이고, 수직 픽셀 디멘션은 이미지의 수직 디멘션을 따른 픽셀들의 수이다.
하나 이상의 하드웨어 프로세서들은 이미지의 디멘션들이 특정한 디멘션들과 일치하지 않는다고 결정하고, 이미지의 디멘션들이 특정한 디멘션들과 일치하지 않는다는 결정에 응답하여, 이미지의 디멘션들 및 특정한 디멘션들에 기초하여, 이미지에 대한 수평 픽셀 보폭 및 수직 픽셀 보폭을 결정하고, 수평 픽셀 보폭 및 수직 픽셀 보폭을 사용하여, 입력 이미지의 변환된 버전에 대한 픽셀 좌표를 결정하도록 구성될 수 있다. 각 픽셀 좌표는 수직 좌표 및 수평 좌표를 포함한다. 픽셀 보폭은 원본 이미지 디멘션들을 특정한 디멘션들로 변환하는데 사용되는 팩터이다.
픽셀 좌표들 각각에 대해, 하나 이상의 하드웨어 프로세서들은 기계 학습 모델에 대한 입력을 생성하기 위해 사용될 하나 이상의 픽셀 값들을 저장하기 위해 저장 매체에 하나 이상의 메모리 주소들을 결정하고, 각 메모리 주소를 프로세싱 유닛에 출력하도록 구성될 수 있다. 각 픽셀 좌표에 대한 하나 이상의 메모리 주소들은 픽셀 좌표의 수직 좌표 및 수평 좌표에 기초한다.
이들 또는 다른 실시예들은 다음 구성들 중 하나 이상을 각각 선택적으로 포함할 수 있다. 일부 양태에서, 상기 프로세싱 유닛은 각 메모리 주소를 사용하여 상기 메모리 주소에 저장된 픽셀 값에 액세스하고, 상기 메모리 주소에 저장된 상기 픽셀 값에 기초하여 기계 학습 계산을 수행한다.
일부 양태에서, 메모리 계산 유닛은 수평 좌표의 현재 값을 저장하기 위한 하나 이상의 제1 하드웨어 저장 회로 및 수직 좌표의 현재 값을 저장하기 위한 하나 이상의 제2 하드웨어 저장 회로를 포함한다. 하나 이상의 프로세서들은 이미지에 대한 픽셀 좌표들을 결정할 수 있고, 이는 초기 수평 좌표 및 초기 수직 좌표를 포함하는 초기 픽셀 좌표를 결정하고, 상기 하나 이상의 제1 하드웨어 저장 회로에 상기 초기 수평 좌표를 저장하고, 상기 하나 이상의 제2 하드웨어 저장 회로에 상기 초기 수직 좌표를 저장하고, 제1 루프의 각 반복 이후에 상기 수평 픽셀 보폭을 상기 수평 좌표의 현재 값에 추가함으로써 상기 이미지의 수평 픽셀 디멘션을 순회하는데 사용되는 제1 루프의 각 반복에 대한 상기 수평 좌표의 현재 값을 업데이트하고, 그리고 제2 루프의 각 반복 이후에 상기 수직 픽셀 보폭을 상기 수직 좌표의 현재 값에 추가함으로써 상기 이미지의 수직 픽셀 디멘션을 순회하는데 사용되는 제2 루프의 각 반복에 대한 상기 수직 좌표의 현재 값을 업데이트함으로써, 상기 이미지에 대한 상기 복수의 픽셀 좌표들을 결정하는, 시스템.
일부 양태에서, 각 픽셀 좌표에 대해 결정된 메모리 주소는 픽셀 좌표에 대한 가장 가까운 이웃 픽셀에 대한 픽셀 값을 저장하기 위한 저장 매체에서의 위치에 대응한다. 각각의 가장 가까운 이웃 픽셀에서의 픽셀 값은 프로세싱 유닛에 의해 기계 학습 모델에 대한 입력으로서 사용될 수 있다.
일부 양태에서, 상기 픽셀 좌표에 대한 상기 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값들을 저장하기 위한 하나 이상의 메모리 주소들을 상기 저장 매체에 결정하는 것은: 상기 제1 루프 또는 상기 제2 루프의 각 반복에 대해, 상기 하나 이상의 제1 하드웨어 저장 회로에 저장된 상기 수평 좌표의 현재 값을 식별하는 것, 상기 하나 이상의 제2 하드웨어 저장 회로에 저장된 상기 수직 좌표의 현재 값을 식별하는 것, 및 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 기초하여, 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 메모리 주소를 결정하는 것을 포함한다.
일부 양태에서, 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 메모리 주소를 결정하는 것은, 상기 수평 좌표의 현재 값과 제1 디멘션 승수(multiplier)의 곱(product)에 기초하여 제1 부분 주소 값을 결정하는 것, 상기 수직 좌표의 현재 값과 제2 디멘션 승수의 곱에 기초하여 제2 부분 주소 값을 결정하는 것, 및 상기 제1 부분 주소 값과 제2 부분 주소 값의 합을 결정함으로써 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 상기 메모리 주소를 결정하는 것을 포함한다.
일부 양태에서, 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 상기 메모리 주소는 상기 제1 부분 주소 값, 상기 제2 부분 주소 값 및 기본 메모리 주소의 합과 동일하다. 제1 루프는 제2 루프 내에 중첩되거나 제2 루프는 제1 루프 내에 중첩될 수 있다.
일부 양태에서, 상기 픽셀 좌표에 대한 상기 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값들을 저장하기 위한 하나 이상의 메모리 주소들을 상기 저장 매체에서 결정하는 것은, 상기 픽셀 좌표에 대한 픽셀 값의 이중선형보간(bilinear interpolation)에 사용하기 위해 4개의 픽셀 좌표들 각각에 대한 각각의 메모리 주소를 결정하는 것을 포함한다. 이것은 상기 제1 루프 또는 상기 제2 루프의 각 반복에 대해, 상기 하나 이상의 제1 하드웨어 저장 회로에 저장된 상기 수평 좌표의 현재 값을 식별하는 것; 상기 하나 이상의 제2 하드웨어 저장 회로에 저장된 상기 수직 좌표의 현재 값을 식별하는 것, 수직 오프셋 값을 식별하는 것; 수평 오프셋 값을 식별하는 것, 상기 4개의 픽셀 좌표들 중 제1 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값과 상기 수직 좌표의 현재 값의 합에 기초하여 상기 제1 픽셀 좌표에 대한 제1 픽셀 값을 저장하기 위한 제1 메모리 주소를 결정하는 것; 상기 4개의 픽셀 좌표들 중 제2 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값, 상기 수직 좌표의 현재 값 및 상기 수직 오프셋 값의 합에 기초하여 상기 제2 픽셀 좌표에 대한 제2 픽셀 값을 저장하기 위한 제2 메모리 주소를 결정하는 것; 상기 4개의 픽셀 좌표들 중 제3 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값, 상기 수직 좌표의 현재 값 및 상기 수평 오프셋 값의 합에 기초하여 상기 제3 픽셀 좌표에 대한 제3 픽셀 값을 저장하기 위한 제3 메모리 주소를 결정하는 것; 및 상기 4개의 픽셀 좌표들 중 제4 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값, 상기 수직 좌표의 현재 값, 상기 수직 오프셋 값 및 상기 수평 오프셋 값의 합에 기초하여 상기 제4 픽셀 좌표에 대한 제4 픽셀 값을 저장하기 위한 제4 메모리 주소를 결정하는 것을 포함한다.
일부 양태에서, 상기 수직 오프셋 값은 적어도 상기 이미지에서 수평 픽셀들의 수에 기초하며, 상기 수평 오프셋 값은 1이다. 하나 이상의 프로세서들은 4개의 픽셀 좌표들 각각에 대한 이중선형보간 가중치를 결정하고, 각 가중치를 상기 프로세싱 유닛에 출력한다. 프로세싱 유닛은 상기 4개의 픽셀 좌표들 각각에서의 픽셀 값 및 상기 4개의 픽셀 좌표들 각각에 대한 가중치를 사용하여 상기 기계 학습 모델에 대한 입력 픽셀 값을 결정할 수 있다. 상기 4개의 픽셀 좌표들 각각에 대한 상기 가중치는 상기 픽셀 좌표의 수평 좌표의 분수 부분 및 상기 픽셀 좌표의 수직 좌표의 분수 부분에 기초할 수 있다.
일부 양태에서, 프로세싱 유닛은 픽셀 좌표들 각각에 대해, 픽셀 좌표들에 대한 하나 이상의 메모리 주소들에 저장된 픽셀 값들로부터 하나 이상의 컬러 값들을 결정함으로써 기계 학습 모델로의 입력을 생성하고, 기계 학습 모델을 사용하여 생성된 입력을 프로세싱하여 기계 학습 출력을 생성하도록 구성된다.
본 명세서에 기술된 본 발명은 다음의 이점들을 실현하도록 특정한 실시예들에서 구현될 수 있다. 기계 학습 프로세서에 의해 변환된 이미지에 대한 픽셀 좌표 및 픽셀 좌표에 대한 픽셀 값을 저장하기 위한 메모리 주소를 결정하는 것은 기계 학습 모델이 프로세싱하도록 구성된 특정한 형상을 갖지 않는 이미지에 대한 기계 학습 계산을 수행할 때의 지연을 감소시킨다. 예를 들어, 기계 학습 프로세서는 변환을 위해 이미지를 다른 컴퓨팅 시스템으로 다시 전송할 필요없이 칩상에서 이미지를 변환할 수 있다. 이는 프로세서가 다른 컴퓨팅 시스템이 변환을 수행하기를 기다리지 않고 이미지 데이터를 계속 프로세싱할 수 있기 때문에, 기계 학습 프로세서의 프로세싱 처리량을 증가시킨다.
간단한 산술을 사용하여 적은 수의 명령으로 깊게 중첩된 루프를 반복할 수 있는 특수 목적의 계산 유닛을 사용하면 처리량이 높고 지연이 감소된 이미지 리사이징할 수 있다. 계산 유닛의 레지스터는 이미지의 픽셀 좌표를 추적하고, 픽셀 데이터에 대한 메모리 주소를 결정하는데 사용된 메모리 주소 값을 추적하는데 사용될 수 있다. 레지스터에 저장된 값에 기초하여 간단한 산술 계산을 적용하여 메모리 주소 값을 빠르게 결정할 수 있다. 간단한 산술 계산을 사용하고 기계 학습 계산을 수행하는 프로세싱 유닛과 별도의 프로세서를 사용하여 픽셀 값(및 선택적으로 대응하는 가중치)에 대한 메모리 주소를 결정하면 프로세싱 유닛의 계산 주기의 수가 줄어들고, 더 많은 기계 학습 계산을 위한 프로세싱 유닛의 대역폭이 증가된다.
픽셀 좌표 값을 정수 및 분수 부분으로 분리하면, 동일한 분수 값을 사용하여 픽셀 값의 메모리 주소와 이중보간을 위한 가중치를 결정할 수 있다. 이는 기계 학습 프로세서의 메모리 저장 요구 사항의 감소, 수행되는 계산의 수의 감소(예를 들어, 가중치를 결정하기 위해 픽셀들 사이의 거리의 별도의 계산이 없음), 및 메모리 저장 요구 사항을 추가로 감소시키는 가중치를 결정하는데 필요한 명령어의 수의 감소를 허용한다.
상기 그리고 다른 양태들의 다른 구현예들은 상기 방법들의 액션들을 수행하도록 구성된 대응 시스템들, 방법들 및 컴퓨터 저장 디바이스들에 인코딩된 컴퓨터 프로그램들을 포함한다. 하나 이상의 컴퓨터들의 시스템은 동작 중에 시스템이 상기 동작들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합에 의해 구성될 수 있다. 하나 이상의 컴퓨터 프로그램들은 데이터 프로세싱 장치에 의해 실행될 때 상기 장치로 하여금 동작들을 수행하게 하는 명령어들을 갖도록 구성될 수 있다.
본 명세서에 기술된 본 발명의 하나 이상의 구현예들의 세부 사항은 첨부 도면과 아래의 설명에서 기술된다. 본 발명의 다른 잠재적 구성들, 양태들 및 이점들은 설명, 도면 및 청구항으로부터 명백해질 것이다.
도 1은 예시적 계산 시스템의 블록도이다.
도 2는 이미지에 대한 이중선형보간을 나타내는 도면이다.
도 3은 이미지 데이터에 대한 메모리 주소를 결정하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 4는 이미지 데이터에 대한 메모리 주소를 결정하기 위한 다른 예시적 프로세스를 도시하는 흐름도이다.
도 5는 이미지 데이터에 대한 메모리 주소 및 이중선형보간에 대한 가중치를 결정하기 위한 예시적 프로세스를 나타내는 흐름도이다.
다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 구성요소를 표시한다.
일반적으로, 루프 중첩은 이하 "텐서(tensor)"로 지칭되는 N 차원의 규칙적 어레이를 프로세싱하기 위해 사용될 수 있다. 각 루프는 N 차원 텐서의 각 디멘션을 순회하는 역할을 한다. 다차원 텐서는 행렬 또는 다차원 행렬들일 수 있다. 예를 들어, 2차원 텐서는 행렬이고, 3차원 텐서는 여러 개의 2차원 행렬로 구성된 3차원 행렬이다. N 차원 텐서의 각 차원은 하나 이상의 엘리먼트들을 포함할 수 있으며, 각 엘리먼트는 각각의 데이터 값을 저장할 수 있다. 예를 들어, 텐서는 프로그램에서 변수일 수 있고, 상기 변수는 3개의 차원들을 가질 수 있다. 제1 디멘션은 300개의 엘리먼트들의 길이를 가질 수 있고, 제2 차원은 1000개의 엘리먼트들의 길이를 가질 수 있고, 제3 디멘션은 20개 엘리먼트들의 길이를 가질 수 있다. 물론, 각 차원에서 다른 수의 엘리먼트가 가능하다.
중첩된 루프에서 텐서를 순회하는 것은 엘리먼트의 해당 데이터 값을 로드하거나 저장하기 위해 엘리먼트의 메모리 주소 값의 계산을 포함할 수 있다. for-loop는 3개의 루프 인덱스 변수(예: i, j 및 k)에 의해 추적되는 3개의 루프들이 3차원 텐서를 통해 순회하기 위해 중첩될 수 있는 루프 중첩의 예이다. 신경 네트워크에서, 엘리먼트의 값은 텐서와 연관된 하나 이상의 내적 계산에 사용될 수 있다. 예를 들어, 엘리먼트의 값은 대응하는 파라미터 또는 가중치와 곱해질 수 있다. 텐서의 엘리먼트는 중첩된 for-loop를 사용하여 순서대로 순회하여, 엘리먼트에 액세스하고, 엘리먼트의 값을 사용하여 하나 이상의 계산을 수행할 수 있다. 3차원 텐서 예를 계속하면, 외부 for-loop를 사용하여 변수 i에 의해 추적된 루프를 순회할 수 있고, 중간 for-loop 루프를 사용하여 변수 j에 의해 추적된 루프를 순회할 수 있으며, 내부 for-loop를 사용하여 변수 k에 의해 추적된 루프를 순회한다. 이 예에서, 액세스된 제1 엘리먼트는 (i = 0, j = 0, k = 0)일 수 있고, 제2 엘리먼트는 (i = 0, j = 0, k = 1) 등일 수 있다. 후술하는 바와 같이, 텐서 순회 유닛은 중첩된 루프를 사용하여 각 엘리먼트에 대한 메모리 주소를 결정하기 위해 사용될 수 있어서, 프로세싱 유닛은 엘리먼트의 값에 액세스하고, 엘리먼트의 값을 사용하여 하나 이상의 계산을 수행할 수 있다.
일부 경우에, 프로세서는 외부 루프 인덱스 변수로 내부 루프의 루프 바운드를 설정하는 것과 같이 루프 바운드 조건을 실행해야 할 수 있다. 예를 들어, 중첩된 루프의 가장 안쪽 루프를 종료할지 여부를 결정함에 있어, 프로그램은 가장 안쪽 루프의 루프 인덱스 변수의 현재 값을 중첩된 루프의 가장 바깥쪽 루프 인덱스 변수의 현재 값과 비교할 수 있다.
이러한 작업들은 분기 명령어들 및 정수 산술 명령어들과 같은 상당한 수의 명령어들을 요구할 수 있다. 각 루프 바운드가 작고, 루프 반복들의 수가 많은 경우, 계산은 전체 실행 시간의 상당 부분을 차지할 수 있으며, 전반적 성능을 심각하게 저하시킬 수 있다. 프로세서에 대한 하드웨어 텐서 순회 유닛은 모든 루프 순회를 수행하고 기계 학습 계산을 수행하는 것과 같이 다른 작업을 수행하기 위한 프로세서의 수학적 유닛을 자유롭게 함으로써 프로세서의 계산 대역폭을 증가시킬 수 있다.
텐서는 이미지에 대한 이미지 값, 예를 들어 신경 네트워크 또는 다른 기계 학습 모델에 의해 프로세싱되는 이미지의 픽셀에 대한 색상 값을 포함할 수 있다. 예를 들어, 기계 학습 모델은 이미지를 프로세싱하여 이미지를 하나 이상의 오브젝트 클래스들 중 오브젝트를 도시하는 것으로 분류하도록 구성될 수 있다. 다른 예로서, 기계 학습 모델은 이미지를 프로세싱하여 오브젝트를 도시하는 이미지에서의 위치를 식별하도록 구성될 수 있다. 또 다른 예로서, 기계 학습 모델은 이미지의 수치 표현, 예를 들어 이미지의 콘텐츠에 관한 정보를 전달하는 숫자 값의 벡터를 생성하도록 이미지를 프로세싱하도록 구성될 수 있다. 이미지 값은 이미지의 픽셀에 대한 하나 이상의 값을 포함할 수 있다. 픽셀에 대한 값은 본 명세서에서 픽셀 값으로 지칭되고, 픽셀의 컬러를 표현하는 값(예를 들어, 그레이 스케일 값 또는 적, 녹 또는 청(RGB) 값)을 포함할 수 있다. RGB 컬러의 경우, 텐서는 각 픽셀에 대해, 적색 값, 녹색 값 및 청색 값을 포함할 수 있다.
상기 논의된 바와 같이, 신경 네트워크는 특정한 형상의 이미지, 예를 들어 특정한 수평 및 수직 디멘션을 갖는 이미지를 수신하도록 구성될 수 있다. 예상 입력 형상과 일치하지 않는 형상을 가진 이미지의 경우, 이미지가 수정될 필요가 없게 하여, 신경 네트워크에 의해 프로세싱되기 전에 이미지가 예상 입력 모양을 갖도록 한다.
텐서 순회 유닛은 이미지를 예상된 입력 형상으로 변환하는 이미지 변환 프로세스에서 사용하기 위한 픽셀 좌표를 결정할 수 있다. 텐서 순회 유닛은 또한 변환된 이미지의 각 픽셀에 대한 하나 이상의 메모리 주소 값을 계산하여, 기계 학습 계산을 수행하는 프로세싱 유닛이 픽셀 좌표에 대한 대응하는 픽셀 데이터에 액세스하거나 저장할 수 있도록 한다. 적절한 픽셀 좌표를 결정하는 능력이 없으면, 텐서 순회 유닛은 메모리 주소 값을 계산하기 전에 이미지 변환을 수행하기 위해 이미지 데이터를 프로세싱 유닛 또는 다른 컴퓨팅 시스템으로 다시 전송해야 할 것이다. 이들 구성에 의해, 이미지 데이터를 호스트로 다시 전송하는 것과 연관된 프로세싱 지연이 감소되고, 텐서 순회 유닛 및 프로세싱 유닛의 계산 처리량이 증가된다. 텐서 순회 유닛의 유연성도 향상된다.
도 1는 예시적 계산 시스템(102)의 블록도이다. 일반적으로, 컴퓨팅 시스템(100)은 호스트(130)로부터 제공되는 출력(134)을 생성하기 위해 호스트(130)로부터 수신된 입력 이미지(132)를 프로세싱한다. 컴퓨팅 시스템(100)은 선형 대수 계산을 수행하도록 구성될 수 있다. 예를 들어, 컴퓨팅 시스템(100)은 기계 학습 모델, 예를 들어 신경 네트워크를 사용하여 기계 학습 계산을 수행하도록 구성될 수 있다.
컴퓨팅 시스템(100)은 프로세싱 유닛(114), 저장 매체(116) 및 텐서 순회 유닛(120)을 포함한다. 프로세싱 유닛(102)은 출력(144)을 생성하기 위해 입력 이미지(142)에 대한 이미지 데이터에 대한 계산을 수행하는 하나 이상의 프로세서들을 포함할 수 있다. 출력(144)은 입력 이미지(142)를 특징화하는 분류 또는 다른 출력일 수 있으며, 예를 들어 입력 이미지를 이미지 데이터 및 기계 학습 모델에 기초하여 하나 이상의 카테고리에 속하는 오브젝트의 이미지를 포함하는 것으로 분류한다. 출력(144)은 수신된 요청에 응답하여 다른 컴퓨팅 시스템, 예를 들어, 사용자 디바이스에 대한 것일 수 있다.
저장 매체(104)는 컴퓨팅 디바이스(100) 내에 정보를 저장한다. 일부 구현예에서, 저장 매체(104)는 휘발성 메모리 유닛 또는 유닛들이다. 일부 구현예에서, 저장 매체(104)는 비-휘발성 메모리 유닛 또는 유닛들이다. 저장 매체(104)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성의 디바이스를 포함하는 디바이스의 어레이와 같은 컴퓨터 판독가능 매체의 다른 형태일 수 있다.
텐서 순회 유닛(120)은 애플리케이션 특정 집적 회로로서 구현될 수 있다. 본 명세서에서 메모리 주소 계산 유닛으로도 지칭되는 텐서 순회 유닛(120)은 이미지 데이터를 저장하기 위한 메모리 주소를 결정하도록 구성된 하나 이상의 프로세서(122)를 포함할 수 있다. 텐서 순회 유닛(120)은 또한 수학 유닛(124) 및 저장 회로(126)를 포함한다. 수학 유닛(124)은 하나 이상의 산술 논리 유닛(ALU) 및/또는 하나 이상의 가산기를 포함할 수 있다. 예를 들어, 수학 유닛(124)은 하나 이상의 하드웨어 ALU 및/또는 하나 이상의 하드웨어 가산기를 포함할 수 있다. 수학 유닛(124)은 이미지 데이터를 저장하기 위한 메모리 주소를 결정하도록 구성된다. 저장 회로(126)는 하드웨어 메모리 저장소, 예를 들어 레지스터를 포함한다.
일부 구현예에서, 텐서 순회 유닛(120)은 이미지에 대한 픽셀 좌표를 저장 매체(116)에 픽셀 값을 저장하기 위한 메모리 주소로 변환한다. 예를 들어, 텐서 순회 유닛(120)은 한 세트의 픽셀 좌표를 1차원 주소 공간으로 변환할 수 있다. 이미지의 픽셀에 대한 픽셀 좌표는 수직 좌표 및 수평 좌표를 포함할 수 있다. 텐서 순회 유닛(120)은 메모리 주소를 픽셀 좌표의 수직 좌표 및 수평 좌표의 조합(예를 들어, 선형 조합)으로 함으로써 변환을 수행할 수 있다. 상기 기술된 바와 같이, 픽셀 값은 픽셀의 컬러를 나타내는 값(예를 들어, 그레이 스케일 값 또는 픽셀에 대한 RGB 값)을 포함할 수 있다.
텐서 순회 유닛(120)은 각 픽셀 좌표에 대해, 픽셀의 컬러를 나타내는 컬러 값(들)에 대한 하나 이상의 메모리 주소를 결정할 수 있다. 예를 들어, 이미지가 그레이 스케일 값을 사용하여 표현되는 경우, 텐서 순회 유닛은 각 픽셀에 대해, 픽셀에 대한 그레이 스케일 값을 저장하기 위한 단일 메모리 주소를 결정할 수 있다. 이미지가 RGB 값을 사용하여 표현되면, 텐서 순회 유닛은 각 픽셀에 대해 3개의 컬러 값을 모두 저장하기 위한 단일 메모리 주소를 결정할 수 있다. 이 예에서, 각 메모리 주소는 4 바이트 메모리 위치를 지칭할 수 있고, 1 바이트는 각 컬러 값에 대해 무시되는 여분의 바이트와 함께 사용될 수 있다. RGB 컬러 값이 사용되는 일부 구현예에서, 텐서 순회 유닛(120)은 각 픽셀에 대해, 픽셀에 대한 적색 값을 저장하기 위한 제1 메모리 주소, 픽셀에 대한 녹색 값을 저장하기 위한 제2 메모리 주소 및 픽셀에 대한 청색 값을 저장하기 위한 제3 메모리 주소를 포함한다.
텐서 순회 유닛(120)은 또한 이미지를 프로세싱하기 위해 프로세싱 유닛(114)에 의해 사용되는 기계 학습 모델의 특정한 디멘션으로 이미지를 변환하는 이미지 변환 프로세스에 대한 픽셀 좌표를 결정할 수 있다. 예를 들어, 특정한 디멘션들보다 큰 이미지는 특정한 디멘션들로 다운스케일될 수 있다. 유사하게, 특정한 디멘션들보다 작은 이미지는 특정한 디멘션들로 업스케일될 수 있다.
텐서 순회 유닛(120)은 가장 가까운 이웃 및/또는 이중선형보간 기법을 사용하여 업 스케일링 또는 다운스케일링을 위한 픽셀 좌표를 결정할 수 있다. 두 기법 모두에 대해, 텐서 순회 유닛(120)은 변환된 이미지 즉 기계 학습 모델에 의해 프로세싱될 이미지의 각 픽셀에 대한 픽셀 좌표를 결정할 수 있다. 변환된 이미지의 픽셀은 본 명세서에서 변환된 픽셀로 지칭된다.
텐서 순회 유닛은 가장 가까운 이웃 보간이 사용되는 모드와 이중선형보간이 이미지를 변환하는 데 사용되는 모드 사이에서 전환될 수 있다. 예를 들어, 사용자는 컴퓨팅 시스템(102)의 사용자 인터페이스를 사용하여 가장 가까운 이웃 또는 이중 선형 보간을 선택할 수 있다. 프로세싱 유닛(114)은 선택을 특정하는 데이터를 수신하고 상기 데이터를 텐서 순회 유닛(120)에 제공할 수 있다. 이에 응답하여, 텐서 순회 유닛(120)은 선택된 변환 기법을 사용할 수 있다.
각 변환된 픽셀에 대해, 텐서 순회 유닛(120)은 픽셀 값(들)을 저장하기 위해 저장 매체(116) 내의 하나 이상의 메모리 주소를 결정할 수 있다. 가장 가까운 이웃 보간이 사용되는 경우, 텐서 순회 유닛(120)은 각 변환된 픽셀에 대해, 변환된 픽셀의 픽셀 좌표의 위치에 가장 가까운 입력 이미지(142)에서 픽셀에 대한 픽셀 값(들)을 저장하기 위한 메모리 주소를 결정할 수 있다. 예를 들어, 텐서 순회 유닛(120)은 픽셀 좌표의 위치에 가장 가까운 픽셀에 대해, 가장 가까운 픽셀의 컬러를 표현하는데 사용되는 하나 이상의 컬러 값을 저장하기 위한 메모리 주소를 결정할 수 있다.
이중선형보간 구현예가 사용되는 경우, 텐서 순회 유닛(120)은 입력 이미지(142)에서 픽셀 좌표의 위치에 가장 가까운 4개의 픽셀에 대한 메모리 주소를 결정할 수 있다. 예를 들어, 텐서 순회 유닛(120)은 4개의 픽셀들 각각에 대해, 픽셀의 색상을 표현하는데 사용되는 하나 이상의 컬러 값을 저장하기 위한 각각의 메모리 주소를 결정할 수 있다.
텐서 순회 유닛(120)은 메모리 주소를 프로세싱 유닛(114)에 출력할 수 있다. 프로세싱 유닛(120)은 메모리 주소들에 저장된 픽셀 값들에 액세스하고, 예를 들어 입력 이미지(142)를 분류하기 위해, 픽셀 값들을 사용하여 기계 학습 계산을 수행할 수 있다. 이중선형보간이 사용되는 경우, 상기 설명된 바와 같이, 프로세싱 유닛(120)은 각 컬러 값(예를 들어, 적색, 녹색 또는 청색 값)에 대한 4개의 픽셀 값에 액세스하고, 각 컬러 값에 대해, 변환된 픽셀의 컬러를 표현하는 값을 결정할 수 있다. 프로세싱 유닛(120)은 각각의 변환된 픽셀에 대한 컬러 값(들)을 사용하여 기계 학습 계산을 수행하여 기계 학습 출력, 예를 들어 출력(144)을 생성할 수 있다. 프로세싱 유닛(120)은 입력 이미지(142)의 분류 요청에 응답하여 기계 학습 출력(144)을 칩 외부로, 예를 들어 사용자 디바이스에 제공할 수 있다.
픽셀 좌표를 결정하는 텐서 순회 유닛의 능력이 없으면, 텐서 순회 유닛(120)은 기계 학습 모델에 대한 특정한 디멘션을 갖지 않는 이미지를 변환을 위해 프로세싱 유닛(114) 또는 호스트(130)로 다시 전송해야 할 것이다. 픽셀 좌표 및 메모리 주소를 결정하는 능력은 기계 학습 계산을 수행할 때의 지연을 감소시키고, 컴퓨팅 시스템(102)의 프로세싱 처리량(예를 들어, 텐서 순회 유닛(120) 및/또는 프로세싱 유닛(114)의 프로세싱 처리량)을 증가시킨다.
텐서 순회 유닛(120)은 루프 중첩을 사용하여 픽셀 좌표 및 픽셀 좌표에 대한 메모리 주소를 결정할 수 있다. 루프 중첩은 이미지의 수평 픽셀 디멘션을 순회하기 위한 제1 루프 및 이미지의 수직 픽셀 디멘션을 순회하기 위한 제2 루프를 포함할 수 있다. 제1 루프의 각 반복에 대해, 텐서 순회 유닛(120)은 업데이트된 수평 좌표를 결정한다. 제2 루프의 각 반복에 대해, 텐서 순회 유닛(120)은 업데이트된 수직 좌표를 결정한다. 제1 루프는 제2 루프 내에 중첩되거나 제2 루프는 제1 루프 내에 중첩될 수 있다.
변환된 픽셀의 픽셀 좌표를 결정하기 위해, 텐서 순회 유닛(120)은 초기 변환된 픽셀에 대한 입력 이미지(142) 내의 초기 픽셀 좌표들을 결정할 수 있다. 예를 들어, 이 초기 변환된 픽셀은 변환된 이미지에서 좌측 상단 픽셀일 수 있다. 이 예에서, 입력 이미지의 좌측 상단 코너의 좌표는 (x = 0, y = 0)일 수 있고, 이미지의 우측 하단 코너의 좌표는 (x = 이미지의 총 수평 픽셀 수, y = 이미지의 총 수직 픽셀 수)일 수 있고, 여기서 x는 수평 디멘션이고 y는 수직 디멘션이다. 입력 이미지 내에서 초기 변환된 픽셀의 픽셀 좌표는 입력 이미지와 변환된 이미지의 상대 크기에 따라 (x = 0.375, y = 0.375)에서 일 수 있다.
이 예의 목적을 위해, 제2 루프는 외부 루프이고 제1 루프는 이미지를 y 메이저, x 마이너 순서로 좌측 상단 코너으로부터 우측 하단 코너로 순회하기 위한 내부 루프라고 고려한다. 따라서, 이미지는 이미지의 최상단 행에서 시작하여 이미지의 우측 하단 코너에서 끝나는 한 번에 한 픽셀의 수평 행을 순회한다.
제1 루프의 각 반복에 대해, 텐서 순회 유닛(120)은 예를 들어 수평 보폭의 값을 수평 좌표의 이전 값에 추가함으로써 수평 좌표를 업데이트할 수 있다. 예를 들어, 초기 픽셀 좌표는 (0.375, 0.375)일 수 있고, 수평 보폭은 1.375일 수 있다. 이 예에서, 수평 보폭(1.375)의 값을 이전 수평 좌표에 더함으로써 제2 픽셀 좌표는(1.75, 0.375)가 될 것이다. 텐서 순회 유닛(120)은 제1 루프에 대한 루프 바운드 조건에 도달할 때까지, 예를 들어 텐서 순회(120)가 이미지에 대한 말단 행에 도달할 때까지, 수평 보폭의 값을 이전 수평 좌표에 더함으로써, 입력 이미지(142)의 수평 디멘션을 순회할 수 있다. 제1 루프에 대한 루프 조건에 도달할 때마다, 텐서 순회 유닛(120)은 수평 좌표를 초기 값(0.375)으로 재설정하고, 이미지의 다음 행을 순회하기 위해 수직 보폭의 값을 이전 수직 좌표에 추가함으로써 수직 픽셀 좌표를 업데이트할 수 있다. 이 예시에서, 제2 행의 제1 픽셀 좌표는 (0.375, 1.75)이다. 텐서 순회(120)는 예를 들어, 변환된 이미지의 각각의 변환된 픽셀에 대해 픽셀 좌표가 결정될 때까지, 제2 루프에 대한 루프 바운드에 도달할 때까지 이 프로세스를 계속할 수 있다.
결정된 각각의 픽셀 좌표에 대해, 텐서 순회 유닛(120)은 픽셀 좌표에 대한 픽셀 값(들)을 저장하기 위한 하나 이상의 메모리 주소들을 결정할 수 있다. 가장 가까운 이웃 구현예에서, 텐서 순회 유닛(120)은 각각의 변환된 픽셀의 가장 가까운 이웃 픽셀에 대한 픽셀 값을 저장하기 위한 메모리 주소들을 결정할 수 있다. 이중선형보간 구현예에서, 텐서 순회 유닛(120)은 각각의 변환된 픽셀 좌표에 대해 4개의 메모리 주소를 결정할 수 있고, 픽셀 값들 각각에 대한 하나의 주소는 변환된 픽셀 좌표에 대한 픽셀 값을 결정하는데 사용된다.
상기 예에 도시된 바와 같이, 변환된 픽셀에 대한 픽셀 좌표는 분수 컴포넌트를 가질 수 있다. 텐서 순회 유닛(120)은 고정 소수점 수를 사용하여 픽셀 좌표 값을 나타낼 수 있다. 일부 구현예에서, 텐서 순회 유닛(120)은 픽셀 좌표들의 분수 부분들과 별개인 픽셀 좌표들의 정수 값들을 저장한다. 예를 들어, 도 1에 도시된 바와 같이, 텐서 순회 유닛(120)은 수직 픽셀 좌표의 정수 부분을 저장하는 수직 픽셀 좌표 정수 엘리먼트(132) 및 수직 픽셀 좌표의 분수 부분을 저장하는 수직 픽셀 좌표 분수 엘리먼트(134)를 포함한다. 유사하게, 텐서 순회 유닛(120)은 수평 픽셀 좌표의 정수 부분을 저장하는 수평 픽셀 좌표 정수 엘리먼트(136) 및 수평 픽셀 좌표의 분수 부분을 저장하는 수평 픽셀 좌표 분수 엘리먼트(138)를 포함한다. 각 엘리먼트(132-138)는 레지스터 또는 다른 저장 회로를 포함할 수 있다.
수직 보폭 및 수평 보폭의 정수 및 분수 부분은 또한 예를 들어 각각의 레지스터 또는 다른 저장 회로에 개별적으로 저장될 수 있다. 텐서 순회 유닛(120)이 수직 좌표를 업데이트할 때, 텐서 순회 유닛은 수직 보폭의 정수 부분을 수직 좌표의 정수 부분에 추가하고, 수직 보폭의 분수 부분을 수직 좌표의 분수 부분에 추가할 수 있다. 이 업데이트로 인해 수직 좌표의 분수 부분이 1보다 크거나 같을 때마다, 텐서 순회 유닛(120)은 수직 좌표의 정수 부분에 1의 값을 더하고, 수직 좌표의 분수 부분을 1보다 작게 유지하기 위해 수직 좌표의 분수 부분으로부터 1의 값을 뺀다.
유사하게, 텐서 순회 유닛(120)이 수평 좌표를 업데이트 할 때, 텐서 순회 유닛은 수평 보폭의 정수 부분을 수평 좌표의 정수 부분에 추가하고, 수평 보폭의 분수 부분을 수평 좌표의 분수 부분에 추가할 수 있다. 이 업데이트로 인해 수평 좌표의 분수 부분이 1보다 크거나 같을 때마다, 텐서 순회 유닛(120)은 수평 좌표의 정수 부분에 1의 값을 더하고, 수평 좌표의 분수 부분을 1보다 작게 유지하기 위해 수평 좌표의 분수 부분으로부터 1의 값을 뺀다.
도 2는 이미지에 대한 이중선형보간을 나타내는 도면(200)이다. 도면(200)은 입력 이미지에 대한 픽셀 레이아웃(210) 및 입력 이미지의 변환된 버전("변환된 이미지")에 대한 픽셀 레이아웃(220)을 포함한다. 각 레이아웃(200, 210)의 각 사각형은 픽셀을 나타낸다. 이 예에서, 입력 이미지는 10픽셀의 수평 픽셀 디멘션 및 10픽셀의 수직 픽셀 디멘션을 갖는다. 유사하게, 변환된 이미지는 7픽셀의 수평 픽셀 디멘션 및 7픽셀의 수직 픽셀 디멘션이다. 예를 들어, 기계 학습 모델은 7픽셀의 수평 픽셀 디멘션 및 7픽셀의 수직 픽셀 디멘션을 갖는 이미지를 프로세싱하도록 구성될 수 있다.
입력 이미지를 변환하기 위해, 변환된 이미지의 각 픽셀에 대해 입력 이미지 내의 픽셀 좌표들의 세트가 식별된다. 예를 들어, 포인트(212)에서의 픽셀 좌표는 변환된 이미지의 좌측 상단 픽셀(222)에 대해 식별되었다. 유사하게, 포인트(213)에서의 픽셀 좌표는 픽셀(222)의 우측에서 픽셀(223)에 대해 식별되었다.
변환된 이미지의 각 픽셀에 대한 픽셀 값을 결정하기 위해, 픽셀에 대한 픽셀 좌표에 가장 가까운 4개의 픽셀이 소스 픽셀로 식별된다. 픽셀(222)에 대해, 픽셀 좌표(212)에 가장 가까운 4개의 픽셀은 픽셀(215a, 215b, 215c 및 215d)이다. 픽셀(221)에 대한 픽셀 값은 소스 픽셀(215a-215d)에 대한 픽셀 값의 가중치화된 조합일 수 있다. 각 소스 픽셀에 대한 가중치는 포인트(212)의 픽셀 좌표로부터 소스 픽셀의 거리에 기초할 수 있다. 예를 들어, 포인트(212)에 더 가까운 소스 픽셀에 대한 픽셀 값은 포인트(212)로부터 더 멀리있는 소스 픽셀에 대한 픽셀 값보다 더 가중치화될 수 있다. 이 예에서, 소스 픽셀(215a)에 대한 픽셀 값은 소스 픽셀(215c)에 대한 픽셀 값보다 더 높은 가중치가 할당될 것이다. 변환된 이미지에 대한 픽셀 좌표, 변환된 이미지의 각 픽셀에 대한 4개의 소스 픽셀, 및 각 소스 픽셀의 픽셀 값에 대한 가중치를 결정하기 위한 예시적 기법이 후술된다.
도 3은 이미지 데이터에 대한 메모리 주소를 결정하기 위한 예시적 프로세스(300)를 도시하는 흐름도이다. 프로세스(300)는 하나 이상의 컴퓨터들의 시스템 예를 들어, 도 1의 컴퓨팅 시스템(102)의 시스템에 의해 수행될 수 있다. 시스템은 텐서 순회 유닛, 예를 들어 도 1의 텐서 순회 유닛(120)을 포함한다.
시스템은 이미지에 대한 이미지 데이터를 수신한다(302). 예를 들어, 텐서 순회 유닛은 이미지 데이터를 수신할 수 있다. 이미지 데이터는 이미지의 디멘션들을 특정할 수 있다. 이미지의 디멘션들은 수평 픽셀 디멘션과 수직 픽셀 디멘션을 특정할 수 있다. 수평 픽셀 디멘션은 이미지의 수평 디멘션을 따른 픽셀들의 수이다. 수직 픽셀 디멘션은 이미지의 수직 디멘션을 따른 픽셀들의 수이다. 예를 들어, 높이 500 픽셀, 폭 400 픽셀인 이미지의 수직 픽셀 디멘션은 500이고 수평 픽셀 디멘션은 400이다.
시스템은 이미지의 디멘션들이 기계 학습 모델의 특정한 디멘션들과 일치하지 않는다고 결정한다(304). 예를 들어, 기계 학습 모델은 특정한 디멘션들을 갖는 이미지를 프로세싱(예를 들어, 분류)하도록 구성될 수 있다. 특정한 디멘션들은 특정한 수직 픽셀 디멘션 및 특정한 수평 픽셀 디멘션을 특정할 수 있다. 텐서 순회 유닛은 이미지의 디멘션들을 기계 학습 모델의 특정한 디멘션들과 비교할 수 있다. 이미지의 수직 픽셀 디멘션이 기계 학습 모델의 특정한 수직 픽셀 디멘션과 일치하지 않거나 이미지의 수평 픽셀 디멘션이 기계 학습 모델의 특정한 수평 픽셀 디멘션과 일치하지 않으면, 텐서 순회 유닛은 이미지의 디멘션들이 기계 학습 모델의 특정한 디멘션들과 일치하지 않는다고 결정할 수 있다.
시스템은 이미지에 대한 수평 픽셀 보폭(stride) 및 수직 픽셀 보폭을 결정한다(306). 수평 픽셀 보폭 및 수직 픽셀 보폭은 이미지의 변환된 버전의 각각의 변환된 픽셀에 대한 이미지 내의 픽셀 좌표를 식별하는데 사용된다.
텐서 순회 유닛은 이미지의 디멘션들 및 기계 학습 모델의 특정한 디멘션들에 기초하여 수평 픽셀 보폭 및 수직 픽셀 보폭을 결정할 수 있다. 일부 구현예에서, 보폭은 아래의 관계 1 및 2를 사용하여 결정된다:
(1)
Figure pct00001
(2)
Figure pct00002
일부 구현예에서, 텐서 순회 유닛은 텐서 순회 유닛의 각각의 저장 회로들, 예를 들어 레지스터들에 수평 보폭 및 수직 보폭을 저장한다. 전술한 바와 같이, 보폭은 고정 소수점 수로 저장될 수 있고, 각 보폭의 정수 부분은 보폭의 분수 부분과 별도로 저장될 수 있다. 이 예에서, 보폭의 분수 부분은 각 보폭을 저장하는데 사용되는 비트 수를 사용하여 표현될 수 있는 가장 가까운 고정 소수점 수로 반올림될 수 있다. 예를 들어, 이미지의 디멘션이 10x10이고, 기계 학습 모델의 특정한 디멘션이 7x7이면, 수평 보폭은 1.375이고 수직 보폭은 1.375이다. 분수 부분을 저장하는 레지스터가 7비트이거나 분수 부분의 고정 소수점 수가 7비트를 포함하는 경우, 분수 부분(0.375)은 48/128로 반올림될 수 있다.
시스템은 이미지의 변환된 버전에 대한 픽셀 좌표를 결정한다(308). 텐서 순회 유닛은 수평 및 수직 픽셀 보폭을 사용하여 픽셀 좌표를 결정할 수 있다. 예를 들어, 전술한 바와 같이, 텐서 순회 유닛은 픽셀 좌표를 결정하기 위해 보폭 값을 픽셀 좌표의 현재 값에 더함으로써 픽셀 값을 결정하기 위해 루프 중첩을 사용할 수 있다. 예를 들어, 픽셀 좌표를 결정하기 위해 루프 및 보폭을 사용하는 프로세스가 도 4에 도시되고, 아래에서 상세하게 설명된다.
시스템은 각각의 식별된 픽셀 좌표에 대한 하나 이상의 메모리 주소를 결정한다(310). 각각의 픽셀 좌표에 대한 메모리 주소들은 픽셀 좌표에 대한 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값을 저장하기 위한 저장 매체에서의 위치에 대응한다. 텐서 순회 유닛은 수직 좌표 및 수평 좌표의 값에 기초하여 픽셀 좌표에 대한 메모리 주소를 결정할 수 있다. 픽셀 좌표들의 세트 각각에 대한 메모리 주소(들)를 결정하기 위한 예시적 기법이 도 4 내지 도 5를 참조하여 아래에 설명된다.
도 4는 이미지 데이터에 대한 메모리 주소를 결정하기 위한 다른 예시적 프로세스(400)를 도시하는 흐름도이다. 프로세스(400)는 하나 이상의 컴퓨터들의 시스템 예를 들어, 도 1의 컴퓨팅 시스템(102)의 시스템에 의해 수행될 수 있다. 시스템은 텐서 순회 유닛, 예를 들어 도 1의 텐서 순회 유닛(120)을 포함한다.
시스템은 입력 이미지에 대한 초기 픽셀 좌표를 결정한다(402). 초기 픽셀 좌표는 이미지의 변환된 버전의 변환된 픽셀에 대한 이미지 내의 픽셀 좌표이다. 초기 픽셀 좌표는 이미지의 수평 디멘션을 따른 수평 좌표 및 이미지의 수직 디멘션을 따른 수직 좌표를 포함한다. 예를 들어, 변환된 픽셀들에 대한 픽셀 좌표들이 좌측에서 우측으로 그리고 위에서 아래로 결정된다면, 초기 픽셀 좌표는 이미지의 좌측 상단 근처에 있을 수 있다. 다른 예에서, 초기 픽셀 좌표는 이미지의 우측 하단 또는 다른 적절한 위치 근처에 있을 수 있다.
일부 구현예에서, 텐서 순회 유닛은 수평 픽셀 보폭 및/또는 수직 픽셀 보폭에 기초하여 초기 픽셀 좌표를 결정한다. 텐서 순회는 상기 관계 1 및 2를 각각 사용하여 수평 픽셀 보폭 및 수직 픽셀 보폭을 결정할 수 있다. 텐서 순회 유닛은 아래의 관계 3과 4를 사용하여 초기 수평 좌표와 초기 수직 좌표를 결정할 수 있다.
(3)
Figure pct00003
(4)
Figure pct00004
시스템은 초기 수평 좌표를 하나 이상의 하드웨어 저장 회로에 저장한다(404). 하드웨어 저장 회로는 텐서 순회 유닛의 저장 회로, 예를 들어 레지스터일 수 있다. 예를 들어, 텐서 순회 유닛은 초기 수평 좌표의 정수 부분을 수평 픽셀 좌표 정수 엘리먼트(예를 들어, 도 1의 수평 픽셀 좌표 정수 엘리먼트(136))에 저장하고, 수평 좌표의 분수 부분을 수평 픽셀 좌표 분수 엘리먼트(예를 들어, 도 1의 수평 픽셀 좌표 분수 엘리먼트(138))에 저장한다.
시스템은 초기 수직 좌표를 하나 이상의 하드웨어 저장 회로에 저장한다(406). 하드웨어 저장 회로는 텐서 순회 유닛의 저장 회로, 예를 들어 레지스터일 수 있다. 예를 들어, 텐서 순회 유닛은 초기 수직 좌표의 정수 부분을 수직 픽셀 좌표 정수 엘리먼트(예를 들어, 도 1의 수직 픽셀 좌표 정수 엘리먼트(132))에 저장하고, 수직 좌표의 분수 부분을 수직 픽셀 좌표 분수 엘리먼트(예를 들어, 도 1의 수평 픽셀 좌표 분수 엘리먼트(138))에 저장한다.
시스템은 픽셀 좌표에 대한 하나 이상의 메모리 주소를 결정한다(406). 제1 반복을 위해, 텐서 순회 유닛은 초기 픽셀 좌표에 대한 하나 이상의 메모리 주소를 결정할 수 있다. 후술하는 바와 같이, 픽셀 좌표는 이미지의 수평 및 수직 디멘션을 순회하는데 사용되는 루프의 각 반복에 대해 업데이트된다. 업데이트된 각각의 픽셀 좌표에 대해, 텐서 순회 유닛은 하나 이상의 메모리 주소를 결정할 수 있다.
각 메모리 주소는 픽셀 값을 저장하기 위한 저장 매체에서의 위치에 대응한다. 메모리 주소는 프로세싱 유닛, 예를 들어 도 1의 프로세싱 유닛(114)에 의해 사용되어, 픽셀 값을 로드하거나 저장한다. 예를 들어, 프로세싱 유닛은 픽셀 값에 대한 메모리 주소를 사용하여 픽셀 값을 획득하고, 픽셀 값에 기초하여 기계 학습 모델에 대한 입력을 생성할 수 있다. 가장 가까운 이웃 구현예에서, 생성된 입력은 픽셀 값 자체일 수 있다. 이중선형보간 구현예에서, 생성된 입력은 4개의 픽셀 값의 가중치화된 조합일 수 있다.
가장 가까운 이웃 구현예에서, 픽셀 좌표에 대한 메모리 주소는 픽셀 좌표에 가장 가까운(예를 들어, 가장 가까운 이웃) 입력 이미지 내에 픽셀의 픽셀 값을 저장하기 위한 저장 매체에서의 위치에 대응한다. 메모리 주소는 픽셀 좌표의 수직 좌표 및 수평 좌표에 기초할 수 있다. 예를 들어, 텐서 순회 유닛은 수평 좌표에 기초하여 제1 부분 주소 값을, 수직 좌표에 기초하여 제2 부분 주소 값을 결정할 수 있다.
일부 구현예에서, 제1 부분 주소 값은 수평 좌표 및 제3 디멘션(예를 들어, z 디멘션)의 크기에 기초한다. 제3 디멘션은 픽셀의 색을 표현하는데 사용되는 컬러 값의 수에 기초할 수 있다. 예를 들어, 그레이 스케일 값을 사용하는 경우, 제3 디멘션의 크기는 1일 수 있다. RGB 색상 값이 사용되는 경우, 제3 디멘션의 크기는 1(예를 들어, 3개의 색상 값 모두가 동일한 메모리 주소에 저장되는 경우) 또는 3(예를 들어, 각 색상 값이 개별적으로 저장되는 경우)일 수 있다. 수평 좌표는 분수 부분을 포함할 수 있으므로, 수평 좌표의 값은 반올림될 수 있다. 예를 들어, 텐서 순회 유닛은 0.5의 값이 0으로 반올림되는 0을 향한 반올림(round half towards zero) 기법을 사용하여 수평 좌표를 반올림할 수 있다. 제1 부분 주소 값은 반올림된 수평 좌표와 제3 디멘션의 크기의 곱에 기초할 수 있다.
유사하게, 제2 부분 주소 값은 수직 좌표 및 수평 디멘션의 크기(예를 들어, 이미지의 수평 디멘션을 따른 픽셀의 수)와 제3 디멘션의 크기의 곱에 기초할 수 있다. 수직 좌표는 또한 분수 부분을 포함할 수 있기 때문에, 수직 좌표의 값은 또한 예를 들어, 0을 향한 반올림 기법을 사용하여 반올림될 수 있다. 제2 부분 주소 값은 반올림된 수직 좌표 및 수평 디멘션의 크기와 제3 디멘션의 크기의 곱의 곱에 기초할 수 있다. 이를 통해 각 픽셀 좌표의 세트에 고유한 메모리 주소가 할당된다.
픽셀 좌표에 대한 메모리 주소는 제1 부분 주소 값과 제2 부분 주소 값의 합에 기초할 수 있다. 예를 들어, 메모리 주소는 제1 부분 주소 값, 제2 부분 주소 값 및 기본 주소의 합과 동일할 수 있다.
이중선형보간 구현예에서, 텐서 순회 유닛은 픽셀 좌표에 기초하여 4개의 메모리 주소들을 결정할 수 있다. 각 메모리 주소는 입력 이미지에서 픽셀 좌표의 위치에 가장 가까운 입력 이미지에서 4개의 소스 픽셀 중 하나의 픽셀 값(들)을 저장하기 위한 저장 매체에서의 위치에 대응한다. 예를 들어, 4개의 소스 픽셀은 픽셀 좌표의 위치의 좌측 아래에 있는 좌측 아래 픽셀, 픽셀 좌표의 위치의 우측 아래에 우측 아래 픽셀, 픽셀 좌표의 위치의 좌측 위에 있는 좌측 위 픽셀, 픽셀 좌표의 위치의 우측 위에 있는 우측 위 픽셀을 포함할 수 있다. 4개의 메모리 주소를 결정하기 위한 예시적 프로세스가 도 5에 도시되어 있고, 아래에 설명된다.
시스템은 수평 좌표의 현재 값을 업데이트하고, 이미지의 수평 디멘션을 순회하는데 사용되는 루프에 대한 루프 인덱스를 업데이트한다(410). 일부 구현예에서, 루프 인덱스를 업데이트하기 위해, 시스템은 루프 인덱스의 이전 값에 1의 값을 추가함으로써 루프 인덱스를 반복할 수 있다. 일부 구현예에서, 수평 좌표는 루프 인덱스로서 사용되며, 따라서 수평 좌표가 업데이트될 때 업데이트된다.
수평 좌표를 업데이트하기 위해, 텐서 순회 유닛은 수평 보폭을 수평 좌표의 현재 값에 추가하고, 수평 좌표의 업데이트된 값을 저장할 수 있다. 루프의 제1 반복의 경우, 텐서 순회 유닛은 수평 보폭을 초기 수평 좌표에 추가한다.
수평 좌표의 정수 부분과 분수 부분이 별도로 저장되면, 텐서 순회 유닛은 수평 픽셀 보폭의 정수 부분을 수평 좌표의 정수 부분에 추가할 수 있다. 유사하게, 텐서 순회 유닛은 수평 픽셀 보폭의 분수 부분을 수평 좌표의 분수 부분에 추가할 수 있다. 이것이 수평 좌표의 분수 부분을 1보다 크거나 같게 하면, 텐서 순회 유닛은 수평 좌표의 정수 부분에 1을 더하고, 수평 좌표의 분수 부분에서 1을 빼서, 분수 부분이 1보다 작게 유지되도록 한다.
시스템은 이미지의 수평 디멘션을 순회하는데 사용되는 루프의 루프 인덱스가 그 바운드보다 크거나 같은지를 결정한다(412). 바운드는 변환된 이미지의 수평 픽셀들의 수에 기초할 수 있다. 예를 들어, 기계 학습 모델의 특정한 디멘션이 7픽셀의 수평 디멘션을 갖는 경우, 루프는 7개의 반복을 포함하여 이미지의 각 수평 행에서 7개의 픽셀들에 대한 좌표들 및 메모리 주소들이 결정될 수 있다. 예를 들어, 루프 인덱스는 0에서 시작하고 바운드는 6일 수 있다. 루프 인덱스가 6의 값에 도달하면, 시스템은 루프 인덱스가 그 바운드와 같은지 결정할 수 있다.
수평 디멘션을 순회하는데 사용된 루프에 대한 루프 인덱스가 그 바운드보다 크거나 같지 않으면, 시스템은 동작(408)으로 돌아가고, 이전 수직 좌표 및 업데이트된 수평 좌표를 포함하는 업데이트 픽셀 좌표에 대한 하나 이상의 메모리 주소들을 결정한다. 수평 디멘션을 순회하는데 사용된 루프의 루프 인덱스가 그 바운드보다 크거나 같으면, 시스템은 수평 좌표 값을 초기 수평 좌표로 재설정하고, 수평 디멘션을 그것의 초기 값까지 순회하는데 사용된 루프에 대한 루프 인덱스를 재설정한다(414).
시스템은 수직 좌표의 현재 값을 업데이트하고, 이미지의 수직 디멘션을 순회하는데 사용되는 루프에 대한 루프 인덱스를 업데이트한다(416). 일부 구현예에서, 루프 인덱스를 업데이트하기 위해, 시스템은 루프 인덱스의 이전 값에 1의 값을 추가함으로써 루프 인덱스를 반복할 수 있다. 일부 구현예에서, 수직 좌표는 루프 인덱스로서 사용되며, 따라서 수직 좌표가 업데이트될 때 업데이트된다.
수직 좌표를 업데이트하기 위해, 텐서 순회 유닛은 수직 보폭을 수직 좌표의 현재 값에 추가하고, 수직 좌표의 업데이트된 값을 저장할 수 있다. 루프의 제1 반복의 경우, 텐서 순회 유닛은 수직 보폭을 초기 수직 좌표에 추가한다.
수직 좌표의 정수 부분과 분수 부분이 별도로 저장되면, 텐서 순회 유닛은 수직 픽셀 보폭의 정수 부분을 수직 좌표의 정수 부분에 추가할 수 있다. 유사하게, 텐서 순회 유닛은 수직 픽셀 보폭의 분수 부분을 수직 좌표의 분수 부분에 추가할 수 있다. 이것이 수직 좌표의 분수 부분을 1보다 크거나 같게 하면, 텐서 순회 유닛은 수직 좌표의 정수 부분에 1을 더하고, 수직 좌표의 분수 부분에서 1을 빼서, 분수 부분이 1보다 작게 유지되도록 한다.
시스템은 이미지의 수직 디멘션을 순회하는데 사용되는 루프의 루프 인덱스가 그 바운드보다 크거나 같은지를 결정한다(418). 바운드는 변환된 이미지의 수직 픽셀들의 수에 기초할 수 있다. 예를 들어, 기계 학습 모델의 특정한 디멘션이 7픽셀의 수직 디멘션을 갖는 경우, 루프는 7개의 반복을 포함하여 이미지의 각 수직 열에서 7개의 픽셀들에 대한 좌표들 및 메모리 주소들이 결정될 수 있다. 예를 들어, 루프 인덱스는 0에서 시작하고 바운드는 6일 수 있다. 루프 인덱스가 6의 값에 도달하면, 시스템은 루프 인덱스가 그 바운드와 같은지 결정할 수 있다.
수직 디멘션을 순회하는데 사용된 루프에 대한 루프 인덱스가 그 바운드보다 크거나 같지 않으면, 시스템은 동작(408)으로 돌아가고, 업데이트된 수직 좌표 및 재설정된 수평 좌표(초기 수평 좌표)를 포함하는 업데이트 픽셀 좌표에 대한 하나 이상의 메모리 주소들을 결정한다. 이것은 수평 디멘션에 대한 루프를 사용하여 이미지의 수평 디멘션을 따라 다른 행의 순회를 시작한다.
수평 디멘션을 순회하는데 사용된 루프에 대한 루프 인덱스가 그 바운드보다 크거나 같으면, 프로세스(400)는 변환된 이미지의 각 변환된 픽셀에 대해 하나 이상의 메모리 주소가 결정되면 종료된다.
텐서 순회 유닛은 주소들이 예를 들어 순차적으로 결정될 때 각 메모리 주소를 프로세싱 유닛으로 출력할 수 있다. 일부 구현예에서, 텐서 순회 유닛은 각 변환된 픽셀에 대한 메모리 주소(들)가 결정된 후에 메모리 주소들을 출력할 수 있다. 프로세싱 유닛은 메모리 주소를 사용하여 픽셀 값을 로드 또는 저장할 수 있다.
이 예에서, 이미지의 수평 디멘션을 순회하는데 사용되는 루프는 입력 이미지의 수직 디멘션을 순회하는데 사용되는 루프 내에 중첩된다. 다음 루프 중첩을 사용하여 입력 이미지에 대한 메모리 주소를 결정할 수 있다:
for (coord_y = intitial_y; coord_y <= size_y - 1);
coord_y += stride_y;
second_partial_address_value = Round(coord_y) * size_xz;
for (coord_x = initial_x; coord_x <= size_x - 1);
coord_x += stride_x;
first_partial_address_value = Round(coord_x) * size_z;
memory_address = first_partial_address_value + second_partial_address_value.
이 예에서, initial_y는 초기 수직 좌표이고, coord_y는 수직 좌표의 현재 값이며, size_y는 입력 이미지의 수직 디멘션을 따른 픽셀들의 수이다. 따라서, 외부 루프는 이미지의 수직 디멘션을 따른 픽셀들의 수보다 적은 1과 동일한 루프 바운드를 가지며, 루프 인덱스는 수직 좌표의 현재 값이다. 외부 루프의 각 반복 후에, 수직 좌표의 현재 값은 수직 픽셀 보폭을 수직 좌표의 현재 값에 추가함으로써 업데이트된다. 또한, 제2 부분 주소 값(second_partial_address_value)은 수직 좌표의 현재 값을 반올림하고(예를 들어, 가장 가까운 이웃에 대한 0을 향한 반올림 또는 이중선형보간을 위한 플로어 함수를 사용하여), 반올림된 값에 이미지의 수평 디멘션의 크기와 제3 디멘션의 크기의 곱을 곱함으로써 결정된다.
유사하게, initial_x는 수평 좌표의 초기 값이고, coord_x는 수평 좌표의 현재 값이며, size_x는 이미지의 수평 디멘션을 따른 픽셀들의 수이다. 따라서, 내부 루프는 이미지의 수평 디멘션을 따른 픽셀들의 수보다 적은 1과 동일한 루프 바운드를 가지며, 루프 인덱스는 수평 좌표의 현재 값이다. 내부 루프의 각 반복 후에, 수평 좌표의 현재 값은 수평 픽셀 보폭을 수평 좌표의 현재 값을 추가함으로써 업데이트된다. 또한, 제1 부분 주소 값(first_partial_address_value)은 수평 좌표의 현재 값을 반올림하고(예를 들어, 가장 가까운 이웃에 대한 0을 향한 반올림 또는 이중선형보간에 대한 좌표와 작거나 같은 가장 큰 정수를 출력하는 플로어 함수를 사용하여), 반올림된 값에 제3 디멘션의 크기를 곱함으로써 결정된다.
메모리 주소(memory_address)는 또한 내부 루프의 각 반복에 대한 픽셀 좌표에 대해 결정된다. 가장 근접한 이웃 구현예의 경우, 메모리 주소는 제1 부분 주소 값, 제2 부분 주소 값 및 선택적으로 기본 주소의 합과 같을 수 있다. 이중선형보간 구현예의 경우, 수직 및 수평 오프셋 값을 사용하여 아래 설명된 대로 4개의 메모리 주소를 결정할 수 있다.
도 5는 이미지 데이터에 대한 메모리 주소 및 이중선형보간에 대한 가중치를 결정하기 위한 예시적 프로세스(500)를 나타내는 흐름도이다. 프로세스(500)는 하나 이상의 컴퓨터들의 시스템 예를 들어, 도 1의 컴퓨팅 시스템(102)의 시스템에 의해 수행될 수 있다. 시스템은 텐서 순회 유닛, 예를 들어 도 1의 텐서 순회 유닛(120)을 포함한다. 프로세스(500)의 동작(또는 그 일부)은 이중선형보간이 입력 이미지를 변화하는데 사용되는 경우 도 4의 동작(408)의 서브 동작일 수 있다.
시스템은 입력 이미지 내에서 수평 좌표의 현재 값을 식별한다(502). 예를 들어, 전술한 바와 같이, 루프는 입력 이미지의 수평 디멘션을 순회하고, 이미지의 변환된 버전의 변환된 픽셀에 대한 픽셀 좌표의 수평 좌표를 업데이트하는 것을 결정하는데 사용될 수 있다. 루프의 각 반복에서, 수평 좌표의 현재 값은 예를 들어 수평 픽셀 보폭을 수평 좌표의 이전 값에 추가함으로써 업데이트될 수 있다. 텐서 순회 유닛은 하나 이상의 하드웨어 저장 회로에서 수평 좌표의 현재 값을 유지할 수 있다.
시스템은 입력 이미지 내에서 수직 좌표의 현재 값을 식별한다(504). 예를 들어, 전술한 바와 같이, 루프는 입력 이미지의 수직 디멘션을 순회하고, 이미지의 변환된 버전의 변환된 픽셀에 대한 픽셀 좌표의 수직 좌표를 업데이트하는 것을 결정하는데 사용될 수 있다. 루프의 각 반복에서, 수직 좌표의 현재 값은 예를 들어 수직 픽셀 보폭을 수직 좌표의 이전 값에 추가함으로써 업데이트될 수 있다. 텐서 순회 유닛은 하나 이상의 하드웨어 저장 회로에서 수직 좌표의 현재 값을 유지할 수 있다.
시스템은 수평 오프셋 값을 식별한다(506). 메모리 주소가 입력 이미지의 수평 디멘션을 순회하는데 사용되는 루프가 입력 이미지의 수직 디멘션을 순회하는데 사용되는 루프 내에 중첩되는 y-major x-minor 루프 중첩을 사용하여 결정되는 구현예에서, 수평 오프셋 값은 입력 이미지에 대한 제3 디멘션의 크기(예: 각 픽셀을 표현하는데 사용되는 컬러 값들의 수)에 기초할 수 있다 예를 들어, 수평 오프셋 값은 1일 수 있다.
시스템은 수직 오프셋 값을 식별한다(508). 구현예에서, 메모리 주소가 y-major, x-minor 루프 중첩을 사용하여 결정되는 경우, 수직 오프셋 값은 수평 디멘션의 크기와 제3 디멘션의 크기의 조합에 기초할 수 있다. 예를 들어, 수직 오프셋 값은 수평 디멘션을 따라 입력 이미지의 픽셀들의 수의 곱에 기초할 수 있다.
x-major y-minor 루프 중첩이 사용되는 경우, 수평 오프셋 값은 수직 디멘션의 크기(예: 입력 이미지의 수직 디멘션을 따른 픽셀들의 수)와 제3 디멘션의 크기의 곱과 같을 수 있다. 유사하게, 수직 오프셋 값은 제3 디멘션의 크기일 수 있다.
시스템은 4개의 픽셀 좌표들 각각에 대한 각각의 메모리 주소를 결정한다(510). 4개의 픽셀 좌표는 입력 이미지에서 4개의 소스 픽셀들에 대응하며, 여기서 픽셀의 값들은 이미지의 변환된 버전에서 변환된 픽셀의 픽셀 값을 결정하는데 사용될 것이다. 변환된 픽셀은 수평 좌표의 현재 값 및 수직 좌표의 현재 값에 의해 정의된 픽셀 좌표에서 입력 이미지의 픽셀을 나타내는 변환된 이미지의 픽셀이다.
4개의 픽셀들은 입력 이미지에서 픽셀 좌표의 위치에 가장 가까운 4개의 픽셀들일 수 있다. 예를 들어, 4개의 소스 픽셀은 픽셀 좌표의 위치의 좌측 아래에 있는 좌측 아래 픽셀, 픽셀 좌표의 위치의 우측 아래에 우측 아래 픽셀, 픽셀 좌표의 위치의 좌측 위에 있는 좌측 위 픽셀, 픽셀 좌표의 위치의 우측 위에 있는 우측 위 픽셀을 포함할 수 있다.
4개의 메모리 주소들 각각은 픽셀 좌표 및 하나 이상의 오프셋 값들에 기초할 수 있다. 예를 들어, 텐서 순회 유닛은 4개의 메모리 주소들 각각을 결정하는데 사용되는 제1 부분 주소 값 및 제2 부분 주소 값을 결정할 수 있다. 상술한 가장 근접한 이웃 구현예와 유사하게, 제1 부분 주소 값은 수평 좌표 및 제3 디멘션의 크기(예를 들어, z 디멘션)에 기초할 수 있다. 수평 좌표는 분수 부분을 포함할 수 있으므로, 수평 좌표의 값은 반올림될 수 있다. 예를 들어, 텐서 순회 유닛은 수평 좌표보다 작거나 같은 가장 큰 정수를 출력하는 플로어 함수를 사용하여 수평 좌표를 반올림할 수 있다. 제1 부분 주소 값은 반올림된 수평 좌표와 제3 디멘션의 크기의 곱에 기초할 수 있다. 이미지의 경우, z 디멘션의 크기는 1이므로, 제1 부분 주소 값은 수평 좌표의 반올림 값과 같다.
유사하게, 제2 부분 주소 값은 수직 좌표 및 수평 디멘션의 크기와 제3 디멘션의 크기의 곱에 기초할 수 있다. 수직 좌표는 또한 분수 부분을 포함할 수 있으므로, 수직 좌표의 값은 또한 예를 들어 플로어 함수를 사용하여 반올림될 수 있다. 제2 부분 주소 값은 반올림된 수직 좌표 및 수평 디멘션의 크기와 제3 디멘션의 크기의 곱의 곱에 기초할 수 있다. 이미지의 경우, z 디멘션의 크기는 1이므로, 제2 부분 주소 값은 수직 좌표의 반올림 된 값과 수평 디멘션의 크기의 곱과 같다.
텐서 순회 유닛은 루프 중첩을 사용하여 제1 부분 주소 값 및 제2 부분 주소 값에 기초하여 4개의 메모리 주소를 결정할 수 있다. 예를 들어, 다음과 같은 루프 중첩을 사용할 수 있다:
for (offset_y = 0; offset_y <= size_xz);
offset_y += size_xz);
for (offset_x = 0; offset_x <= size_z);
offset_x += size_z;
memory address = (first partial address value + second partial address value + offset_y + offset_x).
이 예시적 루프 중첩에서, offset_y는 수직 오프셋 값이고, offset_x는 수평 오프셋 값이다. 추가로, size_xz는 수평 디멘션의 크기와 제3 디멘션의 크기(예: 제3 디멘션의 크기가 1인 경우 수평 디멘션의 크기)의 곱이며, size_z는 제3 디멘션의 크기다. 루프 중첩은 4개의 메모리 주소들 생성할 것이다: (1) 제1 부분 주소 값 + 제2 부분 주소 값 + 0 + 0; (2) 제1 부분 주소 값 + 제2 부분 주소 값 + 0 + size_z; (3) 제1 부분 주소 값 + 제2 부분 주소 값 + size_xz + 0; 및 (4) 제1 부분 주소 값 + 제2 부분 주소 값 + size_xz + size_x). 이 루프 중첩은 4개의 픽셀 값들에 대한 4개의 메모리 주소들을 결정하기 위한 이중선형보간 구현예에 대해 상기 기술된 픽셀 좌표들을 결정하기 위해 루프 내에 중첩될 수 있다.
시스템은 4개의 소스 픽셀들 각각에 대한 각각의 가중치를 결정한다(512). 각 소스 픽셀에 대한 가중치는 수평 좌표의 현재 값의 분수 부분 및/또는 수직 좌표의 현재 값의 분수 부분에 기초하여 결정될 수 있다. 루프 중첩을 사용하여 분수 부분을 사용하여 가중치를 결정할 수 있다. 루프 중첩은 메모리 주소들을 결정하는데 사용되는 루프 중첩과 병렬로 수행될 수 있다. 이러한 방식으로, 텐서 순회 유닛은 픽셀 값에 액세스하기 위한 메모리 주소 및 픽셀 값에 대응하는 가중치를 함께 또는 연속적으로 출력할 수 있어, 일단 프로세싱 유닛이 4개의 소스 픽셀 모두에 대한 픽셀 값 및 가중치를 갖도록 하고, 프로세싱 유닛은 픽셀 값 및 가중치를 사용하여, 기계 학습 모델로의 입력을 위해 변환된 픽셀에 대한 픽셀 값을 생성할 수 있다. 다음 루프 중첩을 사용하여 가중치를 결정할 수 있다.
for (coord_y = intitial_y; coord_y <= size_y - 1);
coord_y += stride_y;
for (coord_x = initial_x; coord_x <= size_x - 1);
coord_x += stride_x;
for (yy = 0; yy<= 1);
yy += 1;
for (xx = 0; xx<= 1);
xx += 1;
if (xx == 0 & yy == 0);
weight_x = 1 - fractional_portion (coord_x);
weight_y = 1 - fractional_portion (coord_y);
if (xx == 1 & yy == 0);
weight_x = fractional_portion (coord_x);
weight_y = 1 - fractional_portion (coord_y);
if (xx == 0 & yy == 1);
weight_x = 1 - fractional_portion (coord_x);
weight_y = fractional_portion (coord_y);
if (xx == 1 & yy == 1);
weight_x = fractional_portion (coord_x);
weight_y = fractional_portion (coord_y);
이 예에서, 수평 좌표(coord_x) 및 수직 좌표(coord_y)를 결정하기 위한 외부 루프는 상기 메모리 주소들을 결정하는데 사용된 루프 중첩과 동일한 루프 바운드(size_y - 1 및 size_y - 1)와 루프 인덱스(coord_y 및 coord_x)를 사용한다. 이것은 이미지의 변환된 버전의 각각의 변환된 픽셀 좌표에 대해 4개의 가중치가 결정되는 것을 보장한다.
yy 및 xx에 대한 두 개의 내부 루프는 두 개의 내부 루프의 인덱스 값에 기초하여 4개의 가중치를 결정하는데 사용된다. yy에 대한 루프는 두 번 반복될 것이다(yy = 0에 대해 한 번, yy = 1에 대해 한 번). 유사하게, xx에 대한 루프는 두 번 반복될 것이다(xx = 0에 대해 한 번, xx = 1에 대해 한 번). 따라서 변환된 픽셀 좌표 각각에 대한 내부 루프의 4개 상태는 (xx = 0, yy = 0), (xx = 1, yy = 0), (xx = 0, yy = 1) 및 (xx = 1, yy = 1)일 것이다. 각 상태마다 다른 가중치가 결정되고, 각 상태의 가중치는 가중치가 해당 픽셀 값에 적용될 입력 이미지 내의 픽셀에 대응한다.
이 예에서, 제1 상태(xx = 0, yy = 0)는 픽셀 좌표 위치의 좌측 아래에 있는 좌측 아래 소스 픽셀에 대한 가중치를 결정하는데 사용된다. 좌측 아래 소스 픽셀에 대한 가중치는 수평 좌표의 현재 값의 분수 부분에서 1을 뺀 것과 같은 수평 가중치와 수직 좌표의 현재 값의 분수 부분에서 1을 뺀 것과 같은 수직 가중치를 포함한다.
제2 상태(xx = 1, yy = 0)는 픽셀 좌표 위치의 우측 아래에 있는 우측 아래 소스 픽셀에 대한 가중치를 결정하는데 사용된다. 우측 아래 소스 픽셀에 대한 가중치는 수평 좌표의 현재 값의 분수 부분과 동일한 수평 가중치 및 수직 좌표의 현재 값의 분수 부분에서 1을 뺀 것과 동일한 수직 가중치를 포함한다.
제3 상태(xx = 0, yy = 1)는 픽셀 좌표 위치 좌측 위에 있는 좌측 위 소스 픽셀에 대한 가중치를 결정하는데 사용된다. 좌측 위 소스 픽셀에 대한 가중치는 수평 좌표의 현재 값의 분수 부분에서 1을 뺀 것과 같은 수평 가중치와 수직 좌표의 현재 값의 분수 부분과 같은 수직 가중치를 포함한다.
제4 상태(xx = 1, yy = 1)는 픽셀 좌표 위치의 우측 위에 있는 우측 위 소스 픽셀에 대한 가중치를 결정하는데 사용된다. 우측 위 소스 픽셀에 대한 가중치는 수평 좌표의 현재 값의 분수 부분과 동일한 수평 가중치 및 수직 좌표의 현재 값의 분수 부분과 동일한 수직 가중치를 포함한다.
이들 계산을 사용하여, 각 소스 픽셀에 대한 수평 가중치는 소스 픽셀과 픽셀 좌표의 현재 수평 좌표 사이의 수평 거리에 반비례한다. 유사하게, 각 소스 픽셀에 대한 수직 가중치는 소스 픽셀과 픽셀 좌표의 현재 수직 좌표 사이의 수직 거리에 반비례한다.
텐서 순회 유닛은 픽셀 좌표에 대한 4개의 가중치를 프로세싱 유닛에 출력한다. 그 다음, 프로세싱 유닛은 각 소스 픽셀에 대한 픽셀 값 및 그것의 대응하는 가중치를 사용하여, 수평 좌표의 현재 값 및 수직 좌표의 현재 값에 의해 정의된 픽셀 좌표에 대응하는 변환된 픽셀에 대한 픽셀 값을 결정할 수 있다.
예를 들어, 프로세싱 유닛은 아래의 관계 5를 사용하여 변환된 좌표에 대한 픽셀 값을 결정할 수 있다:
(5) pixel_value = ((weightx0y0 * pixel_valuex0y0) +
(weightx1y0 *pixel_valuex1y0) +
(weightx0y1 * pixel_valuex0y1) +
(weightx1y1 *pixel_valuex1y1))
관계 5에서, pixel_valuex0y0은 좌측 아래 소스 픽셀의 픽셀 값이고, weightx0y0은 좌측 아래 소스 픽셀에 대한 수평 가중치와 좌측 아래 소스 픽셀에 대한 수직 가중치의 곱이다. 유사하게, pixel_valuex1y0은 우측 아래 소스 픽셀의 픽셀 값이고, weightx0y0은 우측 아래 소스 픽셀의 수평 가중치와 우측 아래 소스 픽셀의 수직 가중치의 곱이며; pixel_valuex0y1은 좌측 위 소스 픽셀의 픽셀 값이고, weightx0y1은 좌측 위 소스 픽셀의 수평 가중치와 우측 위 소스 픽셀의 수직 가중치의 곱이며; pixel_valuex1y1은 우측 위 소스 픽셀의 픽셀 값이고, weightx1y1은 좌측 위 소스 픽셀에 대한 수평 가중치와 우측 위 소스 픽셀에 대한 수직 가중치의 곱이다.
프로세싱 유닛은 관계 5를 사용하여 입력 이미지의 변환된 버전의 각각의 변환된 픽셀에 대한 픽셀 값을 결정할 수 있다. 그레이 스케일 값이 각 픽셀의 컬러를 나타내는데 사용될 때, 프로세싱 유닛은 관계 5를 사용하여 각 픽셀에 대한 단일 그레이 스케일 픽셀 값을 결정할 수 있다. RBG 값이 각 픽셀의 컬러를 나타내는데 사용될 때, 프로세싱 유닛은 관계 5를 사용하여 픽셀의 각 RGB 컬러에 대한 값을 개별적으로 결정할 수 있다. 각 컬러 값의 가중치는 동일하다. 예를 들어, 프로세싱 유닛은 관계 5를 사용하여, 가중치들 및 4개의 소스 픽셀 각각에 대한 적색 값을 사용하여 변환된 픽셀에 대한 적색 값을 결정할 수 있다. 프로세싱 유닛은 또한 관계 5를 사용하여, 가중치들 및 각 소스 픽셀에 대한 청색 값을 사용하여 변환된 픽셀에 대한 청색 값을 결정하고, 관계 5를 사용하여, 가중치들 및 각 소스 픽셀에 대한 녹색 값을 사용하여 변환된 픽셀에 대한 녹색 값을 결정할 수 있다.
그 다음, 프로세싱 유닛은 이미지의 변환된 버전과 동일한 형상을 갖는 이미지를 프로세싱하도록 구성된 기계 학습 모델에 입력으로서 픽셀 값을 제공할 수 있다. 기계 학습 모델의 출력은 입력 이미지의 변환된 버전을 사용하는 입력 이미지의 분류일 수 있다.
본 발명의 실시예들과 본 명세서에 기술된 기능적 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는, 디지털 전자회로에서, 유형적으로 수록된 컴퓨터 소프트웨어 또는 펌웨어에서, 컴퓨터 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다. 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 유형적 비일시적인 프로그램 캐리어에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 기계 판독가능 저장 디바이스, 기계 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스 또는 그들 중 하나 이상의 조합일 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 컴퓨터들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA(field programmable gate array), ASIC(application specific integrated circuit) 또는 GPGPU(General purpose graphics processing unit)와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로 또는 일부 다른 유형의 프로세서로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 컴퓨터들은 예시로서, 일반적 또는 특수 목적 마이크로프로세서들 또는 둘 모두, 또는 임의의 기타 종류의 중앙 프로세싱 유닛을 포함하거나 이에 기초할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들을 수행하거나 실행하기 위한 중앙 프로세싱 유닛 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 몇 가지만 나열하면, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다.
컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체는 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정한 발명의 특정한 실시예에 특정적일 수 있는 구성들에 대한 설명으로 해석되어야 한다. 별개의 실시예의 컨텍스트에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 컨텍스트에서 기술된 다양한 구성들은 또한 다수의 실시예에서 개별적으로 또는 임의의 적합한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 실시예에서 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다.
본 발명의 특정한 실시예들이 기술되었다. 다른 실시예들도 다음의 청구항들의 범위 내에 있다. 예를 들면, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 일 예시로서, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다. 특정 구현예에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다.

Claims (20)

  1. 기계 학습 모델 및 이미지들에 대한 픽셀 값들을 사용하여 이미지들에 대한 기계 학습 계산을 수행하도록 구성된 프로세싱 유닛, 상기 기계 학습 모델은 특정한 디멘션들을 갖는 이미지들을 프로세싱하도록 구성되며;
    이미지들에 대한 픽셀 값들을 저장하도록 구성된 저장 매체; 및
    하나 이상의 하드웨어 프로세서들을 포함하는 메모리 주소 계산 유닛을 포함하며, 상기 메모리 주소 계산 유닛은:
    이미지에 대한 이미지 데이터를 수신하고, 상기 이미지 데이터는 상기 이미지의 디멘션들을 특정하며, 상기 이미지의 디멘션들은 수평 픽셀 디멘션 및 수직 픽셀 디멘션을 특정하며, 상기 수평 픽셀 디멘션은 상기 이미지의 수평 디멘션을 따르는 픽셀들의 수이며, 상기 수직 픽셀 디멘션은 상기 이미지의 수직 디멘션을 따르는 픽셀들의 수이며;
    상기 이미지의 디멘션들이 상기 특정한 디멘션들과 일치하지 않는다는 것을 결정하고;
    상기 이미지의 디멘션들이 상기 특정한 디멘션들과 일치하지 않는다는 결정에 응답하여:
    상기 이미지의 디멘션들 및 상기 특정한 디멘션들에 기초하여, 상기 이미지에 대한 수평 픽셀 보폭 및 수직 픽셀 보폭을 결정하고; 그리고
    상기 수평 픽셀 보폭 및 수직 픽셀 보폭을 사용하여, 상기 입력 이미지의 변환된 버전에 대한 복수의 픽셀 좌표들을 결정하고, 각각의 픽셀 좌표는 수직 좌표 및 수평 좌표를 포함하고;
    상기 복수의 픽셀 좌표들 각각에 대해, 상기 픽셀 좌표에 대한 상기 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값들을 저장하기 위한 하나 이상의 메모리 주소들을 상기 저장 매체에 결정하고, 상기 각 픽셀 좌표에 대한 상기 하나 이상의 메모리 주소들은 상기 픽셀 좌표의 상기 수직 좌표 및 상기 수평 좌표에 기초하며; 그리고
    각 메모리 주소를 상기 프로세싱 유닛에 출력하도록 구성되는, 시스템.
  2. 청구항 1에 있어서, 상기 프로세싱 유닛은 각 메모리 주소를 사용하여 상기 메모리 주소에 저장된 픽셀 값에 액세스하고, 상기 메모리 주소에 저장된 상기 픽셀 값에 기초하여 기계 학습 계산을 수행하는, 시스템.
  3. 청구항 1 또는 2에 있어서,
    상기 메모리 계산 유닛은:
    상기 수평 좌표의 현재 값을 저장하기 위한 하나 이상의 제1 하드웨어 저장 회로; 및
    상기 수직 좌표의 현재 값을 저장하기 위한 하나 이상의 제2 하드웨어 저장 회로를 포함하며;
    상기 하나 이상의 프로세서는:
    초기 수평 좌표 및 초기 수직 좌표를 포함하는 초기 픽셀 좌표를 결정하고;
    상기 하나 이상의 제1 하드웨어 저장 회로에 상기 초기 수평 좌표를 저장하고;
    상기 하나 이상의 제2 하드웨어 저장 회로에 상기 초기 수직 좌표를 저장하고;
    제1 루프의 각 반복 이후에 상기 수평 픽셀 보폭을 상기 수평 좌표의 현재 값에 추가함으로써 상기 이미지의 수평 픽셀 디멘션을 순회하는데 사용되는 제1 루프의 각 반복에 대한 상기 수평 좌표의 현재 값을 업데이트하고; 그리고
    제2 루프의 각 반복 이후에 상기 수직 픽셀 보폭을 상기 수직 좌표의 현재 값에 추가함으로써 상기 이미지의 수직 픽셀 디멘션을 순회하는데 사용되는 제2 루프의 각 반복에 대한 상기 수직 좌표의 현재 값을 업데이트함으로써, 상기 이미지에 대한 상기 복수의 픽셀 좌표들을 결정하는, 시스템.
  4. 청구항 3에 있어서, 각 픽셀 좌표에 대해 상기 결정된 메모리 주소는 상기 픽셀 좌표에 가장 가까운 이웃 픽셀에 대한 픽셀 값을 저장하기 위한 저장 매체에서의 위치에 대응하고, 각각의 가장 가까운 이웃 픽셀에서 픽셀 값은 상기 기계 학습 모델에 대한 입력으로서 상기 프로세싱 유닛에 의해 사용되는, 시스템.
  5. 청구항 3 또는 4에 있어서, 상기 픽셀 좌표에 대한 상기 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값들을 저장하기 위한 하나 이상의 메모리 주소들을 상기 저장 매체에 결정하는 것은:
    상기 제1 루프 또는 상기 제2 루프의 각 반복에 대해:
    상기 하나 이상의 제1 하드웨어 저장 회로에 저장된 상기 수평 좌표의 현재 값을 식별하는 것;
    상기 하나 이상의 제2 하드웨어 저장 회로에 저장된 상기 수직 좌표의 현재 값을 식별하는 것; 및
    상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 기초하여, 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 메모리 주소를 결정하는 것을 포함하는, 시스템.
  6. 청구항 5에 있어서, 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 메모리 주소를 결정하는 것은:
    상기 수평 좌표의 현재 값과 제1 디멘션 승수(multiplier)의 곱(product)에 기초하여 제1 부분 주소 값을 결정하는 것;
    상기 수직 좌표의 현재 값과 제2 디멘션 승수의 곱에 기초하여 제2 부분 주소 값을 결정하는 것; 및
    상기 제1 부분 주소 값과 제2 부분 주소 값의 합을 결정함으로써 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 상기 메모리 주소를 결정하는 것을 포함하는, 시스템.
  7. 청구항 6에 있어서, 상기 수평 좌표의 현재 값 및 상기 수직 좌표의 현재 값에 대응하는 상기 픽셀 좌표에 대한 상기 메모리 주소는 상기 제1 부분 주소 값, 상기 제2 부분 주소 값 및 기본 메모리 주소의 합과 동일한, 시스템.
  8. 청구항 3 내지 7 중 어느 한 항에 있어서, 상기 제1 루프는 상기 제2 루프 내에 중첩되거나 상기 제2 루프는 상기 제1 루프 내에 중첩되는, 시스템.
  9. 청구항 3 내지 8 중 어느 한 항에 있어서, 상기 픽셀 좌표에 대한 상기 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값들을 저장하기 위한 하나 이상의 메모리 주소들을 상기 저장 매체에서 결정하는 것은, 상기 픽셀 좌표에 대한 픽셀 값의 이중선형보간(bilinear interpolation)에 사용하기 위해 4개의 픽셀 좌표들 각각에 대한 각각의 메모리 주소를 결정하는 것을 포함하며,
    상기 제1 루프 또는 상기 제2 루프의 각 반복에 대해:
    상기 하나 이상의 제1 하드웨어 저장 회로에 저장된 상기 수평 좌표의 현재 값을 식별하는 것;
    상기 하나 이상의 제2 하드웨어 저장 회로에 저장된 상기 수직 좌표의 현재 값을 식별하는 것;
    수직 오프셋 값을 식별하는 것;
    수평 오프셋 값을 식별하는 것;
    상기 4개의 픽셀 좌표들 중 제1 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값과 상기 수직 좌표의 현재 값의 합에 기초하여 상기 제1 픽셀 좌표에 대한 제1 픽셀 값을 저장하기 위한 제1 메모리 주소를 결정하는 것;
    상기 4개의 픽셀 좌표들 중 제2 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값, 상기 수직 좌표의 현재 값 및 상기 수직 오프셋 값의 합에 기초하여 상기 제2 픽셀 좌표에 대한 제2 픽셀 값을 저장하기 위한 제2 메모리 주소를 결정하는 것;
    상기 4개의 픽셀 좌표들 중 제3 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값, 상기 수직 좌표의 현재 값 및 상기 수평 오프셋 값의 합에 기초하여 상기 제3 픽셀 좌표에 대한 제3 픽셀 값을 저장하기 위한 제3 메모리 주소를 결정하는 것; 및
    상기 4개의 픽셀 좌표들 중 제4 픽셀 좌표에 대해, 상기 수평 좌표의 현재 값, 상기 수직 좌표의 현재 값, 상기 수직 오프셋 값 및 상기 수평 오프셋 값의 합에 기초하여 상기 제4 픽셀 좌표에 대한 제4 픽셀 값을 저장하기 위한 제4 메모리 주소를 결정하는 것을 포함하는, 시스템.
  10. 청구항 9에 있어서, 상기 수직 오프셋 값은 적어도 상기 이미지에서 수평 픽셀들의 수에 기초하며, 상기 수평 오프셋 값은 1인, 시스템.
  11. 청구항 9 또는 10에 있어서,
    상기 하나 이상의 프로세서들은 상기 4개의 픽셀 좌표들 각각에 대한 이중선형보간 가중치를 결정하고, 각 가중치를 상기 프로세싱 유닛에 출력하고; 그리고
    상기 프로세싱 유닛은 상기 4개의 픽셀 좌표들 각각에서의 픽셀 값 및 상기 4개의 픽셀 좌표들 각각에 대한 가중치를 사용하여 상기 기계 학습 모델에 대한 입력 픽셀 값을 결정하는, 시스템.
  12. 청구항 11에 있어서, 상기 4개의 픽셀 좌표들 각각에 대한 상기 가중치는 상기 픽셀 좌표의 수평 좌표의 분수 부분(fractional portion) 및 상기 픽셀 좌표의 수직 좌표의 분수 부분에 기초하는, 시스템.
  13. 선행하는 청구항들 중 어느 한 항에 있어서, 상기 프로세싱 유닛은:
    상기 복수의 픽셀 좌표들 각각에 대해, 상기 픽셀 좌표들에 대한 상기 하나 이상의 메모리 주소들에 저장된 상기 픽셀 값들로부터 하나 이상의 컬러 값들을 결정함으로써 상기 기계 학습 모델에 대한 상기 입력을 생성하고; 그리고
    기계 학습 출력을 생성하기 위해 상기 기계 학습 모델을 사용하여 상기 생성된 입력을 프로세싱하도록 구성되는, 시스템.
  14. 하나 이상의 하드웨어 프로세서들에 의해 수행되는 방법으로서,
    이미지에 대한 이미지 데이터를 수신하는 단계, 상기 이미지 데이터는 상기 이미지의 디멘션들을 특정하며, 상기 이미지의 디멘션들은 수평 픽셀 디멘션 및 수직 픽셀 디멘션을 특정하며, 상기 수평 픽셀 디멘션은 상기 이미지의 수평 디멘션을 따르는 픽셀들의 수이며, 상기 수직 픽셀 디멘션은 상기 이미지의 수직 디멘션을 따르는 픽셀들의 수이며;
    기계 학습 모델이 프로세싱하도록 구성된 상기 이미지의 디멘션들이 이미지들의 특정한 디멘션들과 일치하지 않는다고 결정하는 단계;
    상기 이미지의 디멘션들이 상기 특정한 디멘션들과 일치하지 않는다는 결정에 응답하여:
    상기 이미지의 디멘션들 및 상기 특정한 디멘션들에 기초하여, 상기 이미지에 대한 수평 픽셀 보폭 및 수직 픽셀 보폭을 결정하는 단계; 및
    상기 수평 픽셀 보폭 및 수직 픽셀 보폭을 사용하여, 상기 입력 이미지의 변환된 버전에 대한 복수의 픽셀 좌표들을 결정하는 단계, 각각의 픽셀 좌표는 수직 좌표 및 수평 좌표를 포함하고;
    상기 복수의 픽셀 좌표들 각각에 대해, 상기 픽셀 좌표에 대한 상기 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값들을 저장하기 위한 하나 이상의 메모리 주소들을 상기 저장 매체에 결정하는 단계, 상기 각 픽셀 좌표에 대한 상기 메모리 주소는 상기 픽셀 좌표의 상기 수직 좌표 및 상기 수평 좌표에 기초하며; 및
    상기 기계 학습 모델을 사용하여 이미지들에 대한 기계 학습 계산을 수행하도록 구성된 프로세싱 유닛에 각 메모리 주소를 출력하는 단계를 포함하는, 방법.
  15. 청구항 14에 있어서, 상기 프로세싱 유닛은 각 메모리 주소를 사용하여 상기 메모리 주소에 저장된 픽셀 값에 액세스하고, 상기 메모리 주소에 저장된 상기 픽셀 값에 기초하여 기계 학습 계산을 수행하는, 방법.
  16. 청구항 14 또는 청구항 15에 있어서, 상기 이미지에 대한 상기 복수의 픽셀 좌표들을 결정하는 단계는:
    초기 수평 좌표 및 초기 수직 좌표를 포함하는 초기 픽셀 좌표를 결정하는 것;
    하나 이상의 제1 하드웨어 저장 회로에 상기 초기 수평 좌표를 저장하는 것;
    하나 이상의 제2 하드웨어 저장 회로에 상기 초기 수직 좌표를 저장하는 것;
    상기 이미지의 상기 수평 픽셀 디멘션을 순회하는데 사용된 제1 루프의 각 반복에 대해 상기 수평 좌표의 현재 값을 업데이트하는 것, 상기 업데이트는 상기 제1 루프의 각 반복 이후에 상기 수평 픽셀 보폭을 상기 수평 좌표의 현재 값에 추가하고, 상기 수직 좌표의 현재 값에 대한 각 업데이트에 대해, 상기 하나 이상의 제1 하드웨어 저장 회로에 상기 수평 좌표의 현재 값을 저장함으로써 이루어지며;
    상기 이미지의 상기 수직 픽셀 디멘션을 순회하는데 사용된 제2 루프의 각 반복에 대해 상기 수직 좌표의 현재 값을 업데이트하는 것을 포함하며, 상기 업데이트는 상기 제2 루프의 각 반복 이후에 상기 수직 픽셀 보폭을 상기 수직 좌표의 현재 값에 추가하고, 상기 수평 좌표의 현재 값에 대한 각 업데이트에 대해, 상기 하나 이상의 제2 하드웨어 저장 회로에 상기 수직 좌표의 현재 값을 저장함으로써 이루어지는, 방법.
  17. 청구항 16에 있어서, 각 픽셀 좌표에 대해 상기 결정된 메모리 주소는 상기 픽셀 좌표에 가장 가까운 이웃 픽셀에 대한 픽셀 값을 저장하기 위한 저장 매체에서의 위치에 대응하고, 각각의 가장 가까운 이웃 픽셀에서 픽셀 값은 상기 기계 학습 모델에 대한 입력으로서 상기 프로세싱 유닛에 의해 사용되는, 방법.
  18. 장치로서:
    이미지에 대한 수평 좌표의 현재 값을 저장하기 위한 하나 이상의 제1 하드웨어 저장 회로; 및
    이미지에 대한 수직 좌표의 현재 값을 저장하기 위한 하나 이상의 제2 하드웨어 저장 회로;
    하나 이상의 하드웨어 프로세서를 포함하며, 상기 하나 이상의 하드웨어 프로세서는:
    상기 이미지에 대한 이미지 데이터를 수신하고, 상기 이미지 데이터는 상기 이미지의 디멘션들을 특정하며, 상기 이미지의 디멘션들은 수평 픽셀 디멘션 및 수직 픽셀 디멘션을 특정하며, 상기 수평 픽셀 디멘션은 상기 이미지의 수평 디멘션을 따르는 픽셀들의 수이며, 상기 수직 픽셀 디멘션은 상기 이미지의 수직 디멘션을 따르는 픽셀들의 수이며;
    기계 학습 모델이 프로세싱하도록 구성된 상기 이미지의 디멘션들이 이미지들의 특정한 디멘션들과 일치하지 않는다고 결정하고;
    상기 이미지의 디멘션들이 상기 특정한 디멘션들과 일치하지 않는다는 결정에 응답하여:
    상기 이미지의 디멘션들 및 상기 특정한 디멘션들에 기초하여, 상기 이미지에 대한 수평 픽셀 보폭 및 수직 픽셀 보폭을 결정하고;
    상기 수평 픽셀 보폭 및 수직 픽셀 보폭을 사용하여, 상기 입력 이미지의 변환된 버전에 대한 복수의 픽셀 좌표들을 결정하고, 각각의 픽셀 좌표는 수직 좌표 및 수평 좌표를 포함하고;
    상기 하나 이상의 제1 하드웨어 저장 회로에 상기 수평 좌표를 저장하고; 그리고
    상기 하나 이상의 제2 하드웨어 저장 회로에 상기 수직 좌표를 저장하고;
    상기 복수의 픽셀 좌표들 각각에 대해, 상기 픽셀 좌표에 대한 상기 기계 학습 모델에 대한 입력을 생성하는데 사용될 하나 이상의 픽셀 값들을 저장하기 위한 하나 이상의 메모리 주소들을 상기 저장 매체에 결정하고, 상기 각 픽셀 좌표에 대한 상기 메모리 주소는 상기 픽셀 좌표의 상기 수직 좌표 및 상기 수평 좌표에 기초하며; 그리고
    상기 기계 학습 모델을 사용하여 이미지들에 대한 기계 학습 계산을 수행하도록 구성된 프로세싱 유닛에 각 메모리 주소를 출력하도록 구성되는, 장치.
  19. 청구항 18에 있어서, 상기 프로세싱 유닛은 각 메모리 주소를 사용하여 상기 메모리 주소에 저장된 픽셀 값에 액세스하고, 상기 메모리 주소에 저장된 상기 픽셀 값에 기초하여 기계 학습 계산을 수행하는, 장치.
  20. 청구항 18 또는 청구항 19에 있어서, 상기 이미지에 대한 상기 복수의 픽셀 좌표들을 결정하는 것은:
    초기 수평 좌표 및 초기 수직 좌표를 포함하는 초기 픽셀 좌표를 결정하는 것;
    상기 하나 이상의 제1 하드웨어 저장 회로에 상기 초기 수평 좌표를 저장하고;
    상기 하나 이상의 제2 하드웨어 저장 회로에 상기 초기 수직 좌표를 저장하고;
    상기 이미지의 상기 수평 픽셀 디멘션을 순회하는데 사용된 제1 루프의 각 반복에 대해 상기 수평 좌표의 현재 값을 업데이트하는 것, 상기 업데이트는 상기 제1 루프의 각 반복 이후에 상기 수평 픽셀 보폭을 상기 수평 좌표의 현재 값에 추가하고, 상기 수직 좌표의 현재 값에 대한 각 업데이트에 대해, 상기 하나 이상의 제1 하드웨어 저장 회로에 상기 수평 좌표의 현재 값을 저장함으로써 이루어지며;
    상기 이미지의 상기 수직 픽셀 디멘션을 순회하는데 사용된 제2 루프의 각 반복에 대해 상기 수직 좌표의 현재 값을 업데이트하는 것을 포함하며, 상기 업데이트는 상기 제2 루프의 각 반복 이후에 상기 수직 픽셀 보폭을 상기 수직 좌표의 현재 값에 추가하고, 상기 수평 좌표의 현재 값에 대한 각 업데이트에 대해, 상기 하나 이상의 제2 하드웨어 저장 회로에 상기 수직 좌표의 현재 값을 저장함으로써 이루어지는, 장치.
KR1020207022145A 2018-01-31 2019-01-30 기계 학습을 위한 이미지 변환 KR102445872B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227032191A KR20220132659A (ko) 2018-01-31 2019-01-30 기계 학습을 위한 이미지 변환

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/885,178 2018-01-31
US15/885,178 US10373291B1 (en) 2018-01-31 2018-01-31 Image transformation for machine learning
PCT/US2019/015770 WO2019152466A1 (en) 2018-01-31 2019-01-30 Image transformation for machine learning

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227032191A Division KR20220132659A (ko) 2018-01-31 2019-01-30 기계 학습을 위한 이미지 변환

Publications (2)

Publication Number Publication Date
KR20200100190A true KR20200100190A (ko) 2020-08-25
KR102445872B1 KR102445872B1 (ko) 2022-09-21

Family

ID=65441078

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227032191A KR20220132659A (ko) 2018-01-31 2019-01-30 기계 학습을 위한 이미지 변환
KR1020207022145A KR102445872B1 (ko) 2018-01-31 2019-01-30 기계 학습을 위한 이미지 변환

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227032191A KR20220132659A (ko) 2018-01-31 2019-01-30 기계 학습을 위한 이미지 변환

Country Status (6)

Country Link
US (2) US10373291B1 (ko)
EP (3) EP4254313A3 (ko)
JP (2) JP2021516382A (ko)
KR (2) KR20220132659A (ko)
CN (2) CN111656390B (ko)
WO (1) WO2019152466A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102412373B1 (ko) 2021-10-29 2022-06-23 주식회사 딥노이드 다중 시점 X-ray 데이터를 활용한 3D 데이터 생성 장치 및 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936942B2 (en) * 2017-11-21 2021-03-02 Google Llc Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies
US10373291B1 (en) 2018-01-31 2019-08-06 Google Llc Image transformation for machine learning
US11443176B2 (en) * 2018-05-17 2022-09-13 International Business Machines Corporation Acceleration of convolutional neural networks on analog arrays
CN113538252B (zh) * 2020-04-17 2024-03-26 嘉楠明芯(北京)科技有限公司 图像矫正方法以及装置
CN111951217B (zh) * 2020-07-07 2022-01-14 北京鹰瞳科技发展股份有限公司 模型训练方法、医疗图像处理方法及电子设备
CN111984189B (zh) * 2020-07-22 2022-05-17 深圳云天励飞技术股份有限公司 神经网络计算装置和数据读取、数据存储方法及相关设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140147334A (ko) * 2013-06-19 2014-12-30 삼성전자주식회사 이미지 센서의 단위 픽셀 및 이를 포함하는 이미지 센서
KR20160058611A (ko) * 2014-11-17 2016-05-25 삼성전자주식회사 이미지 센서가 생성한 픽셀 이미지의 불량 화소 제거 방법, 상기 방법을 이용한 이미지 센서, 및 상기 방법을 이용한 애플리케이션 프로세서

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59100974A (ja) * 1982-12-01 1984-06-11 Nec Corp 画像処理装置
US4942621A (en) 1988-11-15 1990-07-17 Msc Technologies, Inc. Method for mapping scanned pixel data
JP2845946B2 (ja) 1989-06-14 1999-01-13 株式会社日立製作所 画像データ変換装置
US5193126A (en) 1990-01-25 1993-03-09 Toyo Ink Mfg. Co., Ltd. Image deformation method and apparatus using coordinate transformation
US5113455A (en) * 1990-02-27 1992-05-12 Eastman Kodak Company Digital image scaling by stepwise pixel movement
US5745739A (en) 1996-02-08 1998-04-28 Industrial Technology Research Institute Virtual coordinate to linear physical memory address converter for computer graphics system
US5949429A (en) 1996-11-14 1999-09-07 Microsoft Corporation Method for performing pixel addressing operations for a tiled image
US5870077A (en) * 1997-02-26 1999-02-09 Hewlett-Packard Company Method for tristimulus color data non-linear storage, retrieval, and interpolation
US6195737B1 (en) 1998-03-23 2001-02-27 Ati Technologies Inc. Method and apparatus for relative addressing of tiled data
JP3596590B2 (ja) * 1998-11-18 2004-12-02 ソニー株式会社 付随情報付加装置および方法、付随情報検出装置および方法
US6667745B1 (en) 1999-12-22 2003-12-23 Microsoft Corporation System and method for linearly mapping a tiled image buffer
US6930688B1 (en) * 2000-11-16 2005-08-16 Lsi Logic Corporation Generator of graphics in computer system
FR2837607B1 (fr) * 2002-03-25 2004-06-11 Thomson Licensing Sa Dispositif d'affichage numerique d'une image video
EP2259215B1 (en) * 2009-06-04 2016-08-10 Honda Research Institute Europe GmbH Method and structure for a neural associative memory based on optimal Bayesian learning
US8442321B1 (en) * 2011-09-14 2013-05-14 Google Inc. Object recognition in images
JP5963431B2 (ja) * 2011-12-06 2016-08-03 キヤノン株式会社 画像形成装置及び画像表示方法、並びにプログラム
JP6161266B2 (ja) * 2012-11-27 2017-07-12 キヤノン株式会社 情報処理装置及びその制御方法及び電子デバイス及びプログラム及び記憶媒体
US10073721B2 (en) * 2014-08-20 2018-09-11 The Florida International University Board Of Trustees Non-blocking writes to file data
JP2016058018A (ja) * 2014-09-12 2016-04-21 キヤノン株式会社 画像処理方法、画像処理プログラムおよび画像処理装置
US10387804B2 (en) * 2014-09-30 2019-08-20 BoonLogic Implementations of, and methods of use for a pattern memory engine applying associative pattern memory for pattern recognition
US10013652B2 (en) * 2015-04-29 2018-07-03 Nuance Communications, Inc. Fast deep neural network feature transformation via optimized memory bandwidth utilization
US9934153B2 (en) * 2015-06-30 2018-04-03 Nvidia Corporation Patch memory system
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
US10248908B2 (en) 2017-06-19 2019-04-02 Google Llc Alternative loop limits for accessing data in multi-dimensional tensors
US10373291B1 (en) 2018-01-31 2019-08-06 Google Llc Image transformation for machine learning

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140147334A (ko) * 2013-06-19 2014-12-30 삼성전자주식회사 이미지 센서의 단위 픽셀 및 이를 포함하는 이미지 센서
KR20160058611A (ko) * 2014-11-17 2016-05-25 삼성전자주식회사 이미지 센서가 생성한 픽셀 이미지의 불량 화소 제거 방법, 상기 방법을 이용한 이미지 센서, 및 상기 방법을 이용한 애플리케이션 프로세서

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jason Clemons et al., "A patch memory system for image processing and computer vision", DOI: 10.1109/MICRO.2016.7783754, *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102412373B1 (ko) 2021-10-29 2022-06-23 주식회사 딥노이드 다중 시점 X-ray 데이터를 활용한 3D 데이터 생성 장치 및 방법

Also Published As

Publication number Publication date
US11170469B2 (en) 2021-11-09
WO2019152466A1 (en) 2019-08-08
EP4254313A3 (en) 2023-12-20
CN116933891A (zh) 2023-10-24
JP2023109847A (ja) 2023-08-08
EP3734543A1 (en) 2020-11-04
CN111656390B (zh) 2023-07-07
CN111656390A (zh) 2020-09-11
EP3583575B1 (en) 2020-07-01
KR102445872B1 (ko) 2022-09-21
KR20220132659A (ko) 2022-09-30
US10373291B1 (en) 2019-08-06
US20190236755A1 (en) 2019-08-01
US20200027195A1 (en) 2020-01-23
EP3734543B1 (en) 2023-11-15
JP2021516382A (ja) 2021-07-01
EP3583575A1 (en) 2019-12-25
EP4254313A2 (en) 2023-10-04

Similar Documents

Publication Publication Date Title
KR102445872B1 (ko) 기계 학습을 위한 이미지 변환
US11922132B2 (en) Information processing method and terminal device
JP7279226B2 (ja) 代替ループ限界値
US10997496B2 (en) Sparse convolutional neural network accelerator
CN107454966B (zh) 用于神经网络处理器的预取权重
CN107341547B (zh) 一种用于执行卷积神经网络训练的装置和方法
KR20190090858A (ko) 데이터 관리를 위한 시스템들 및 방법들
US10496326B2 (en) Hardware double buffering using a special purpose computational unit
KR20210045509A (ko) 가산기를 이용한 다차원 텐서의 데이터 액세스
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
JP7387017B2 (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
US11636569B1 (en) Matrix transpose hardware acceleration

Legal Events

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