Search

KR-102960943-B1 - 이미지들 간의 픽셀들의 모션 컴퓨팅

KR102960943B1KR 102960943 B1KR102960943 B1KR 102960943B1KR-102960943-B1

Abstract

이미지의 구역 내의 하나 이상의 픽셀의 모션을 계산하기 위한 장치들, 시스템들, 및 기법들. 적어도 하나의 실시예에서, 모션은, 상기 구역과 중첩되는 상기 이미지의 상이한 구역 내의 하나 이상의 픽셀의 모션에 기반하여 계산되며, 여기서, 하나 이상의 알고리즘은, 예컨대 GPU 상에서의 효율적인 실행을 위한 CUDA 코드로 표현된다.

Inventors

  • 파라샤, 비풀
  • 장, 동
  • 미쉬라, 삼푸르나난다

Assignees

  • 엔비디아 코포레이션

Dates

Publication Date
20260506
Application Date
20210609

Claims (20)

  1. 프로세서로서, 이미지의 제1 구역과 중첩되는 상기 이미지의 제2 구역 내의 하나 이상의 픽셀의 모션에 적어도 부분적으로 기반하여 상기 제1 구역 내의 하나 이상의 픽셀의 모션을 계산하는 하나 이상의 회로를 포함하고, 상기 하나 이상의 회로는 추가로, 상기 이미지 및 흐름 맵을 획득하고 - 상기 흐름 맵은 상기 이미지 및 제2 이미지에 적어도 부분적으로 기반하여 계산됨 -; 상기 제2 구역 내의 하나 이상의 픽셀의 서브세트가 픽셀 그룹을 형성하게 하고 - 상기 하나 이상의 픽셀의 서브세트는 강도 및 구배 중 적어도 하나에 대응하는 하나 이상의 특성을 공유함 -; 상기 흐름 맵에 기반하여, 상기 픽셀 그룹이 하나 이상의 유효 픽셀 또는 하나 이상의 무효 픽셀을 포함하는지 여부를 표시하기 위한 연산을 수행하고; 상기 하나 이상의 유효 픽셀을 사용하여, 상기 픽셀 그룹의 하나 이상의 무효 픽셀을 유효 픽셀들로 반복적으로 변환하는, 프로세서.
  2. 삭제
  3. 제1항에 있어서, 상기 하나 이상의 회로는 추가로, 상기 제2 구역으로부터의 하나 이상의 유효 픽셀을 사용하여, 상기 제1 구역 내의 하나 이상의 무효 픽셀을 하나 이상의 유효 픽셀로 반복적으로 변환하고; 상기 변환에 적어도 부분적으로 기반하여 제2 흐름 맵을 생성하도록 흐름 맵을 업데이트하는, 프로세서.
  4. 제3항에 있어서, 상기 하나 이상의 회로는 추가로, 상기 제2 흐름 맵의 하나 이상의 행 또는 하나 이상의 열을 순회(traverse)하고, 상기 하나 이상의 행 또는 상기 하나 이상의 열 내의 하나 이상의 유효 픽셀을 사용하여 하나 이상의 무효 픽셀을 유효 픽셀들로 변환함으로써 상기 제2 흐름 맵을 업데이트하는, 프로세서.
  5. 제1항에 있어서, 상기 하나 이상의 회로는 추가로, 희소 광학 흐름 맵으로부터 밀집 광학 흐름 맵을 생성하는, 프로세서.
  6. 제5항에 있어서, 상기 하나 이상의 회로는 추가로, 상기 밀집 광학 흐름 맵에 중간값 필터를 적용하는, 프로세서.
  7. 시스템으로서, 이미지의 제1 구역과 중첩되는 상기 이미지의 제2 구역 내의 하나 이상의 픽셀의 모션에 적어도 부분적으로 기반하여 상기 제1 구역 내의 하나 이상의 픽셀의 모션을 계산하는 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 추가로, 상기 제2 구역 내의 하나 이상의 픽셀로부터 픽셀들의 서브세트를 식별하고 - 상기 픽셀들의 서브세트는 상기 이미지의 강도, 구배들, 및 깊이 중 적어도 하나에 적어도 부분적으로 기반하여 식별됨 -; 상기 이미지 및 제2 이미지에 대응하는 획득된 흐름 맵에 적어도 부분적으로 기반하여, 상기 픽셀들의 서브세트가 유효 픽셀을 포함하는지 여부를 표시하기 위한 연산을 수행하고; 상기 제2 구역 내의 픽셀들의 유효 서브세트를 생성하기 위해 상기 유효 픽셀을 사용하여 상기 픽셀들의 서브세트에 대한 광학 흐름을 보간하고; 상기 제1 구역 내의 픽셀들의 유효 서브세트를 생성하기 위해 상기 제2 구역 내의 픽셀들의 유효 서브세트를 사용하여 상기 제1 구역 내의 하나 이상의 픽셀에 대한 광학 흐름을 보간하는, 시스템.
  8. 삭제
  9. 제7항에 있어서, 상기 하나 이상의 프로세서는 추가로, 상기 제1 구역 내의 픽셀들의 유효 서브세트 및 상기 제2 구역 내의 픽셀들의 유효 서브세트에 적어도 부분적으로 기반하여 제2 흐름 맵을 생성하도록 흐름 맵을 업데이트하는, 시스템.
  10. 제7항에 있어서, 상기 하나 이상의 프로세서는 추가로, 상기 이미지의 상기 제2 구역 내의 픽셀들의 하나 이상의 행을 스캔하고; 보간된 광학 흐름 픽셀들을 생성하기 위해 상기 하나 이상의 행 내의 유효 픽셀들에 적어도 부분적으로 기반하여 상기 픽셀들의 하나 이상의 행 중의 픽셀들에 대한 광학 흐름을 보간하는, 시스템.
  11. 제7항에 있어서, 상기 하나 이상의 프로세서는 추가로, 상기 이미지의 상기 제2 구역 내의 픽셀들의 하나 이상의 열을 스캔하고; 보간된 광학 흐름 픽셀들을 생성하기 위해 상기 하나 이상의 열 내의 유효 픽셀들에 적어도 부분적으로 기반하여 상기 픽셀들의 하나 이상의 열 중의 픽셀들에 대한 광학 흐름을 보간하는, 시스템.
  12. 제7항에 있어서, 상기 하나 이상의 프로세서는 추가로, 프레임률 상향 변환, 비디오 인코딩, 로봇 항법, 또는 이미지 분류에서 사용하기 위해 상기 이미지의 상기 제1 구역 내의 하나 이상의 픽셀의 모션을 계산하는, 시스템.
  13. 하나 이상의 프로세서에 의해 수행되는 방법으로서, 이미지의 제1 구역과 중첩되는 상기 이미지의 제2 구역 내의 하나 이상의 픽셀의 모션에 적어도 부분적으로 기반하여 상기 제1 구역 내의 하나 이상의 픽셀의 모션을 계산하는 단계를 포함하고, 상기 이미지 및 후속 이미지에 대응하는 제1 흐름 맵을 획득하는 단계; 상기 제1 흐름 맵을 사용하여, 상기 이미지의 하나 이상의 픽셀의 유효성을 결정하는 단계; 상기 제2 구역 내의 하나 이상의 픽셀의 서브세트를 그룹화하는 단계; 상기 제1 흐름 맵을 사용하여, 상기 제2 구역 내의 상기 하나 이상의 픽셀의 서브세트 중의 유효 픽셀을 식별하는 단계; 및 상기 제2 구역 내의 상기 하나 이상의 픽셀의 서브세트에 대한 보간된 광학 흐름을 생성하기 위해, 상기 유효 픽셀에 적어도 부분적으로 기반하여 상기 제2 구역 내의 상기 하나 이상의 픽셀의 서브세트에 대한 광학 흐름을 보간하는 단계 를 더 포함하는, 방법.
  14. 삭제
  15. 제13항에 있어서, 상기 이미지의 제1 구역 내의 하나 이상의 픽셀의 모션을 계산하는 단계는, 상기 제2 구역 내의 상기 하나 이상의 픽셀의 서브세트에 대한 보간된 광학 흐름을 사용하여 상기 제1 구역 내의 하나 이상의 픽셀에 대한 광학 흐름을 보간하는 단계를 포함하는, 방법.
  16. 제13항에 있어서, 상기 이미지의 하나 이상의 픽셀의 유효성을 결정하기 위해 비용 함수를 적용하는, 방법.
  17. 제13항에 있어서, 상기 이미지의 상기 제1 구역 및 상기 제2 구역 내의 하나 이상의 픽셀의 계산된 모션에 적어도 부분적으로 기반하여, 업데이트된 흐름 맵을 생성하는 단계를 더 포함하는, 방법.
  18. 제17항에 있어서, 상기 업데이트된 흐름 맵을 정교화하기 위해 필터를 적용하는 단계를 더 포함하는, 방법.
  19. 명령어들의 세트를 저장한 기계 판독가능 매체로서, 상기 명령어들의 세트는, 하나 이상의 프로세서에 의해 수행되는 경우, 상기 하나 이상의 프로세서로 하여금, 적어도, 이미지의 제1 구역과 중첩되는 상기 이미지의 제2 구역 내의 하나 이상의 픽셀의 모션에 적어도 부분적으로 기반하여 상기 제1 구역 내의 하나 이상의 픽셀의 모션을 계산하게 하고, 상기 명령어들의 세트는, 상기 하나 이상의 프로세서에 의해 수행되는 경우, 상기 하나 이상의 프로세서로 하여금, 상기 이미지 및 제2 이미지에 기반하여 희소 흐름 맵을 획득하게 하고; 상기 제2 구역 내의 하나 이상의 픽셀들의 서브세트를 생성하게 하고 - 상기 서브세트 내의 적어도 하나의 픽셀은 유효 픽셀임 -; 하나 이상의 반복에 걸쳐, 상기 유효 픽셀을 사용하여 상기 제2 구역 내의 상기 하나 이상의 픽셀의 서브세트로부터의 하나 이상의 무효 픽셀을 대체하게 하고; 상기 제1 구역 내에 대체된 픽셀들의 세트를 생성하기 위해, 하나 이상의 부가적인 반복에 걸쳐, 상기 제2 구역으로부터의 대체된 하나 이상의 픽셀을 사용하여 상기 제1 구역 내의 하나 이상의 픽셀로부터의 하나 이상의 무효 픽셀을 대체하게 하는 명령어들을 더 포함하는, 기계 판독가능 매체.
  20. 삭제

