15 Most Popular Data Compression Algorithms

Spread the love
  • 1

データ圧縮アルゴリズムが同じまたはデータのいくつかの範囲に似て保持時にファイルのサイズの減少のプロセスとして定義することができる。 これは、不要なデータの除去を実行したり、より高い効率を得るためにデータを再度作成することによって行われます。

圧縮の時点で、非可逆または可逆の方法から選択するオプションがあります。 非可逆圧縮方式について話すと、データを永久に消去してしまいます。 一方、可逆圧縮は、元のデータの世話をする。 あなたが選択したタイプは、あなたのファイルがあることを必要とするどのように品質に依存します。
この記事では、ディープラーニングに基づくロスレスデータ圧縮アルゴリズムと画像およびビデオ圧縮アルゴリズムの混合物を見つけるでしょう。

ロスレスデータ圧縮アルゴリズムは、通常、アーカイブまたは他の高品質の機能を実行するために使用される存在です。 これらのデータ圧縮アルゴリズムは、ファイルサイズの縮小を実行することを許可します。 また、ファイルが復元する必要がある場合は完全に復元できることを保証します。

目次

LZ77

LZ77 1977年に発表されて、非常に多くの他のロスレス圧縮アルゴリズムのベースとして呼び出された。 通常「スライディングウィンドウ」という方式を採用している。 この方法では、それは表すためのトリプルを利用した辞書の世話をする:

  • オフセット-それはフレーズの実際の開始とfile.
  • Run-length-それはフレーズを作る際にあなたを助ける文字の量として定義されています
  • Deviating characters-これらは新しいフレーズを示す市場関係者である。

使用されているフレーズが元のフレーズと完全に等しいことを示し、また、異なる文字があるかどうかを定義します。

ファイルを解析すると、圧縮データの内容やサイズも反映し、辞書が動的に更新されます。 Michael Rodeh氏が発表し、その後改良が加えられた。 これは、LZ77データ圧縮アルゴリズムの主要な代替手段として使用できますが、ファイル内の任意のオフセットに使用するオプションもあります。 もし線形に使用しないのであれば、かなりの量のメモリストレージを必要とします。 この条件から、LZ77は使用するのに適した選択肢となります。 このデータ圧縮アルゴリズムは実装が簡単で、ハードウェアに実装すると非常に高いパフォーマンスを発揮する可能性があります。

これは、広く使用されているUnixデータ圧縮アルゴリズムユーティリティ圧縮し、GIF画像形式で使用されているアルゴリズムです。 コンピュータで広く使われるようになった最初のデータ圧縮アルゴリズムとなった。 大きな英語のテキストファイルは、通常、LZWから元のサイズの約半分に圧縮することができます。

LZSS

LZSS とは Lempel Ziv Storer Szymanski の略で、1982年に開発・発表されたものです。 LZ77を改良したデータ圧縮アルゴリズムである。 この圧縮処理は、置換によってファイルサイズが減少するかどうかを監視する方法を含むことによって行われます。 もし、減少しないのであれば、入力は元の形のまま残されます。 このアルゴリズムは、RAR や ZIP などの異なるフォーマットへのファイルのアーカイブや、ネットワークデータの圧縮に主に使用されます。 LZSSは、記号の文字列を同じ文字列の辞書の位置への参照に置き換えようとするものである。 LZ77とLZSSの重要な違いは、LZ77では、辞書の参照は置換する文字列よりも長くなる可能性があるということです。 3684>

Deflate

Deflate は可逆データ圧縮アルゴリズムファイル形式で、LZSS とハフマン符号化を組み合わせて使用している。 1993年にPhil Katzによって設計されました。 ハフマン符号化も1952年に開発されたアルゴリズムです。 これは、文字の頻度に基づいてコードを割り当てるのに役立つエントロピー符号化アルゴリズムと定義することができます。

Katz は、Deflate ストリームを構築するために使用されるオリジナルのアルゴリズムも設計しました。 RFC 文書に記載されているように、Deflate ファイルを生成するアルゴリズムは、特許でカバーされていない方法で実装可能であると広く考えられていました。 そのため、Katz氏が設計した主な目的であるZIPファイル形式に加えて、広く使用されるようになったのです。 3684>

LZMA

LZMA は Lempel Ziv Markov chain algorithm の略で、1998年に設計・公開された。 LZ77の改良版とも言えます。 この変更は、.7z 形式の Zip アーカイバ用に行われました。 修正されたLZ77をバイトレベルではなくビットレベルで実装する連鎖圧縮の方法が使われています。 3684>

