이하, 본 문서의 다양한 실시예들이 첨부된 도면을 참조하여 기재된다. 실시예 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B" 또는 "A 및/또는 B 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1," "제 2," "첫째," 또는 "둘째,"등의 표현들은 해당 구성요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다.
본 문서에서, "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, 하드웨어적 또는 소프트웨어적으로 "~에 적합한," "~하는 능력을 가지는," "~하도록 변경된," "~하도록 만들어진," "~를 할 수 있는," 또는 "~하도록 설계된"과 상호 호환적으로(interchangeably) 사용될 수 있다. 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서의 다양한 실시예들에 따른 전자 장치는, 예를 들면, 스마트폰, 태블릿 PC, 데스크탑 PC, 랩탑 PC, 넷북 컴퓨터, 워크스테이션, 서버 중 적어도 하나를 포함할 수 있다.
도 1을 참조하여, 다양한 실시예에서의, 네트워크 환경(100) 내의 전자 장치(101)가 기재된다. 전자 장치(101)는 버스(110), 프로세서(120), 메모리(130), 입출력 인터페이스(150), 디스플레이(160), 및 통신 인터페이스(170)를 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)는, 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다. 버스(110)는 구성요소들(110-170)을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 또는 데이터)을 전달하는 회로를 포함할 수 있다. 프로세서(120)는, 중앙처리장치, 어플리케이션 프로세서, 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서(120)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리(130)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(130)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시예에 따르면, 메모리(130)는 소프트웨어 및/또는 프로그램(140)을 저장할 수 있다. 프로그램(140)은, 예를 들면, 커널(141), 미들웨어(143), 어플리케이션 프로그래밍 인터페이스(API)(145), 및/또는 어플리케이션 프로그램(또는 "어플리케이션")(147) 등을 포함할 수 있다. 커널(141), 미들웨어(143), 또는 API(145)의 적어도 일부는, 운영 시스템으로 지칭될 수 있다. 커널(141)은, 예를 들면, 다른 프로그램들(예: 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147))에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)을 제어 또는 관리할 수 있다. 또한, 커널(141)은 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147)에서 전자 장치(101)의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어(143)는, 예를 들면, API(145) 또는 어플리케이션 프로그램(147)이 커널(141)과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 미들웨어(143)는 어플리케이션 프로그램(147)으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어(143)는 어플리케이션 프로그램(147) 중 적어도 하나에 전자 장치(101)의 시스템 리소스(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)를 사용할 수 있는 우선 순위를 부여하고, 상기 하나 이상의 작업 요청들을 처리할 수 있다. API(145)는 어플리케이션(147)이 커널(141) 또는 미들웨어(143)에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다. 입출력 인터페이스(150)는, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치(101)의 다른 구성요소(들)에 전달하거나, 또는 전자 장치(101)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이(160)는, 예를 들면, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 마이크로 전자기계 시스템 (MEMS) 디스플레이, 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이(160)는, 예를 들면, 사용자에게 각종 콘텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 및/또는 심볼 등)을 표시할 수 있다. 디스플레이(160)는, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 수신할 수 있다. 통신 인터페이스(170)는, 예를 들면, 전자 장치(101)와 외부 장치(예: 제 1 외부 전자 장치(102), 제 2 외부 전자 장치(104), 또는 서버(106)) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스(170)는 무선 통신 또는 유선 통신을 통해서 네트워크(162)에 연결되어 외부 장치(예: 제 2 외부 전자 장치(104) 또는 서버(106))와 통신할 수 있다.
무선 통신은, 예를 들면, LTE, LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용하는 셀룰러 통신을 포함할 수 있다. 한 실시예에 따르면, 무선 통신은, 예를 들면, WiFi(wireless fidelity), 블루투스, 블루투스 저전력(BLE), 지그비(Zigbee), NFC(near field communication), 자력 시큐어 트랜스미션(Magnetic Secure Transmission), 라디오 프리퀀시(RF), 또는 보디 에어리어 네트워크(BAN) 중 적어도 하나를 포함할 수 있다. 한실시예에 따르면, 무선 통신은 GNSS를 포함할 수 있다. GNSS는, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 "Beidou") 또는 Galileo, the European global satellite-based navigation system일 수 있다. 이하, 본 문서에서는, "GPS"는 "GNSS"와 상호 호환적으로 사용될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), 전력선 통신, 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크(162)는 텔레커뮤니케이션 네트워크, 예를 들면, 컴퓨터 네트워크(예: LAN 또는 WAN), 인터넷, 또는 텔레폰 네트워크 중 적어도 하나를 포함할 수 있다.
제 1 및 제 2 외부 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 다양한 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치(102,104), 또는 서버(106)에서 실행될 수 있다. 한 실시예에 따르면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치(102, 104), 또는 서버(106))에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치(102, 104), 또는 서버(106))는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 다양한 실시예들에 따른, 전자 장치(예: 도 1의 전자 장치(101))가 토큰 프루닝을 수행하는 방법을 설명하기 위한 흐름도이다.
도 3은 다양한 실시예들에 따른, 전자 장치(101)가 토큰 프루닝을 수행하는 실시예를 나타내는 도면이다.
201 동작에서, 다양한 실시예들에 따르면, 전자 장치(예: 도 1의 프로세서(120))는 이미지 프레임을 복수의 패치들로 분할할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 내부 장치(예: 카메라 모듈) 또는 외부 장치(예: 외부 서버)로부터 이미지 프레임을 획득할 수 있고, 상기 획득한 이미지 프레임을 복수의 패치들로 분할할 수 있다. 예를 들어, 도 3을 참조하면, 전자 장치(101)는 하나의 이미지 프레임(301)을 복수의 패치들(302)로 분할할 수 있다.
203 동작에서, 다양한 실시예들에 따르면, 전자 장치(예: 도 1의 프로세서(120))는 복수의 패치들에 대하여 패치 임베딩(patch embedding)을 수행한 후에, 복수의 트랜스포머 블록들 중에서 미리 정해진 트랜스포머 블록으로부터 출력된, 상기 복수의 패치들에 기반하는 토큰들을 FFT(Fast Fourier Transform) 기반의 주파수 도메인 변환 알고리즘을 통해 공간적 도메인(spatial domain)으로부터 주파수 도메인(frequency domain)으로 변환시킬 수 있다.
일 실시예에 따르면, 전자 장치(101)는 복수의 패치들(302)에 대하여 패치 임베딩을 수행할 수 있다. 예를 들어, 도 3을 참조하면, 전자 장치(101)는 분할된 복수의 패치들(302)에 대하여 패치 임베딩(301)을 수행할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 패치 임베딩을 수행하면서, CLS 토큰(class token)을 생성하지 않고, 패치 임베딩을 수행할 수 있다.
일 실시예에 따르면, 전자 장치(101)는 복수의 트랜스포머 블록들(a plurality of transformer blocks) 중에서 미리 정해진 트랜스포머 블록으로부터 출력된, 토큰들을 확인할 수 있다. 이 때, 상기 토큰들은 복수의 패치들에 기반하여 생성될 수 있다. 일 실시예에서 이미지 토큰은 복수의 패치들(302)의 각각의 패치를 의미할 수 있다. 트랜스포머는 파운데이션 모델(foundation model)로 일컬어지는 신경망 모델로서, 순차 데이터 내의 관계를 추적해 맥락과 의미를 학습할 수 있다. 일 실시예에 따르면, 미리 정해진 트랜스포머 블록은 복수 개일 수 있고, 사용자에 의하여 선택될 수 있다.
일 실시예에 따르면, 전자 장치(101)는 미리 정해진 트랜스포머 블록으로부터 출력된 토큰들을 FFT 기반의 주파수 도메인 변환 알고리즘을 통해 공간적 도메인으로부터 주파수 도메인으로 변환할 수 있다. 일 실시예에 따르면, FFT 기반의 주파수 도메인 변환 알고리즘은 DCT(Discrete Cosine Transform)를 포함할 수 있다. 이 때 DCT는 이산 코사인 변환 기법을 의미하고, 주파수 분해를 위해 cosine 함수를 사용하여 energy compaction을 더 잘하는 장점, 즉 정보를 한 곳으로 더 잘 모으는 특성이 있어서 영상 압축 기술에서 널리 사용되고 있다. 일 실시예에 따르면, 미리 정해진 트랜스포머 블록은 사용자에 의하여 설정될 수 있다. 예를 들어, 도 3을 참조하면, 12개의 트랜스포머 블록들을 포함하는 모델이 존재함을 가정할 때, 사용자는 1, 4, 7, 10번째 트랜스포머 블록에 대하여 해당 블록들에서 출력된 토큰들에 FFT 기반의 주파수 도메인 변환 알고리즘을 수행하도록 미리 설정할 수 있다.
205 동작에서, 다양한 실시예들에 따르면, 전자 장치(예: 도 1의 프로세서(120))는 주파수 도메인으로 변환된 토큰들의 주파수 정보에 기반하여 특정 토큰들을 프루닝(pruning)한 후에, 상기 특정 토큰들 이외의 나머지 토큰들을 주파수 도메인으로부터 공간적 도메인으로 변환시킬 수 있다.
일 실시예에 따르면, 전자 장치(101)는 주파수 도메인으로 변환된 토큰들의 주파수 정보에 기반하여 상기 토큰들로부터 특정 토큰들을 프루닝할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 주파수가 가장 높은 토큰부터 낮은 주파수 순서로, 사용자에 의하여 선택된 개수만큼 상기 토큰들로부터 특정 토큰들을 프루닝할 수 있다. 예를 들어, 도 3을 참조하면, 전자 장치(101)는 미리 정해진 제1 트랜스포머 블록(311)에서 출력된, 주파수 도메인으로 변환된 토큰들(320) 중에서 사용자에 의하여 선택된 개수(예: 2개)만큼 가장 주파수가 높은 토큰(321)과 그 다음 주파수가 높은 토큰(322)을 프루닝할 수 있다. 또 다른 예를 들어, 도 3을 참조하면, 전자 장치(101)는 미리 정해진 제2 트랜스포머 블록(312)에서 출력되어 주파수 도메인으로 변환된 토큰들(330) 중에서 사용자에 의하여 선택된 개수(예: 2개)만큼 가장 주파수가 높은 토큰(331)과 그 다음 주파수가 높은 토큰(332)을 프루닝할 수 있다. 일 실시예에 따르면, 사용자는 미리 정해진 트랜스포머 블록마다 프루닝하고자 하는 토큰의 개수를 동일하게 설정하거나 상이하게 설정할 수 있다.
일 실시예에 따르면, 전자 장치(101)는 미리 정해진 트랜스포머 블록에 대응하는 프루닝 목표 토큰 개수를 확인할 수 있고, 주파수가 가장 높은 토큰부터 낮은 주파수 순서로, 상기 토큰들(320)로부터 상기 프루닝 목표 토큰 개수만큼 특정 토큰들을 프루닝할 수 있다. 각각의 미리 정해진 트랜스포머 블록마다 프루닝 목표 토큰 개수가 미리 설정될 수 있다. 예를 들어, 도 3을 참조하면, 미리 정해진 제1 트랜스포머 블록(311)에 대응하는 프루닝 목표 토큰 개수는 2개일 수 있고, 미리 정해진 제2 트랜스포머 블록(312)에는 프루닝 목표 토큰 개수는 2개 일 수 있다. 구체적으로, 도 3을 참조하면, 전자 장치(101)는 미리 정해진 제1 트랜스포머 블록(311)에서 출력된, 주파수 도메인으로 변환된 토큰들(320) 중에서 상기 제1 트랜스포머 블록(311)에 대응하는 프루닝 목표 토큰 개수(예: 2개)만큼 가장 주파수가 높은 토큰(321)과 그 다음 주파수가 높은 토큰(322)을 프루닝할 수 있다. 또한, 전자 장치(101)는 미리 정해진 제2 트랜스포머 블록(312)에서 출력된, 주파수 도메인으로 변환된 토큰들 중에서 상기 제2 트랜스포머 블록(312)에 대응하는 프루닝 목표 토큰 개수(예: 2개)만큼 가장 주파수가 높은 토큰(331)과 그 다음 주파수가 높은 토큰(332)을 프루닝할 수 있다.
일 실시예에 따르면, 전자 장치(101)는 상기 특정 토큰들 이외의 나머지 토큰들을 주파수 도메인으로부터 공간적 도메인으로 변환시킬 수 있다. 예를 들어, 도 3을 참조하면, 전자 장치(101)는 제1 트랜스포머 블록(311)에서 가장 주파수가 높은 토큰(321) 및 그 다음 주파수가 높은 토큰(322)를 프루닝한 후, 7개의 나머지 토큰들(323)의 도메인을 주파수 도메인으로부터 공간적 도메인으로 변환시킬 수 있다.
일 실시예에 따르면, 전자 장치(101)는 공간적 도메인으로 변환된 나머지 토큰들을 다음 트랜스포머 블록에 전달할 수 있다.
일 실시예에 따르면, 전자 장치(101)는 트랜스포머 블록을 이용하여 토큰을 처리하는 동작을 수행한 후에 GAP(Global Average Pooling) 레이어 및 MLP head 레이어를 수행할 수 있다.
다양한 실시예들에 따라서, 주파수 도메인에서의 토큰 프루닝을 수행하는 전자 장치는, 프로세서를 포함하고, 상기 프로세서는, 이미지 프레임을 복수의 패치들로 분할하고, 상기 복수의 패치들에 대하여 패치 임베딩을 수행한 후에, 복수의 트랜스포머 블록들 중에서 미리 정해진 트랜스포머 블록으로부터 출력된, 상기 복수의 패치들에 기반하는 토큰들을 FFT(Fast Fourier Transform) 기반의 주파수 도메인 변환 알고리즘을 통해 공간적 도메인(spatial domain)으로부터 주파수 도메인(frequency domain)으로 변환시키고, 및 상기 주파수 도메인으로 변환된 토큰들의 주파수 정보에 기반하여, 상기 토큰들로부터 특정 토큰들을 프루닝(pruning)한 후에, 상기 특정 토큰들 이외의 나머지 토큰들을 상기 주파수 도메인으로부터 상기 공간적 도메인으로 변환시키도록 설정될 수 있다.
다양한 실시예들에 따라서, 상기 프로세서는, 주파수가 가장 높은 토큰부터 낮은 주파수 순서로 사용자에 의하여 선택된 개수만큼 상기 토큰들로부터 상기 특정 토큰들을 프루닝하도록 설정될 수 있다.
다양한 실시예들에 따라서, 상기 프로세서는, 상기 미리 정해진 트랜스포머 블록에 대응하는 프루닝 목표 토큰 개수를 확인하도록 설정될 수 있다.
다양한 실시예들에 따라서, 상기 프로세서는, 주파수가 가장 높은 토큰부터 낮은 주파수 순서로, 상기 토큰들로부터 상기 프루닝 목표 토큰 개수만큼 상기 특정 토큰들을 프루닝하도록 설정될 수 있다.
다양한 실시예들에 따라서, 상기 미리 정해진 트랜스포머 블록은 복수 개이고, 상기 미리 정해진 트랜스포머 블록은 사용자에 의하여 선택되고, 상기 미리 정해진 트랜스포머 블록 중 하나로서, 제1 트랜스포머 블록에는 상기 프루닝 목표 토큰 개수가 x개 설정되고, 상기 미리 정해진 트랜스포머 블록 중 하나로서, 제2 트랜스포머 블록에는 상기 프루닝 목표 토큰 개수가 y개 설정될 수 있다.
다양한 실시예들에 따라서, 상기 프로세서는, 상기 나머지 토큰들을 다음 트랜스포머 블록에 전달하도록 설정될 수 있다.
다양한 실시예들에 따라서, 상기 프로세서는, 상기 패치 임베딩을 수행하는 과정에서, CLS 토큰을 생성하지 않고 상기 패치 임베딩을 수행하도록 설정될 수 있다.
다양한 실시예들에 따라서, 주파수 도메인에서의 토큰 프루닝을 수행하는 전자 장치의 동작 방법은, 상기 전자 장치의 프로세서를 이용하여, 이미지 프레임을 복수의 패치들로 분할하는 동작, 상기 프로세서를 이용하여, 상기 복수의 패치들에 대하여 패치 임베딩을 수행한 후에, 복수의 트랜스포머 블록들 중에서 미리 정해진 트랜스포머 블록으로부터 출력된, 상기 복수의 패치들에 기반하는 토큰들을 FFT(Fast Fourier Transform) 기반의 주파수 도메인 변환 알고리즘을 통해 공간적 도메인(spatial domain)으로부터 주파수 도메인(frequency domain)으로 변환시키는 동작, 및 상기 프로세서를 이용하여, 상기 주파수 도메인으로 변환된 토큰들의 주파수 정보에 기반하여, 상기 토큰들로부터 특정 토큰들을 프루닝(pruning)한 후에, 상기 특정 토큰들 이외의 나머지 토큰들을 상기 주파수 도메인으로부터 상기 공간적 도메인으로 변환시키는 동작을 포함할 수 있다.
다양한 실시예들에 따라서, 상기 특정 토큰들을 프루닝하는 동작은, 주파수가 가장 높은 토큰부터 낮은 주파수 순서로 사용자에 의하여 선택된 개수만큼 상기 토큰들로부터 상기 특정 토큰들을 프루닝하는 동작을 포함할 수 있다.
다양한 실시예들에 따라서, 상기 특정 토큰들을 프루닝하는 동작은, 상기 미리 정해진 트랜스포머 블록에 대응하는 프루닝 목표 토큰 개수를 확인하는 동작을 포함할 수 있다.
다양한 실시예들에 따라서, 상기 특정 토큰들을 프루닝하는 동작은, 주파수가 가장 높은 토큰부터 낮은 주파수 순서로, 상기 토큰들로부터 상기 프루닝 목표 토큰 개수만큼 상기 특정 토큰들을 프루닝하는 동작을 포함할 수 있다.
다양한 실시예들에 따라서, 상기 전자 장치의 동작 방법은, 상기 나머지 토큰들을 다음 트랜스포머 블록에 전달하는 동작을 더 포함할 수 있다.
다양한 실시예들에 따라서, 상기 패치 임베딩을 수행하는 동작은, 상기 패치 임베딩을 수행하는 과정에서, CLS 토큰을 생성하지 않고 상기 패치 임베딩을 수행하는 동작을 포함할 수 있다.
본 문서에서 사용된 용어 "모듈" 또는 "~부"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. "모듈" 또는 "~부"는, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. "모듈" 또는 "~부"는 기계적으로 또는 전자적으로 구현될 수 있으며, 예를 들면, 어떤 동작들을 수행하는, 알려졌거나 앞으로 개발될, ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays), 또는 프로그램 가능 논리 장치를 포함할 수 있고, 프로세서(120)에 의하여 실행될 수 있다. 다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는 프로그램 모듈의 형태로 컴퓨터로 판독 가능한 저장 매체(예: 메모리(130))에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서(120))에 의해 실행될 경우, 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(예: 자기테이프), 광기록 매체(예: CD-ROM, DVD, 자기-광 매체 (예: 플롭티컬 디스크), 내장 메모리 등을 포함할 수 있다. 명령어는 컴파일러에 의해 만들어지는 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른, 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
그리고 본 문서에 개시된 실시예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 개시의 범위를 한정하는 것은 아니다. 따라서, 본 개시의 범위는, 본 개시의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시예를 포함하는 것으로 해석되어야 한다.