KR20210067759A - 압축된 데이터를 복원하는 방법 및 장치 - Google Patents

압축된 데이터를 복원하는 방법 및 장치 Download PDF

Info

Publication number
KR20210067759A
KR20210067759A KR1020190157684A KR20190157684A KR20210067759A KR 20210067759 A KR20210067759 A KR 20210067759A KR 1020190157684 A KR1020190157684 A KR 1020190157684A KR 20190157684 A KR20190157684 A KR 20190157684A KR 20210067759 A KR20210067759 A KR 20210067759A
Authority
KR
South Korea
Prior art keywords
data
compression algorithm
groups
bit stream
values corresponding
Prior art date
Application number
KR1020190157684A
Other languages
English (en)
Other versions
KR102317205B1 (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 KR1020190157684A priority Critical patent/KR102317205B1/ko
Publication of KR20210067759A publication Critical patent/KR20210067759A/ko
Application granted granted Critical
Publication of KR102317205B1 publication Critical patent/KR102317205B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

압축된 데이터를 복원하는 방법에 있어서, 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하고, 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하고, 빈도 분포에 기초하여 데이터의 압축 시 사용된 압축 알고리즘을 판단하고, 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하고, 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하고, 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원할 수 있다.

Description

압축된 데이터를 복원하는 방법 및 장치{Method and apparatus for estimating parameters of compression algorithm}
본 개시는 압축된 데이터를 복원하는 방법 및 장치에 관한 것이다.
데이터를 더 적은 저장 공간에 효율적으로 기록하기 위해 데이터를 압축시키는 다양한 데이터 압축 알고리즘들이 개발되고 있다.
한편, 압축된 데이터에는 데이터의 압축에 사용된 압축 알고리즘의 종류 및 압축 당시 설정되었던 파라미터 값에 대한 정보를 담는 헤더가 존재할 수 있으나, 헤더가 손상된 경우에는 압축된 데이터를 압축 해제할 수 없다는 문제점이 있다.
기존에는 이러한 문제점을 해결하기 위해 무차별 대입(brute-force search)을 이용하여, 압축 해제가 될 때까지 다양한 압축 알고리즘들 및 각 압축 알고리즘의 가능한 파라미터의 조합을 통해 압축 해제를 시도하는 방법이 있었으나, 많은 계산량과 긴 시간을 필요로 한다는 한계점이 있었다.
다양한 실시예들은 압축된 데이터를 복원하는 방법 및 장치를 제공하는데 있다. 본 개시가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
본 개시의 일 측면에 따르면, 압축된 데이터를 복원하는 방법에 있어서, 상기 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하는 단계; 상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하는 단계; 상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하는 단계; 상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하는 단계; 상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하는 단계; 및 상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 단계를 포함할 수 있다.
또한, 상기 생성하는 단계는, 상기 그룹들 각각에 포함된 비트들의 개수에 기초하여 0부터 N(N은 자연수)까지의 값을 포함하는 배열을 생성하는 단계; 및 상기 배열 상에 상기 그룹들 각각에 대응되는 값들의 빈도 수를 저장하는 단계; 를 더 포함할 수 있다.
또한, 상기 판단하는 단계는, 상기 그룹들 각각에 대응되는 값들의 빈도 수를 모두 합한 값에 대한 상기 그룹들 각각에 대응되는 값들 중 기 설정된 구간 내의 값들의 빈도 수를 합한 값의 비율 값이 임계값 미만인지 여부를 판단할 수 있다.
또한, 상기 판단하는 단계는, 상기 비율이 임계값 미만인 경우에는, 상기 데이터의 압축 시 사용된 압축 알고리즘은 LZ(Lempel-Ziv)77 압축 알고리즘에 해당한다고 판단하고, 상기 파라미터는 서치 버퍼(search buffer)의 크기 값에 해당할 수 있다.
또한, 상기 획득하는 단계는, 상기 비트 스트림을 각각이 복수 개의 비트들을 포함하는 1*M(M은 자연수)차원의 벡터들로 분할하는 단계; 및 상기 벡터들 각각을 m*m(m은 자연수)차원의 벡터들로 변환하여 상기 복수의 이진 영상들을 획득하는 단계; 를 포함할 수 있다.
또한, 상기 최종 이미지는, 상기 벡터들 각각에 포함되는 복수 개의 비트들의 개수 및 상기 판단된 압축 알고리즘의 파라미터에 기초하여 결정될 수 있다.
본 개시의 다른 측면에 따르면, 압축된 데이터를 복원하는 방법을 구현하기 위한 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 방법은, 상기 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하는 단계; 상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하는 단계; 상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하는 단계; 상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하는 단계; 상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하는 단계; 및 상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 단계를 포함할 수 있다.
본 개시의 또 다른 측면에 따르면, 하드웨어와 결합되어, 압축된 데이터를 복원하는 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램에 있어서, 상기 방법은, 상기 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하는 단계; 상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하는 단계; 상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하는 단계; 상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하는 단계; 상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하는 단계; 및 상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 단계를 포함할 수 있다.
본 개시의 또 다른 측면에 따르면, 압축된 데이터를 복원하는 장치는, 하나 이상의 명령어(instruction)를 저장하는 메모리; 및 상기 하나 이상의 명령어를 실행함으로써, 압축된 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하고, 상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하고, 상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하고, 상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하고, 상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하고, 상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 프로세서를 포함할 수 있다.
또한, 상기 프로세서는, 상기 그룹들 각각에 포함된 비트들의 개수에 기초하여 0부터 N(N은 자연수)까지의 값을 포함하는 배열을 생성하고, 상기 배열 상에 상기 그룹들 각각에 대응되는 값들의 빈도 수를 저장할 수 있다.
또한, 상기 프로세서는, 상기 그룹들 각각에 대응되는 값들의 빈도 수를 모두 합한 값에 대한 상기 그룹들 각각에 대응되는 값들 중 기 설정된 구간 내의 값들의 빈도 수를 합한 값의 비율 값이 임계값 미만인지 여부를 판단할 수 있다.
또한, 상기 프로세서는, 상기 비율이 임계값 미만인 경우에는, 상기 데이터의 압축 시 사용된 압축 알고리즘은 LZ(Lempel-Ziv)77 압축 알고리즘에 해당한다고 판단하고, 상기 파라미터는 서치 버퍼(search buffer)의 크기 값에 해당할 수 있다.
또한, 상기 프로세서는, 상기 비트 스트림을 각각이 복수 개의 비트들을 포함하는 1*M(M은 자연수)차원의 벡터들로 분할하고, 상기 벡터들 각각을 m*m(m은 자연수)차원의 벡터들로 변환하여 상기 복수의 이진 영상들을 획득할 수 있다.
또한, 상기 최종 이미지는, 상기 벡터들 각각에 포함되는 복수 개의 비트들의 개수 및 상기 판단된 압축 알고리즘의 파라미터에 기초하여 결정될 수 있다.
도 1은 압축된 데이터를 복원하는 장치의 하드웨어 구성의 일 예를 도시한 블록도이다.
도 2는 압축된 데이터를 복원하는 방법의 일 예를 나타내는 흐름도이다.
도 3은 압축되지 않은 데이터로부터 생성한 빈도 분포를 도식화한 일 예이다.
도 4는 LZ77 압축 알고리즘에 의해 압축된 데이터로부터 생성한 빈도 분포를 도식화한 일 예이다.
도 5는 압축된 데이터로부터 최종 이미지를 획득하는 일 예를 나타내는 도면이다.
도 6은 압축 알고리즘의 파라미터를 추정하는 방법에 적용되는 컨볼루션 뉴럴 네트워크의 일 예를 나타내는 도면이다.
도 7은 압축 알고리즘의 파라미터를 추정하는 방법에 적용되는 SVM(support vector machine) 분류기의 일 예를 나타내는 도면이다.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다. 하기 설명은 실시예들을 구체화하기 위한 것일 뿐 발명의 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 당해 기술분야의 전문가가 용이하게 유추할 수 있는 것은 권리범위에 속하는 것으로 해석된다.
본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 실시예들은 압축 알고리즘의 파라미터를 추정하는 방법 및 장치에 관한 것으로서 이하의 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명을 생략한다.
도 1은 압축된 데이터를 복원하는 장치의 하드웨어 구성의 일 예를 도시한 블록도이다.
압축된 데이터를 복원하는 장치(100)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 나아가서, 압축된 데이터를 복원하는 장치(100)는 위와 같은 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 압축된 데이터를 복원하는 장치(100)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다.
도 1을 참고하면, 압축된 데이터를 복원하는 장치(100)는 프로세서(110) 및 메모리(120)를 포함한다. 도 1에 도시된 압축된 데이터를 복원하는 장치(100)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 압축된 데이터를 복원하는 장치(100)에는 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
프로세서(110)는 압축된 데이터를 복원하는 장치(100)를 실행하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(110)는 압축된 데이터를 복원하는 장치(100)내의 메모리(120)에 저장된 하나 이상의 명령어 또는 프로그램들을 실행함으로써, 압축된 데이터를 복원하는 장치(100)를 전반적으로 제어한다. 프로세서(110)는 압축된 데이터를 복원하는 장치(100) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(120)는 압축된 데이터를 복원하는 장치(100)내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(120)는 압축된 데이터를 복원하는 장치(100)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(120)는 압축된 데이터를 복원하는 장치(100)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(120)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리(120)를 포함할 수 있다.
프로세서(110)는 압축된 데이터로부터 데이터의 압축 시 사용된 압축 알고리즘을 판단할 수 있다. 판단된 압축 알고리즘은 예를 들어 LZ(Lempel-Ziv)77 압축 알고리즘에 해당할 수 있다.
프로세서(110)는 압축 시 사용된 압축 알고리즘이 LZ77 압축 알고리즘에 해당한다고 판단한 경우에는, 압축 알고리즘의 파라미터를 추정할 수 있다. 일 실시예로서, 프로세서(110)는 뉴럴 네트워크(Neural Network)를 이용하여 압축 알고리즘의 파라미터를 추정할 수 있다. 뉴럴 네트워크는 시냅스의 결합으로 네트워크를 형성한 인공 뉴런이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 의미한다.
구체적으로, 프로세서(110)는 다수의 숨겨진 계층(Hidden Layer)을 갖는 뉴럴 네트워크 구조인 딥 뉴럴 네트워크(Deep Neural Network)를 이용하여 압축 알고리즘의 파라미터를 효과적으로 추정할 수 있다.
다른 실시예로서, 프로세서(110)는 압축된 데이터로부터 산출한 특징값들을 SVM(support vector machine) 분류기에 입력하여 LZ77 압축 알고리즘의 파라미터를 추정할 수 있다.
LZ77 압축 알고리즘은 무손실 압축 알고리즘에 해당하며, LZ77 압축 알고리즘의 적용 시 사용자는 2개의 파라미터들을 설정할 수 있다. 첫 번째 파라미터는 서치 버퍼 (search buffer)의 크기이고, 두 번째 파라미터는 룩어헤드 버퍼(lookahead buffer)의 크기이다.
LZ77 압축 알고리즘은 서치 버퍼와 룩어헤드 버퍼를 사용하여 데이터를 압축할 수 있다. 예를 들어, 압축되지 않은 원본 데이터의 일부 데이터는 룩어헤드 버퍼에 순차적으로 쌓이고, 압축된 데이터의 일부 데이터는 서치 버퍼에 순차적으로 쌓일 수 있다. LZ77 압축 알고리즘은 룩어헤드 버퍼와 서치 버퍼 각각에 존재하는 데이터를 서로 비교하여 두 버퍼 사이에 중복되는 데이터의 시작 위치와 중복되는 부호(code)의 개수에 관한 정보를 이진화하여 저장할 수 있다. 이 때 이진수로 표현되는 비트의 길이는 서치 버퍼의 크기에 따라 하기 수학식 1에 의해 결정될 수 있다.
Figure pat00001
상기 수학식 1에서 S는 서치 버퍼의 크기고, L은 중복되는 데이터의 시작 위치와 중복되는 부호(code)의 개수에 관한 정보를 이진화하는 경우 표현되는 비트의 길이에 해당할 수 있다. 예를 들어 서치 버퍼의 크기가 S=1024=210으로 설정된 경우, L 값은 11이 될 수 있으며 중복되는 데이터의 시작 위치와 중복되는 부호(code)의 개수에 관한 정보는 11비트로 표현될 수 있다.
룩어헤드 버퍼와 서치 버퍼 각각에 존재하는 데이터 간 중복되는 데이터가 없는 경우에, LZ77 압축 알고리즘은 룩어헤드 버퍼의 가장 앞에 위치하는 부호 하나만을 이진화하여 저장할 수 있다. 이 때 부호는 ASCII 테이블을 기반으로 인코딩(encoding)되므로 8비트로 표현될 수 있다.
LZ77 압축 알고리즘의 압축 해제는 상술한 압축 과정의 역으로 수행될 수 있다. 압축 해제를 수행하기 위해서는 압축 알고리즘의 적용시 설정된 서치 버퍼의 크기에 해당하는 S를 알아야 한다. 서치 버퍼의 크기인 S를 알면, L에 해당하는 값을 알 수 있으며 이에 따라 압축 해제 시 압축된 데이터를 몇 비트씩 끊어서 읽어들일지 결정할 수 있다.
한편, 압축된 데이터에는 데이터의 압축에 사용된 압축 알고리즘의 종류 및 압축 당시 설정되었던 파라미터 값에 대한 정보를 담는 헤더가 존재할 수 있다. 그러나, 해커의 공격, 저장 매체의 손상, 데이터 전송 과정 중 데이터 손실 등의 이유로 헤더가 손상되는 경우에는 압축된 데이터를 압축 해제 할 수 없다는 문제점이 있다.
본 발명은 헤더 정보가 없는 경우에, 데이터의 압축에 사용된 압축 알고리즘의 종류를 판단하고, 사용된 압축 알고리즘이 LZ77 압축 알고리즘에 해당한다고 판단한 경우에는 서치 버퍼의 크기를 뉴럴 네트워크를 이용하여 추정하는 방법을 제안한다.
구체적으로, 프로세서(110)는 압축된 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하고, 그룹들 각각에 대응되는 값들의 빈도 분포를 생성할 수 있다. 프로세서(110)는 빈도 분포에 기초하여 데이터의 압축 시 사용된 압축 알고리즘을 판단할 수 있다.
또한, 프로세서(110)는 압축 시 사용된 압축 알고리즘이 LZ77 압축 알고리즘에 해당한다고 판단한 경우에는, 압축된 데이터의 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득할 수 있다.
프로세서(110)는 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 최종 이미지를 뉴럴 네트워크에 입력하여 판단된 압축 알고리즘의 파라미터를 추정할 수 있다.
한편, 프로세서(110)는 벡터들 각각이 포함하는 비트들의 개수 및 압축 알고리즘의 파라미터의 다양한 조합 환경에서 학습 데이터를 이용하여 뉴럴 네트워크를 훈련시킬 수 있다. 학습 데이터는 벡터들 각각이 포함하는 비트들의 개수 및 압축 알고리즘의 파라미터의 조합에 따라 생성되는 최종 이미지와 압축 알고리즘의 적용 시 설정된 파라미터의 크기를 가리키는 라벨 값으로 구성될 수 있다.
다른 실시예로서, 프로세서(110)는 압축된 데이터의 비트 스트림으로부터 산출한 특징값들 및 압축 알고리즘의 파라미터의 다양한 조합 환경에서 학습 데이터를 이용하여 SVM 분류기를 학습시킬 수 있다. 학습 데이터는 압축된 데이터의 비트 스트림으로부터 산출한 특징값들에 관한 정보를 포함하는 특징 벡터 및 압축 알고리즘의 적용 시 설정된 파라미터의 크기를 가리키는 라벨 값으로 구성될 수 있다. SVM 분류기는 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할 것인지 판단하는 비확률적 이진 선형 분류 모델에 해당한다.
프로세서(110)는 추정된 파라미터를 이용하여 압축된 데이터를 압축 해제할 수 있다.
도 2는 압축된 데이터를 복원하는 방법의 일 예를 나타내는 흐름도이다.
200 단계에서, 압축된 데이터를 복원하는 장치(100)는 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할할 수 있다.
예를 들어, 그룹들 각각에 포함된 비트들의 개수가 8 개인 경우, 압축된 데이터를 복원하는 장치(100)는 압축된 데이터의 비트 스트림을 8 비트씩 끊어서 읽을 수 있다.
210 단계에서, 압축된 데이터를 복원하는 장치(100)는 그룹들 각각에 대응되는 값들의 빈도 분포를 생성할 수 있다.
압축된 데이터를 복원하는 장치(100)는 그룹들 각각에 포함된 비트들의 개수에 기초하여 0부터 N(N은 자연수)까지의 값을 포함하는 배열을 생성할 수 있다. 그룹들 각각에 포함된 비트들의 개수가 n인 경우에는 0부터 2n-1까지의 값을 포함하는 배열을 생성할 수 있다. 예를 들어, 그룹들 각각에 포함된 비트들의 개수가 8 개인 경우, 압축된 데이터를 복원하는 장치(100)는 0부터 255까지의 값을 포함하는 배열을 생성할 수 있다.
압축된 데이터를 복원하는 장치(100)는 배열 상에 그룹들 각각에 대응되는 값들의 빈도 수를 저장할 수 있다. 예를 들어, 8비트를 포함하는 그룹이 '00011010'에 해당하는 경우, 압축된 데이터를 복원하는 장치(100)는 8비트의 이진수 '00011010'를 십진수 값 26으로 변환할 수 있다.
압축된 데이터를 복원하는 장치(100)는 해당 십진수 값에 해당하는 배열 내 요소에 저장되어 있는 값을 1 증가시킬 수 있다. 예를 들어, 8비트의 이진수 '00011010'를 십진수 값 26으로 변환한 경우, 압축된 데이터를 복원하는 장치(100)는 배열에서 26으로 색인된 요소의 값을 1만큼 증가시킬 수 있다.
이러한 과정을 압축된 데이터의 입력 비트 스트림의 끝까지 반복할 수 있다. 입력 비트 스트림의 비트 길이가 8의 배수가 아닌 경우에는, 마지막 그룹을 생성한 후에 남은 비트들의 개수가 8보다 작을 수 있다. 이러한 경우에는 남은 비트들을 무시할 수 있다.
압축된 데이터를 복원하는 장치(100)는 0부터 255까지의 값들을 x축으로 하고, 배열 내 각 요소에 저장된 값을 y축으로 하여 빈도 분포를 도식화할 수 있다.
220 단계에서, 압축된 데이터를 복원하는 장치(100)는 빈도 분포에 기초하여 데이터의 압축 시 사용된 압축 알고리즘을 판단할 수 있다.
예를 들어, 압축된 데이터를 복원하는 장치(100)는 그룹들 각각에 대응되는 값들의 빈도 수를 모두 합한 값에 대한 그룹들 각각에 대응되는 값들 중 기 설정된 구간 내의 값들의 빈도 수를 합한 값의 비율이 임계값 미만인지 여부를 판단할 수 있다. 이하 도 3 및 도 4를 참조하여 설명한다.
도 3은 압축되지 않은 데이터로부터 생성한 빈도 분포를 도식화한 일 예이다.
도 3은 y축의 배열 내 각 요소에 저장된 값을 배열 내 각 요소 중 가장 큰 값으로 나누어서 0과 1사이의 값을 갖도록 정규화한 것이다.
도 3을 참조하면, 압축되지 않은 데이터의 비트 스트림의 그룹들 각각에 대응되는 값들 중 10부터 129까지의 값들이 높은 빈도수로 존재함을 알 수 있다. 아스키 테이블(ASCII Table)을 참조하면, 10부터 129까지의 값들은‘개행(line feed)', '스페이스(space)', '문장 부호(punctuation marks)', '0에서 9까지의 아라비아 숫자(digits)', '알파벳(alphabet)'과 같이 일반적인 데이터 또는 텍스트 파일에서 자주 사용되는 부호들에 해당한다.
도 4는 LZ77 압축 알고리즘에 의해 압축된 데이터로부터 생성한 빈도 분포를 도식화한 일 예이다.
도 4는 y축의 배열 내 각 요소에 저장된 값을 배열 내 각 요소 중 가장 큰 값으로 나누어서 0과 1사이의 값을 갖도록 정규화한 것이다.
도 4를 참조하면, LZ77 압축 알고리즘에 의해 압축된 데이터는 0부터 255까지의 값들이 비교적 다양하게 존재하며, 0이 비트 스트림의 그룹들 각각에 대응되는 값들 중 0이 가장 높은 빈도수로 존재함을 알 수 있다.
따라서, 압축된 데이터를 복원하는 장치(100)는 그룹들 각각에 대응되는 값들의 빈도 수를 모두 합한 값에 대한 그룹들 각각에 대응되는 값들 중 기 설정된 구간 내의 값들의 빈도 수를 합한 값의 비율 값이 임계값 미만인 경우에는, 데이터의 압축 시 사용된 압축 알고리즘은 LZ77 압축 알고리즘에 해당한다고 판단할 수 있다. 비율 값 D(β)은 하기 수학식 2와 같이 표현할 수 있다.
Figure pat00002
상기 수학식 2에서 β는 압축된 데이터의 비트 스트림에 해당하고, l은 생성된 배열이 포함하는 요소들에 해당하며, 요소들은 0부터 N(N은 자연수)까지의 값들에 해당한다. dl(β)는 배열의 l번째 요소에 저장된 값이며, 그룹들 각각에 대응되는 값들 중 배열의 l번째 요소에 해당하는 값의 빈도수를 의미할 수 있다. 수학식 1에서는 그룹들 각각에 포함된 비트들의 개수가 8 개인 경우의 비율 값을 나타낸 것으로, 비율 값 D(β)는 수학식 1로 제한되는 것은 아니다.
하기 수학식 3 와 같이, 비율 값 D(β)이 임계값 α보다 작은 경우에는, 데이터의 압축 시 사용된 압축 알고리즘은 LZ77 압축 알고리즘에 해당한다고 판단할 수 있다.
Figure pat00003
한편, 하기 수학식 4 와 같이 비율 값 D(β)이 임계값 α 이상인 경우에는, 데이터의 압축 시 사용된 압축 알고리즘은 LZ77 압축 알고리즘에 해당하지 않는다고 판단할 수 있다.
Figure pat00004
다시 도 2를 참조하면, 230 단계에서 압축된 데이터를 복원하는 장치(100)는 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득할 수 있다.
예를 들어, 압축된 데이터를 복원하는 장치(100)는 비트 스트림을 각각이 복수 개의 비트들을 포함하는 1*M(M은 자연수)차원의 벡터들로 분할할 수 있다. 또한, 압축된 데이터를 복원하는 장치(100)는 벡터들 각각을 m*m(m은 자연수)차원의 벡터들로 변환하여 복수의 이진 영상들을 획득할 수 있다.
도 5는 압축된 데이터로부터 최종 이미지를 획득하는 일 예를 나타내는 도면이다.
도 5를 참조하면, 압축된 데이터를 복원하는 장치(100)는 압축된 데이터(500)를 각각이 M개의 비트들을 포함하는 1*M 차원의 벡터(510)들로 분할할 수 있다. 이 때, 1*M 차원의 벡터(510)는 하기 수학식 5와 같이 표현될 수 있다.
Figure pat00005
상기 수학식 5에서 K(i)는 i번째 1*M 차원의 벡터(510)에 해당할 수 있다. bj(i)(j∈{1,2...M})는 1*M 차원의 벡터(510)에 포함된 비트들이며, 0 또는 1에 해당할 수 있다.
분할 과정을 통해서 생성된 1*M 차원의 벡터(510)들의 개수는 총 N개일 수 있다. 압축된 데이터(500)가 포함하는 비트들의 총 개수가 M의 배수가 아닌 경우에는, N번째 1*M 차원의 벡터(510)를 생성한 후 남는 비트들의 개수가 M보다 작을 수 있다. 이러한 경우에는 남은 비트들을 무시할 수 있다.
다음으로, 압축된 데이터를 복원하는 장치(100)는 벡터들 각각을 m*m(m은 자연수)차원의 벡터들로 변환하여 복수의 이진 영상들을 생성할 수 있다.
압축된 데이터를 복원하는 장치(100)는 생성된 N개의 1*M 차원의 벡터(510)들 각각이 2차원의 배열을 가지도록 구조를 변형할 수 있다. 이 때, 이차원 배열은 m*m 차원의 벡터(520)에 해당할 수 있으며, 하기 수학식 6과 같이 표현된다.
Figure pat00006
상기 수학식 6에서 B(i)는 i번째 1*M 차원의 벡터(510)를 이차원 배열 구조로 변형하였을 때 얻어지는 m*m 차원의 벡터(520)에 해당할 수 있다. 도 5를 참조하면, m*m 차원의 벡터(520)는 이진 영상(binary image)에 해당할 수 있다.
따라서, N개의 1*M 차원의 벡터(510)들로부터 N개의 이진 영상들이 생성될 수 있다.
다시 도 2를 참조하면, 240 단계에서, 압축된 데이터를 복원하는 장치(100)는 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 최종 이미지를 뉴럴 네트워크에 입력하여 판단된 압축 알고리즘의 파라미터를 추정할 수 있다.
예를 들어, 압축된 데이터를 복원하는 장치(100)는 N개의 1*M 차원의 벡터(510)들로부터 생성된 N개의 이진 영상들을 하기 수학식 7과 같이 더할 수 있다.
Figure pat00007
상기, 수학식 7에서
Figure pat00008
은 복수의 이진 영상들 각각에 해당하는 m*m(m은 자연수)차원의 벡터들의 동일 위치에 있는 요소(element)들끼리 더하는 요소 별 합 연산자일 수 있다. Z는 N개의 이진 영상들을 모두 합하여 생성되는 이진 영상(530)에 해당할 수 있다.
또한, 압축된 데이터를 복원하는 장치(100)는 생성된 이진 영상(530) Z를 하기 수학식 8에 의해 정규화시킬 수 있다.
Figure pat00009
상기 수학식 8에서, I는 이진 영상(530) Z를 정규화 시켰을 때 얻어지는 최종 이미지(540)에 해당한다. 정규화를 통해 최종 이미지(540) I에 해당하는 벡터에 포함된 값들 각각은 0과 1 사이의 값을 가질 수 있다. w는 이진 영상(530) Z에 해당하는 벡터에 포함된 값들 중에서 가장 작은 값을 의미하고, x는 이진 영상(530) Z에 해당하는 벡터에 포함된 값들 중에서 가장 큰 값을 의미할 수 있다.
압축된 데이터를 복원하는 장치(100)는 최종 이미지를 뉴럴 네트워크에 입력하여 판단된 압축 알고리즘의 파라미터를 추정할 수 있다. 예를 들어, 압축된 데이터를 복원하는 장치(100)는 LZ77 압축 알고리즘의 적용시 설정된 서치 버퍼의 크기 값을 추정할 수 있다.
도 6은 압축 알고리즘의 파라미터를 추정하는 방법에 적용되는 컨볼루션 뉴럴 네트워크의 일 예를 나타내는 도면이다.
도 6을 참조하면, 압축된 데이터로부터 생성한 최종 이미지를 입력으로 하여, 압축 알고리즘의 적용 시 설정된 서치 버퍼의 크기를 추정하는 컨볼루션 뉴럴 네트워크의 일 예가 도시되어 있다.
도 6에서 컨볼루션 뉴럴 네트워크에 입력되는 최종 이미지는 압축된 데이터를 각각이 900 개의 비트들을 포함하는 1*900 차원의 벡터들로 분할한 경우에 획득되는 이미지에 해당된다. 따라서, 입력되는 최종 이미지는 30*30 차원의 벡터에 해당할 수 있다.
컨볼루션 뉴럴 네트워크는 3개의 컨볼루션 레이어(convolutional layer) 및 1개의 완전 연결 레이어(fully connected layer)로 구성될 수 있다.
첫 번째 컨볼루션 레이어에서는, 입력된 최종 이미지와 5X5의 크기를 갖는 서로 다른 4개의 커널 간의 컨볼루션 연산을 수행하여 피처맵들을 생성할 수 있다. 이때, 생성되는 피처맵들의 개수는 사용된 필터의 개수와 동일할 수 있다. 생성된 4개의 피처맵들 각각에 활성화 함수(activation function)를 적용하여 활성화 맵 (activation map)을 생성할 수 있다. 활성화 함수는 ReLU 함수(Rectified Linear Unit function)에 해당할 수 있으나 이에 제한되는 것은 아니며, 계단 함수(step function) 또는 시그모이드 함수(sigmoid function) 등에 해당할 수도 있다. 한편, ReLU 함수는 하기 수학식 9와 같이 표현할 수 있다.
Figure pat00010
또한, 생성된 4개의 활성화 맵들 각각에 대해서 2*2의 크기를 갖는 커널을 이용하여 풀링(pooling)을 수행할 수 있다. 컨벌루션의 연산 결과인 활성화 맵의 데이터의 크기를 줄이기 위하여 풀링을 수행할 수 있으며, 풀링 연산 시 커널이 위치하는 피처맵 내의 값들에서 특정 값을 뽑아낼 수 있다. 정보를 단순화하기 위한 풀링의 예로, 최대 풀링(max-pooling)이 있다. 이 경우, 풀링 연산 시 커널이 위치하는 피처맵 내의 값들에서 최대 값을 뽑아낼 수 있다.
구체적으로, 최대 풀링 연산은 2*2 크기의 커널을 활성화 맵 위에서 지그재그(zigzag)로 옮겨가며, 2*2 커널 내 존재하는 4개의 픽셀들 중 가장 큰 값을 대표값으로 뽑아낼 수 있다. 결과적으로, 활성화 맵의 크기가 30*30에서 15*15 로 줄어들 수 있다.
두 번째 컨볼루션 레이어에서는 15*15 크기의 활성화 맵 4개에 대해서 5*5의 크기를 갖는 서로 다른 8개의 필터를 이용해 컨볼루션 연산을 수행할 수 있다. 그 결과 생성된 생성된 8개의 특징맵들 각각에 ReLU 함수를 적용하여 활성화 맵을 생성할 수 있다. 생성된 8개의 활성화 맵 각각에 대해서 2*2 의 크기를 갖는 필터를 이용하여 맥스 풀링을 수행할 수 있다. 맥스 풀링을 수행한 활성화 맵의 크기는 15*15 에서 8*8 로 줄어들 수 있다.
세 번째 컨볼루션 레이어에서는 8*8 크기의 활성화 맵 8개에 대해서 5*5 의 크기를 갖는 서로 다른 8개의 필터를 이용해 컨볼루션 연산을 수행하여 특징맵을 생성할 수 있다. 생성된 8개의 특징맵들 각각에 ReLU 함수를 적용하여 활성화 맵을 생성할 수 있다. 최종적으로 8*8 크기의 활성화 맵 8개가 생성되며, 이를 512(=8*8**8)개의 1차원 벡터 형태로 변환할 수 있다.
한편, 세 번째 컨볼루션 레이어와 완전 연결 레이어 사이에 드랍 아웃 (dropout) 레이어를 추가할 수도 있다. 드랍 아웃 레이어는 뉴럴 네트워크가 학습 과정 중에 학습용 데이터에 오버피팅(overfitting)되는 문제를 막기 위한 것이다.
완전 연결 레이어에서는 생성된 512개의 노드들을 F개의 출력 노드들과 완전 연결시킬 수 있다. 이 때 출력 노드의 개수 F는 컨볼루션 뉴럴 네트워크가 추정할 수 있는 서로 다른 서치 버퍼 크기의 개수에 해당할 수 있다.
도 6에서 F는 4로 설정되었으며, 따라서 컨볼루션 뉴럴 네트워크가 추정할 수 있는 서로 다른 서치 버퍼 크기의 개수는 4이다. 예를 들어, 서로 다른 서치 버퍼의 크기는 각각 1024, 2048, 4096 및 8192일 수 있다. 이 때, 서치 버퍼의 크기 1024는 클래스 0, 서치 버퍼의 크기 2048는 클래스 1, 서치 버퍼의 크기 4096는 클래스 2, 서치 버퍼의 크기 8192는 클래스 3으로 설정할 수 있다. 그리고 컨볼루션 뉴럴 네트워크의 학습 과정에서 각 서치 버퍼의 크기에 해당하는 클래스들은 [1, 0, 0 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]과 같이 원핫 벡터(one-hot vector)로 인코딩되어 사용될 수 있다.
완전 연결 레이어에서 출력되는 활성화 값(activation values)들은 소프트맥스 함수(softmax function)로 정규화될 수 있다. 소프트맥스 함수는 하기 수학식 10와 같다.
Figure pat00011
상기 수학식 10에서
Figure pat00012
는 클래스 p에 대응되는 정규화된 활성화 값이며,
Figure pat00013
yp는 클래스 p에 대응되는 정규화되기 전의 활성화 값이다..
한편 컨볼루션 뉴럴 네트워크를 학습시키기 위해 손실 함수(loss function)를 설정할 수 있다. 손실 함수는 평균 제곱 오차(mean squared error) 및 교차 엔트로피 오차 (cross entropy error) 중 어느 하나에 해당할 수 있으나 이에 제한되는 것은 아니다. 교차 엔트로피 오차는 하기 수학식 11과 같이 나타낼 수 있다.
Figure pat00014
상기 수학식 11에서 E는 교차 엔트로피 오차 값이고, T는 클래스의 총 개수이다. Yt는 클래스를 원핫 벡터로 표현하였을 때, 벡터 내 t번째 요소의 값을 의미할 수 있다.
컨볼루션 뉴럴 네트워크는 학습 과정에서 손실 함수의 값을 가능한 작게 하는 매개변수 값을 찾을 수 있다. 이 때, 컨볼루션 뉴럴 네트워크는 매개변수의 미분 값을 계산하고, 계산한 미분 값에 기초하여 매개변수 값을 갱신하는 과정을 반복할 수 있다.
한편, 판단된 압축 알고리즘의 파라미터를 추정하는 다른 실시예로서, 압축된 데이터를 복원하는 장치(100)는 압축된 데이터의 비트 스트림 내 0 및 1의 비율을 나타내는 제 1 특징값 및 비트 스트림 내 동일한 비트의 연속 정도를 나타내는 제 2 특징값을 산출할 수 있다.
예를 들어, 압축된 데이터를 복원하는 장치(100)는 압축 시 사용된 압축 알고리즘이 LZ77 압축 알고리즘에 해당한다고 판단한 경우에는, 압축된 데이터의 비트 스트림으로부터 특징값들을 산출할 수 있다.
압축된 데이터를 복원하는 장치(100)는 제 1 특징값을 산출하기 위한 제 1 통계적 테스트 및 제 2 특징값을 산출하기 위한 제 2 통계적 테스트를 수행할 수 있다.
제 1 통계적 테스트에서, 압축된 데이터를 복원하는 장치(100)는 압축된 데이터의 비트 스트림 β 내에 존재하는 비트 '0'을 '-1'로 변환할 수 있고, 비트 스트림 내에 존재하는 비트 '1'을 '+1'로 변환할 수 있다.
압축된 데이터를 복원하는 장치(100)는 비트 스트림 β 내의 모든 비트들에 대하여 변환 과정이 완료된 경우에, '-1' 또는 '+1'로 변환된 값들을 모두 더할 수 있다. 예를 들어 비트 스트림 β가 '1110'인 경우, '1110'은 '(+1)(+1)(+1)(-1)'로 변환될 수 있다. 따라서 변환된 값들 합 TF는 2에 해당할 수 있다.
압축된 데이터를 복원하는 장치(100)는 변환된 값들 합 TF를 비트 스트림 β의 총 길이 N의 제곱근 값으로 나눈 값인 TF/√N을 제 1 특징값으로 산출할 수 있다. 예를 들어, 비트 스트림 β가 '1110'인 경우 N은 4이므로, 1 특징값은 1이 될 수 있다.
제 2 통계적 테스트는 압축된 데이터의 비트 스트림 β에서 동일한 비트가 얼마나 연속적으로 나오는 지에 대한 테스트이다. 한편, 압축된 데이터의 비트 스트림 β는 1*N 차원의 벡터인 [β1, β2, β3, ??N] 표현될 수 있다.
압축된 데이터를 복원하는 장치(100)는 R(β)/√N을 제 2 특징값으로 산출할 수 있으며, R(β)는 하기 수학식 12와 같이 정의될 수 있다.
Figure pat00015
상기 수학식 12에서 r(n)은 하기 수학식 13과 같이 정의될 수 있다.
Figure pat00016
상기 수학식 13에서, βn은 압축된 데이터의 비트 스트림 β의
Figure pat00017
번째 비트 값에 해당할 수 있다. r(n)은 연속한 두 비트의 값이 동일할 경우에는 0, 연속한 두 비트의 값이 서로 다를 경우에는 1로 설정될 수 있다.
예를 들어, 입력 비트 스트림 β가 '111010'인 경우, r(1)=0, r(2)=0, r(3)=1, r(4)=1, r(5)=1으로 계산될 수 있다. 따라서, R(β)는 4이다.
압축된 데이터를 복원하는 장치(100)는 R(β)를 비트 스트림 β의 총 길이 N의 제곱근 값으로 나눈 값인 R(β)/√N을 제 2 특징값으로 산출할 수 있다. 예를 들어, 비트 스트림 β가 '111010'인 경우 N은 6이므로, 제 2 특징값은 약 2.449(=4/√6)가 될 수 있다.
압축된 데이터를 복원하는 장치(100)는 제 1 특징값 및 제 2 특징값을 뉴럴 네트워크에 입력하여 판단된 압축 알고리즘의 파라미터를 추정할 수 있다.
도 7은 압축 알고리즘의 파라미터를 추정하는 방법에 적용되는 SVM(support vector machine) 분류기의 일 예를 나타내는 도면이다.
먼저, 압축된 데이터를 복원하는 장치(100)는 LZ77 압축 알고리즘의 서치 버퍼 크기를 달리하여 데이터들을 압축하여 다양한 비트 스트림들을 생성할 수 있다. 이 때, 비트 스트림 생성 시 설정된 서치 버퍼 크기를 나타내는 라벨 값 및 비트 스트림 정보를 데이터베이스에 기록할 수 있다.
데이터베이스의 구축이 완료되면, 압축 알고리즘의 파라미터를 추정하는 SVM 분류기의 학습이 진행될 수 있다.
학습 단계에서는 SVM 분류기를 학습시키기 위한 비트 스트림들 및 해당 비트 스트림들 각각의 생성시 설정된 서치 버퍼 크기를 나타내는 라벨 값을 포함하는 정보를 데이터 베이스로부터 가져올 수 있다. 이 때, 비트 스트림들은 특징 벡터 추출부로 입력될 수 있다. 특징 벡터 추출부는 입력된 비트 스트림들에 대하여 제 1 통계적 테스트 및 제 2 통계적 테스트를 수행할 수 있다. 특징 벡터 추출부 입력된 비트 스트림들 각각에 대하여 제 1 특징값 및 제 2 특징값 정보를 포함하는 특징 벡터를 출력할 수 있다. 출력된 특징 벡터 및 라벨 값을 포함하는 정보는 SVM 분류기에 입력되며, SVM 분류기는 라벨 값에 따른 특징 벡터들을 분류할 수 있도록 학습된다.
시험 단계에서는 학습이 완료된 생성된 SVM 분류기를 이용할 수 있다. 시험 단계에서는 학습 단계에서 사용되지 않은 비트 스트림들을 데이터 베이스로부터 가져올 수 있다. 비트 스트림들은 특징 벡터 추출부로 입력될 수 있으며, 제 1 통계적 테스트 및 제 2 통계적 테스트를 통하여 제 1 특징값 및 제 2 특징값 정보를 포함하는 특징 벡터가 출력될 수 있다. 출력된 특징 벡터는 학습이 완료된 SVM 분류기에 입력되며, SVM 분류기는 입력된 특징 벡터에 대해 추정되는 라벨 값을 출력할 수 있으며, 해당 라벨 값에 대응되는 서치 버퍼의 크기를 구할 수 있다.
다시 도 2를 참조하면, 250 단계에서, 압축된 데이터를 복원하는 장치(100)는 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원할 수 있다.
상술한 방식으로 학습된 컨볼루션 뉴럴 네트워크는 최종 이미지를 입력 받아 서치 버퍼 크기 값에 해당하는 클래스를 출력할 수 있다. 또는, 상술한 방식으로 학습된 SVM 분류기는 특징 벡터를 입력 받아 서치 버퍼 크기 값에 해당하는 클래스를 출력할 수 있다. 출력된 클래스로부터 대응하는 서치 버퍼의 크기를 알 수 있으며, 이를 이용하여 압축된 데이터를 압축 해제함으로써 압축 전 원본 데이터를 복원할 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (14)

  1. 압축된 데이터를 복원하는 방법에 있어서,
    상기 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하는 단계;
    상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하는 단계;
    상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하는 단계;
    상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하는 단계;
    상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하는 단계; 및
    상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 생성하는 단계는,
    상기 그룹들 각각에 포함된 비트들의 개수에 기초하여 0부터 N(N은 자연수)까지의 값을 포함하는 배열을 생성하는 단계; 및
    상기 배열 상에 상기 그룹들 각각에 대응되는 값들의 빈도 수를 저장하는 단계; 를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 판단하는 단계는,
    상기 그룹들 각각에 대응되는 값들의 빈도 수를 모두 합한 값에 대한 상기 그룹들 각각에 대응되는 값들 중 기 설정된 구간 내의 값들의 빈도 수를 합한 값의 비율 값이 임계값 미만인지 여부를 판단하는 방법.
  4. 제 3 항에 있어서,
    상기 판단하는 단계는,
    상기 비율이 임계값 미만인 경우에는,
    상기 데이터의 압축 시 사용된 압축 알고리즘은 LZ(Lempel-Ziv)77 압축 알고리즘에 해당한다고 판단하고,
    상기 파라미터는 서치 버퍼(search buffer)의 크기 값에 해당하는 방법.
  5. 제 1 항에 있어서,
    상기 획득하는 단계는,
    상기 비트 스트림을 각각이 복수 개의 비트들을 포함하는 1*M(M은 자연수)차원의 벡터들로 분할하는 단계; 및
    상기 벡터들 각각을 m*m(m은 자연수)차원의 벡터들로 변환하여 상기 복수의 이진 영상들을 획득하는 단계; 를 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 최종 이미지는,
    상기 벡터들 각각에 포함되는 복수 개의 비트들의 개수 및 상기 판단된 압축 알고리즘의 파라미터에 기초하여 결정되는 방법.
  7. 압축된 데이터를 복원하는 방법을 구현하기 위한 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체에 있어서,
    상기 방법은,
    상기 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하는 단계;
    상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하는 단계;
    상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하는 단계;
    상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하는 단계;
    상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하는 단계; 및
    상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 단계를 포함하는, 기록 매체.
  8. 하드웨어와 결합되어, 압축된 데이터를 복원하는 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 방법은,
    상기 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하는 단계;
    상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하는 단계;
    상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하는 단계;
    상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하는 단계;
    상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하는 단계; 및
    상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 단계를 포함하는, 컴퓨터 프로그램.
  9. 하나 이상의 명령어(instruction)를 저장하는 메모리; 및
    상기 하나 이상의 명령어를 실행함으로써, 압축된 데이터의 비트 스트림(bit stream)을 각각이 복수 개의 비트들을 포함하는 그룹들로 분할하고, 상기 그룹들 각각에 대응되는 값들의 빈도 분포를 생성하고, 상기 빈도 분포에 기초하여 상기 데이터의 압축 시 사용된 압축 알고리즘을 판단하고, 상기 비트 스트림으로부터 복수의 이진 영상(binary image)들을 획득하고, 상기 복수의 이진 영상들을 합하여 최종 이미지를 획득하고, 상기 최종 이미지를 뉴럴 네트워크에 입력하여 상기 판단된 압축 알고리즘의 파라미터를 추정하고, 상기 파라미터를 이용하여 상기 데이터를 압축 해제하여 복원하는 프로세서를 포함하는 장치.
  10. 제 9 항에 있어서,
    상기 프로세서는,
    상기 그룹들 각각에 포함된 비트들의 개수에 기초하여 0부터 N(N은 자연수)까지의 값을 포함하는 배열을 생성하고,
    상기 배열 상에 상기 그룹들 각각에 대응되는 값들의 빈도 수를 저장하는 장치.
  11. 제 9 항에 있어서,
    상기 프로세서는,
    상기 그룹들 각각에 대응되는 값들의 빈도 수를 모두 합한 값에 대한 상기 그룹들 각각에 대응되는 값들 중 기 설정된 구간 내의 값들의 빈도 수를 합한 값의 비율 값이 임계값 미만인지 여부를 판단하는 장치.
  12. 제 9 항에 있어서,
    상기 프로세서는,
    상기 비율이 임계값 미만인 경우에는,
    상기 데이터의 압축 시 사용된 압축 알고리즘은 LZ(Lempel-Ziv)77 압축 알고리즘에 해당한다고 판단하고,
    상기 파라미터는 서치 버퍼(search buffer)의 크기 값에 해당하는 장치.
  13. 제 9 항에 있어서,
    상기 프로세서는,
    상기 비트 스트림을 각각이 복수 개의 비트들을 포함하는 1*M(M은 자연수)차원의 벡터들로 분할하고,
    상기 벡터들 각각을 m*m(m은 자연수)차원의 벡터들로 변환하여 상기 복수의 이진 영상들을 획득하는 장치.
  14. 제 13 항에 있어서,
    상기 최종 이미지는,
    상기 벡터들 각각에 포함되는 복수 개의 비트들의 개수 및 상기 판단된 압축 알고리즘의 파라미터에 기초하여 결정되는 장치.
KR1020190157684A 2019-11-29 2019-11-29 압축된 데이터를 복원하는 방법 및 장치 KR102317205B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190157684A KR102317205B1 (ko) 2019-11-29 2019-11-29 압축된 데이터를 복원하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190157684A KR102317205B1 (ko) 2019-11-29 2019-11-29 압축된 데이터를 복원하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210067759A true KR20210067759A (ko) 2021-06-08
KR102317205B1 KR102317205B1 (ko) 2021-10-25

Family

ID=76399942

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190157684A KR102317205B1 (ko) 2019-11-29 2019-11-29 압축된 데이터를 복원하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102317205B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150103992A (ko) * 2014-03-04 2015-09-14 김정훈 이진 데이터의 압축 및 복원 방법과 장치
KR101890365B1 (ko) * 2017-07-26 2018-08-21 국방과학연구소 압축된 데이터의 오류를 검출하는 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150103992A (ko) * 2014-03-04 2015-09-14 김정훈 이진 데이터의 압축 및 복원 방법과 장치
KR101890365B1 (ko) * 2017-07-26 2018-08-21 국방과학연구소 압축된 데이터의 오류를 검출하는 방법 및 장치

Also Published As

Publication number Publication date
KR102317205B1 (ko) 2021-10-25

Similar Documents

Publication Publication Date Title
US20180053091A1 (en) System and method for model compression of neural networks for use in embedded platforms
US20190163904A1 (en) Apparatus for detecting variants of malicious code based on neural network learning, method therefor and computer readable recording medium storing program for performing the method
JP6998968B2 (ja) ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム
US8731317B2 (en) Image classification employing image vectors compressed using vector quantization
AU2011200343B2 (en) Image identification information adding program, image identification information adding apparatus and image identification information adding method
US20140254936A1 (en) Local feature based image compression
US11436491B2 (en) System and method for improving convolutional neural network-based machine learning models
CN116783825A (zh) 对数据日志文件进行有损压缩的方法和系统
CN113360911A (zh) 恶意代码同源分析方法、装置、计算机设备和存储介质
EP4237977B1 (en) Method for detection of malware
KR102242904B1 (ko) 압축 알고리즘의 파라미터를 추정하는 방법 및 장치
US20210042550A1 (en) Information processing device, information processing method, and computer-readable recording medium recording information processing program
CN100535926C (zh) 数据处理,图像处理和图像分类方法及设备
CN113361589A (zh) 基于迁移学习与知识蒸馏的珍稀濒危植物叶片识别方法
CN113038134B (zh) 一种图片处理方法、智能终端及存储介质
CN113298892A (zh) 一种图像编码方法和设备,及存储介质
KR102317205B1 (ko) 압축된 데이터를 복원하는 방법 및 장치
JP6856950B2 (ja) 変換装置、変換方法、プログラム、ならびに、情報記録媒体
KR20210038027A (ko) 신경망 압축 훈련 방법 및 압축된 신경망을 이용하는 방법
CN116975864A (zh) 恶意代码检测方法、装置、电子设备及存储介质
CN111582284A (zh) 用于图像识别的隐私保护方法、装置和电子设备
Chung et al. Filter pruning by image channel reduction in pre-trained convolutional neural networks
Dutta et al. An efficient image compression algorithm based on histogram based block optimization and arithmetic coding
US11663289B1 (en) Quantum modulation-based data search
CN109299260B (zh) 数据分类方法、装置以及计算机可读存储介质

Legal Events

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