他の圧縮ステップの性能は、正確な実装に依存する。 このデータ圧縮アルゴリズムは、1977年にAbraham LempelとJacob Zivによって発表されたLZ77アルゴリズムにやや非常に似た辞書圧縮方式を使用している。 また、高い圧縮率と可変の圧縮辞書サイズも特徴である。 LZMA2

LZMA2 は2009年に設計・リリースされた。 これは、LZMAの修正版と定義することもできる。 これは、より大きなマルチスレッド機能でその性能を向上させることにより、LZMAをより良くしています。 LZMA2はまた、非圧縮性データの取り扱いを改善します。 これは、非圧縮データと LZMA データの両方を含むことができるシンプルなコンテナー形式で、それも複数の異なる LZMA エンコーディングパラメーターを使用します。

LZMA2 は、任意にスケーラブルなマルチスレッド圧縮および伸長、および部分的に非圧縮性のあるデータの効率的な圧縮をサポートします。 しかし、セキュリティ上の問題があり、LZMA よりも安全でない場合があり、効率も悪くなります。 簡単に言えば、これはあなたにとって有用ですが、LZMA と比較してそれほど安全ではありません。

Multi-Layer Perceptron (MLP) – Based Compression

MLP は、入力、処理、および出力データのために複数のニューロン層を使用する技術として定義することができます。 これは、次元の縮小タスクや、データの圧縮のために実装することができます。

  • バイナリコーディング:標準的な2つのシンボルのコーディング。
  • 空間領域変換-データに対するピクセル単位の変更。

最適なバイナリコードの決定のために、MLPアルゴリズムは、分解ニューラルネットワークに上記のプロセスからの出力を使用します。

さらに、このアルゴリズムは、バックプロパゲーションによって、隣接するデータに基づいて完全にデータを正確に近似できるように、直感的な技術で修正された。 画像や動画のデータ圧縮に非常に役立ちます。

Dee Coder- Deep Neural Network Based Video Compression

Deep Coder は Convolutional Neural Network (CNN) ベースのフレームワークとして定義されています。 これは、私たちが長い間使用してきたこれらのビデオ圧縮技術に代わる表現になります。 予測信号と残差信号には、このモデルによって異なる畳み込みニューラルネットワーク(CNN)が使用されています。

Convolutional Neural Network (CNN) – ベース圧縮

CNN は異なる層のニューラル ネットワークと定義されています。 これは、主に画像の認識や特徴の検出に使用されます。 圧縮に適用した瞬間、これらのネットワークは、隣接するピクセル間の接続を計算するために畳み込みを使用します。 MLPベースのアルゴリズムと比較した場合、CNNはそれらよりも優れた圧縮結果を示しています。 これに加えて、CNN ベースのデータ圧縮アルゴリズムでは、JPEG 画像の品質が改善されます。 これは、ピークの信号ノイズ比と構造的な類似性を低減することによって行われます。

CNN ベースの圧縮は、High-Efficiency Video Coding 標準の性能と一緒になることもできます。 これは、エントロピーの推定を使用して行われます。 また、ファイルの圧縮を実行する際に非常に役立ちます。

Generative Adversarial Network (GAN) – Based Compression

GAN は、競合する 2 つのネットワークを使用するニューラル ネットワークの代替手段として定義することができます。 これは、より正確な分析および予測の生産のために行われます。 2017年、GANベースのアルゴリズムが初めて開発されました。 これらのデータ圧縮アルゴリズムは、JPEGやWebPのような従来の一般的に使用される方法と比較して、ファイルを2.5倍以上小さく圧縮することができます

GANベースのアルゴリズムは、並列処理が一緒に使用されているリアルタイム圧縮に使用することができます。 このアルゴリズムは、最も一致する特徴に基づいて画像を完全に圧縮するように機能します。

復号化の際には、これらの特徴によってなされた予測に基づいて画像が再構築されます。 CNNベースの圧縮と比較すると、GANベースの圧縮は、敵対的な損失を排除することにより、非常に高品質な画像を生成することができます。 これらのモデルは、圧縮されていないシンボル・ストリームの前のシンボルのセットを使用して、ストリームの次のシンボルを予測する。 PPM アルゴリズムは、クラスター分析でデータを予測されたグループにクラスタリングするためにも使用できます。
前のシンボルの数 n は、PPM(n) として示される PPM モデルの順序を決定します。 すべてのn個の文脈記号に基づいて予測ができない場合、n-1個の記号で予測が試みられる。 この処理は、一致する記号が見つかるか、文脈に残る記号がなくなるまで繰り返される。 その時点で、固定予測が行われます。
PPM 圧縮の実装は、他の詳細において大きく異なります。 実際のシンボル選択は通常、算術符号化を使用して記録されるが、ハフマン符号化、あるいはある種の辞書符号化技術を使用することもできる。