Description

이미지들 간의 픽셀들의 모션 컴퓨팅 우선권 주장 본 출원은, "SUPERPIXEL GENERATION AND USE"라는 명칭으로 2021년 4월 5일자로 출원된 미국 출원 제[[미국 출원 번호 아직 미배정]]호의 전체 내용들을 인용에 의해 포함한다. 적어도 하나의 실시예는, 하나 이상의 컴퓨팅 통합 디바이스 아키텍처(Compute Unified Device Architecture)(CUDA) 프로그램을 실행하는 데 사용되는 처리 리소스들에 관한 것이다. 예컨대, 적어도 하나의 실시예는, 본원에 설명된 다양한 신규한 기법들에 따라 하나 이상의 이미지의 픽셀들의 모션을 계산하는 하나 이상의 CUDA 프로그램을 실행하는 데 사용되는 프로세서들 또는 컴퓨팅 시스템들에 관한 것이다. 다양한 맥락들에서, 이미지들의 픽셀들의 모션을 계산하는 것은 어려울 수 있다. 종종, 이미지로부터 픽셀들의 모션을 계산하기 위해 신경망이 사용되지만, 신경망을 사용하는 것은 계산적으로 비용이 많이 들 수 있다. 이미지들의 픽셀들의 모션을 계산하기 위해 사용되는 메모리, 시간, 또는 컴퓨팅 리소스들의 양은, CUDA 코드를 사용하여, 계산 연산들을 병렬로 수행하도록 GPU를 구성하여 개선될 수 있다. 도 1은 적어도 하나의 실시예에 따른, 이미지의 다수의 구역들 내의 하나 이상의 픽셀의 모션을 계산하는 예시적인 프레임워크를 예시한다. 도 2는 적어도 하나의 실시예에 따른, 공유 특성들에 기반하여 이미지의 하나 이상의 픽셀을 함께 그룹화하는 시스템의 블록도를 예시한다. 도 3은 적어도 하나의 실시예에 따른, 공유 특성들에 기반하여 이미지의 하나 이상의 픽셀을 그룹화하는 예를 예시한다. 도 4는 적어도 하나의 실시예에 따른, 중첩 구역 내의 하나 이상의 픽셀에 기반하여 이미지의 구역 내의 하나 이상의 픽셀의 광학 흐름을 보간하는 예를 예시한다. 도 5는 적어도 하나의 실시예에 따른, 이미지의 제1 구역 및 제2 중첩 구역 내의 하나 이상의 픽셀의 광학 흐름을 보간하는 예를 예시한다. 도 6은 적어도 하나의 실시예에 따른, 이미지 및 비용 맵의 하나 이상의 행 및 열을 스캔으로써 하나 이상의 픽셀의 광학 흐름을 보간하는 예를 예시한다. 도 7은 적어도 하나의 실시예에 따른, 비용 맵을 사용하여 이미지의 하나 이상의 픽셀을 업데이트하는 예를 예시한다. 도 8은 적어도 하나의 실시예에 따른, 광학 흐름의 희소-밀집(sparse to dense) 보간의 예를 예시한다. 도 9는 적어도 하나의 실시예에 따른, 프레임워크가 광학 흐름의 희소-밀집 보간을 수행하기 위한 프로세스의 예를 예시한다. 도 10은 적어도 하나의 실시예에 따른 예시적인 데이터 센터를 예시한다. 도 11은 적어도 하나의 실시예에 따른 처리 시스템을 예시한다. 도 12는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다. 도 13은 적어도 하나의 실시예에 따른 시스템을 예시한다. 도 14는 적어도 하나의 실시예에 따른 예시적인 집적 회로를 예시한다. 도 15는 적어도 하나의 실시예에 따른 컴퓨팅 시스템을 예시한다. 도 16은 적어도 하나의 실시예에 따른 APU를 예시한다. 도 17은 적어도 하나의 실시예에 따른 CPU를 예시한다. 도 18은 적어도 하나의 실시예에 따른 예시적인 가속기 통합 슬라이스를 예시한다. 도 19a 내지 도 19b는 적어도 하나의 실시예에 따른 예시적인 그래픽 프로세서들을 예시한다. 도 20a는 적어도 하나의 실시예에 따른 그래픽 코어를 예시한다. 도 20b는 적어도 하나의 실시예에 따른 GPGPU를 예시한다. 도 21a는 적어도 하나의 실시예에 따른 병렬 프로세서를 예시한다. 도 21b는 적어도 하나의 실시예에 따른 처리 클러스터를 예시한다. 도 21c는 적어도 하나의 실시예에 따른 그래픽 멀티프로세서를 예시한다. 도 22는 적어도 하나의 실시예에 따른 그래픽 프로세서를 예시한다. 도 23은 적어도 하나의 실시예에 따른 프로세서를 예시한다. 도 24는 적어도 하나의 실시예에 따른 프로세서를 예시한다. 도 25는 적어도 하나의 실시예에 따른 그래픽 프로세서 코어를 예시한다. 도 26은 적어도 하나의 실시예에 따른 PPU를 예시한다. 도 27은 적어도 하나의 실시예에 따른 GPC를 예시한다. 도 28은 적어도 하나의 실시예에 따른 스트리밍 멀티프로세서를 예시한다. 도 29는 적어도 하나의 실시예에 따른, 프로그래밍 플랫폼의 소프트웨어 스택을 예시한다. 도 30은 적어도 하나의 실시예에 따른, 도 29의 소프트웨어 스택의 CUDA 구현을 예시한다. 도 31은 적어도 하나의 실시예에 따른, 도 29의 소프트웨어 스택의 ROCm 구현을 예시한다. 도 32는 적어도 하나의 실시예에 따른, 도 29의 소프트웨어 스택의 OpenCL 구현을 예시한다. 도 33은 적어도 하나의 실시예에 따른, 프로그래밍 플랫폼에 의해 지원되는 소프트웨어를 예시한다. 도 34는 적어도 하나의 실시예에 따른, 도 29 내지 도 32의 프로그래밍 플랫폼들 상에서 실행하기 위한 컴파일 코드를 예시한다. 도 35는 적어도 하나의 실시예에 따른, 도 29 내지 도 32의 프로그래밍 플랫폼들 상에서 실행하기 위한 컴파일 코드를 더 상세히 예시한다. 도 36은 적어도 하나의 실시예에 따른, 소스 코드를 컴파일하기 전에 소스 코드를 변환하는 것을 예시한다. 도 37a는 적어도 하나의 실시예에 따른, 상이한 유형들의 처리 유닛들을 사용하여 CUDA 소스 코드를 컴파일 및 실행하도록 구성되는 시스템을 예시한다. 도 37b는 적어도 하나의 실시예에 따른, CPU 및 CUDA-가능 GPU를 사용하여 도 37a의 CUDA 소스 코드를 컴파일 및 실행하도록 구성되는 시스템을 예시한다. 도 37c는 적어도 하나의 실시예에 따른, CPU 및 비-CUDA-가능 GPU를 이용하여 도 37a의 CUDA 소스 코드를 컴파일 및 실행하도록 구성되는 시스템을 예시한다. 도 38은 적어도 하나의 실시예에 따른, 도 37c의 CUDA-HIP(CUDA-to-HIP) 변환 툴에 의해 변환된 예시적인 커널을 예시한다. 도 39는 적어도 하나의 실시예에 따른, 도 37c의 비-CUDA-가능 GPU를 더 상세히 예시한다. 도 40은 적어도 하나의 실시예에 따른, 예시적인 CUDA 그리드의 스레드들이 도 39의 상이한 컴퓨팅 유닛들에 맵핑되는 방식을 예시한다. 도 41은 적어도 하나의 실시예에 따른, 기존 CUDA 코드를 데이터 병렬 C++ 코드로 이전하기 위한 방식을 예시한다. 다음의 설명에서, 적어도 하나의 실시예의 더 철저한 이해를 제공하기 위해 다수의 특정 세부사항들이 기재되어 있다. 그러나, 본 발명의 개념들이 이러한 특정 세부사항들 중 하나 이상 없이도 실시될 수 있다는 것이 관련 기술분야의 통상의 기술자에게 명백할 것이다. 적어도 하나의 실시예에서, (컴퓨터 시스템 내에 있을 수 있는 하나 이상의 프로세서의 일부일 수 있는) 하나 이상의 회로는 이미지의 하나 이상의 픽셀의 모션을 계산한다. 적어도 하나의 실시예에서, 상기 하나 이상의 회로는, 상기 이미지의 제1 구역 내의 하나 이상의 픽셀의 모션을, 상기 제1 구역과 중첩되는 상기 이미지의 제2 구역 내의 하나 이상의 픽셀의 모션 정보를 사용함으로써 계산한다. 적어도 하나의 실시예에서, 상기 하나 이상의 회로는, 이미지 및 흐름 맵을 획득하고, 하나 이상의 픽셀이 함께 그룹화되게 하고 ― 상기 픽셀들의 그룹은 강도 및 구배 중 적어도 하나에 대응하는 하나 이상의 특성을 공유함 ―, 상기 흐름 맵에 기반하여, 상기 픽셀들의 그룹으로부터의 하나 이상의 유효 픽셀을 사용하여 상기 픽셀들의 그룹의 하나 이상의 무효 픽셀을 유효 픽셀로 반복적으로 변환함으로써 이미지의 하나 이상의 픽셀의 모션을 계산한다. 적어도 하나의 실시예에서, 광학 흐름(예컨대, 광학 흐름 맵들)은, 객체와 카메라 사이의 상대적인 움직임에 의해 야기되는 비디오의 연속적인 프레임들 사이의 객체들의 모션을 나타내기 위해 컴퓨터 비전 작업들(예컨대, 이미지 세그먼트화 및 객체 검출)에서 사용된다. 광학 흐름을 수행하고 비디오 프레임들에서 추적된 객체들의 해상도를 개선하는 것이 어느 정도 이용가능하지만, 그렇게 하는 것은 전형적으로, 시스템이 객체 검출 및 의미론적 세그먼트화를 수행할 것을 요구하는데, 이는, 병렬 컴퓨팅에서 구현하기가 어렵고 다수의 반복들을 요구할 것이다. 게다가, 광학 흐름 벡터들(즉, 하나의 프레임으로부터 다음 프레임으로의 픽셀들의 움직임을 표시하는 벡터들)을 계산할 때, 종종, 벡터가 간단한 방식으로 컴퓨팅될 수 없는 많은 픽셀들이 존재한다. 이는, 프레임들 사이의 조명 조건들의 변화들, 객체들이 다른 객체들에 의해 가려지는 것, 및 다른 인자들에 기인한다. 적어도 하나의 실시예에서, 누락된 광학 흐름 벡터들을 채우기 위해 이전에 계산된 광학 흐름 벡터들을 사용함으로써 상기 누락된 광학 흐름 벡터들을 계산하기 위한 프레임워크가 생성된다. 적어도 하나의 실시예에서, 제1 이미지, 및 상기 제1 이미지 및 제2 이미지(예컨대, 비디오 내의 2개의 후속 프레임)에 대응하는 희소 광학 흐름 맵이 획득된다. 적어도 하나의 실시예에서, 상기 프레임워크는 이어서, 상기 제1 이미지 내의 객체의 하나 이상의 픽셀로부터 후보 픽셀을 선택하고, 상기 객체를 표현하는 상기 제1 이미지의 제1 구역 내의 이웃하는 픽셀 그룹이 함께 그룹화되게(예컨대, 슈퍼픽셀을 형성함) 할 수 있다. 적어도 하나의 실시예에서, 상기 픽셀 그룹은, 이러한 픽셀들 각각의 구배들 및 강도가 상기 후보 픽셀과 얼마나 유사한지에 기반하여 결정된다. 적어도 하나의 실시예에서, 상기 프레임워크는, 희소 광학 흐름 맵에 기반하여, 비용 함수를 적용함으로써 상기 픽셀 그룹으로부터의 픽셀이 유효 흐름 픽셀(예컨대, 유효 픽셀)인지 또는 무효 흐름 픽셀(예컨대, 무효 픽셀)인지를 결정한다. 적어도 하나의 실시예에서, 유효 흐름 픽셀은, 제1 프레임(예컨대, 제1 이미지)으로부터 후속 프레임(예컨대, 제2 이미지)으로, 상기 픽셀이 역방향으로 상기 후속 프레임으로부터 다시 상기 제1 프레임으로 이동하고 무효 흐름 픽셀은 그렇지 않을 때와 동일한 방식으로 이동한다. 적어도 하나의 실시예에서, 프레임워크는,