RLE(Run-length encoding)

RLW は、データのラン(同じデータ値が多くの連続したデータ要素で発生するシーケンス)が元のランとしてではなく、単一のデータ値およびカウントとして保存されているロスレス データ圧縮の一形態である。 このようなランを多く含むデータに対して最も有効である。

例えば、アイコン、線画、コンウェイの人生ゲーム、アニメーションなどの単純なグラフィック画像。 また、RLE は、黒と白の画像を圧縮するために CompuServe でサポートされていた初期のグラフィック ファイル形式を参照するために使用されることもありますが、後の Graphics Interchange Format (GIF) に広く取って代わられました。 RLE は、Windows 3.x の起動画面を圧縮するために使われた Run Length Encoded Bitmap という拡張ルールを持つ、 Windows 3.x のあまり使われていない画像フォーマットも指します。

bzip2

bzip2 は Burrows-Wheeler アルゴリズムを使ったフリーでオープンソースのデータ圧縮プログラムで、 このアルゴリズムを使用しています。 これは単一のファイルを圧縮するだけで、 ファイルアーカイバではありません。 Julian Seward によって開発され、Federico Mena によってメンテナンスされています。 Seward は 1996 年 7 月に bzip2 の最初の一般向けリリース、バージョン 0.15 を作成した。 圧縮機の安定性と人気は次の数年間で高まり、Seward は 2000 年後半にバージョン 1.0 をリリースしました。

2010年以来、プロジェクトの更新は 9 年間中断しています。 2019年6月4日、Federico Menaはbzip2プロジェクトのメンテナシップを受け入れた。bzip2は、100~900kBのサイズのブロック単位でデータを圧縮する。

頻繁に繰り返される文字列を同一の文字列に変換するために、Burrows-Wheeler変換を使用します。 bzip2 の祖先である bzip はハフマン符号の代わりに算術符号を使っていた。 3684>

Huffman coding

Huffman code is a particular type of optimal prefix code that is commonly used for lossless data compression. このような符号を見つける、または使用するプロセスは、David A. Huffman が MIT の Sc.D. 学生であったときに開発し、1952 年の論文「A Method for the Construction of Minimum-Redundancy Codes」で発表したアルゴリズムである Huffman コーディングを利用して進められます。 アルゴリズムは、ソース・シンボルの各可能な値に対する推定確率または発生頻度(重み)からこのテーブルを導出する。

他のエントロピー符号化法と同様に、一般に、より一般的な記号はより一般的でない記号よりも少ないビットを使用して表現される。 ハフマンの方法は効率的に実装することができる。 3684>

ZStandard

ZStandard(またはzstd)は、FacebookでYann Colletが開発したロスレスデータ圧縮アルゴリズムである。 ZstdはC言語による参照実装で、この実装のバージョン1は2016年8月31日にフリーソフトウェアとしてリリースされました。
Zstandardは、DEFLATEアルゴリズム(1991年に開発、オリジナルのZIPおよびgzipプログラムで使用)と同等の圧縮率を与えるように設計されていますが、特に解凍についてはより高速です。 圧縮レベルはマイナス 5 (最も速い) から 22 (圧縮速度は最も遅いが、圧縮率は最も良い) までの範囲で調整可能である。

Zstd の最大圧縮レベルでは、LZMA、LZAHM、PPM に近い圧縮率になります。 LZA や bzip2 よりも良い性能である。 Zstandard は現在のパレートフロンティアに到達しており、同等以上の圧縮率で現在利用可能などのアルゴリズムよりも速く伸長する

辞書は小さなファイルの圧縮率に大きな影響を与えることがあるので、Zstandard はユーザーが提供した圧縮辞書を使用することが可能である。 また、トレーニング モードもあり、サンプル セットから辞書を生成できます。

まとめ

これらのデータ圧縮アルゴリズムは、ファイル サイズを最適化するのに役立ちます。 データ圧縮アルゴリズムの異なるタイプは、あなたに異なる結果を提供します。 しかし、ここで適切なアルゴリズムが見つからない場合、このガイドを見て、検索を絞り込むことができます。 アルゴリズムの種類には事欠きませんが、プロジェクトに適したアルゴリズムを探す際には、具体的に説明する必要があります。

この記事が、ニーズに応じて最適なデータ圧縮アルゴリズムを選択するためにお役に立てれば幸いです。 この記事をお読みいただき、ありがとうございました。 また、Best Encryption and Hashing algorithms.

Stay Tuned

00vote
Article Rating

コメントを残す

メールアドレスが公開されることはありません。