この記事では、k-means アルゴリズムを使用して画像の色を復元することを提案し、アルゴリズムの手順を紹介し、それを画像に適用します。復元前後の画像を比較することで、k-means アルゴリズムの有効性が実証されます。 K-means は、機械学習で最も人気があり、広く使用されているアルゴリズムの 1 つです。この投稿では、k-means アルゴリズムを使用して画像の色 (ピクセルは減らさない) を減らし、それによって画像のサイズも減らします。実行可能アプリケーション ファイル (Spark への依存度が高いためサイズは 150 MB) がすでにユーザー フレンドリなインターフェイスを提供しているため、この分野に関する事前の知識は必要ありません。そのため、さまざまな画像を簡単に試すことができます。完全な実装コードは GitHub で入手できます。 K平均法アルゴリズム k-mean アルゴリズムは、類似したデータを異なるカテゴリまたはクラスターに分割する教師なし学習アルゴリズムです。データにラベルが付いておらず、アルゴリズムが類似データがどのように分類されたかに関するフィードバックを必要としないため、教師なし学習と呼ばれます (予想されるカテゴリの数など。これについては後で詳しく説明します)。 応用 k-means アルゴリズムの応用としては、顧客サービス、クラスター コンピューティング、ソーシャル ネットワーキング、天文学データ分析などがあります。 顧客サービス 顧客に関する大量のデータがあり、特定のグループにより良いサービスを提供できるように、顧客のタイプについてさらに詳しく知りたいとします。ジーンズや T シャツを作りたい場合、特定の国で体のサイズごとに人々をグループ分けして、どのサイズを生産すればよいかを把握する必要があります。 クラスターコンピューティング パフォーマンスの観点からは、特定のコンピューターをグループ化する方が適切です。たとえば、スイッチは、ネットワークの観点から連携して動作したり、同様のコンピューティング サービスを提供したりするのに適しています。 K-means アルゴリズムは、類似の機能を持つコンピューターをグループ化できるため、レイアウトと最適化が向上します。 ソーシャルネットワーク ソーシャル ネットワークでは、関係性、好み、類似性などによって顧客をグループ化し、マーケティングの観点からより適切にターゲットを絞ることができます。提供されたデータの入力に基づいて、k-means アルゴリズムは、同じデータをさまざまな観点から分類するのに役立ちます。 天文データ解析 K 平均法は、銀河の形成を理解したり、天文学データの凝集性を見つけたりするのにも使用されます。 仕組み k-means アルゴリズムには 2 つのステップがあります。データが 4 つのグループに分かれていると仮定して、次の手順を実行します。 注: 手順を開始する前に、k-means アルゴリズムはデータからクラスター センターと呼ばれる 3 つのサンプルをランダムに抽出します。
クラスターの中心に大きな動きがなくなるまで、これらの手順を繰り返します。単純なデータを使用して次のアルゴリズムが実行されます。 ステップ1 それでは、ステップ 1 がどのように達成されるかについて説明します。多次元特徴データに慣れていない場合。まず、いくつかの変数: k: クラスターの数 Xij: 例iのj番目の固有値 μij: 例iのj番目の特徴のクラスター中心(クラスター中心がランダムに選択されるという点でXと同様) このステップでは、反復処理を通じて、クラスター センターとの類似性が計算され、適切なカテゴリに配置されます。より正確には、サンプルのユークリッド距離を取得し、最小距離から中心を選択することによって計算されます。中心点はランダムに選択されるため、中心点からのすべての特徴点のユークリッド距離が合計されます。 あるいは、もっと簡単に、計算量も少なくて済む方法もあります。 ステップ2 図から、このステップでは中心点をステップ 1 の類似グループに移動します。より正確には、各中心の新しい位置は、中心点に類似している、またはグループに属するすべての点の平均を取ることによって計算されます (手順 1 のグループ化)。 たとえば、ステップ 1 の後に 4 つのクラスターと 103 の例がある場合、結果は次のようになります。 μ1 = 20は、1~20の番号が付けられた例の特徴中心が20であることを意味する。 μ2=10は、21~31番の例の特徴中心が10であることを意味する。 μ3=30は、32-62番の例の特徴中心が30であることを意味する。 μ4=40は、63-103番の例の特徴中心が40であることを意味する。 新しい計算方法は次のとおりです。 これは、特定のセンターと同様に、すべてのデータの平均です。 繰り返す、繰り返す、繰り返す…いつ止まるのでしょうか? グラフに示すように、中心がデータ クラスターにどんどん近づいていき、新しい中心が得られるまで、手順 1 と 2 を繰り返します。アルゴリズムは結果に満足するまで実行され、その後停止するには明示的に指示する必要があります。 1 つのアプローチは、反復処理時に中心体がグラフ内で移動しないか、またはほとんど移動しないことです。正式には、コスト関数を計算できます。これは基本的に、ステップ 1 で計算された平均です。 μcはXiの中心値です。各例は、異なるグループまたはセンターの一部になることができます。各反復コストは前回のコストと比較され、変化が非常に小さい場合は反復を停止します。たとえば、改善 (コスト関数の差) が 0.00001 (または適切と思われる値) の場合、続行する意味がないため停止できます。 アルゴリズムは間違いを犯す可能性がありますか? 通常は問題なく動作しますが、k-means アルゴリズムではグローバル最適値ではなくローカル最適値しか達成できないことはよく知られています。この場合、k-means アルゴリズムでは、次の図に示すように、より明白なグループ化を見つけることができません。 幸いなことに、解決策は非常に簡単です。k-means アルゴリズムを数回実行し、最良の結果を選択するだけです。このソリューションが役立つのは、最初に k-means アルゴリズムをランダムに初期化し、たとえば 10 回実行すると、ローカル最適ソリューションが得られるからです。もちろん、これは何度も実行され、必要な結果は 1 つだけなので、実行時間が長くなります。一方、アルゴリズムを並列で実行したり、異なるクラスターで実行したりすることは完全に可能であるため、通常はこれが実用的なソリューションになります。 もちろん、k-means アルゴリズムにはここで説明した以上の機能があるため、より深い理解を得るためにこの記事を強くお勧めします。 アルゴリズムの実行と結果 このセクションでは、アプリケーションを実行し (コードをダウンロードすることもできます)、k-means アルゴリズムが色の復元を実行する方法について詳細に説明します。 色再現 k-means アルゴリズムは画像上のピクセルを減らすのではなく、類似した色を組み合わせることで画像内の色の数を減らすことに注意してください。通常の画像には数千色以上あることが多いため、色の数を減らすとファイル サイズを大幅に削減できます。 色の数を減らすと画像のサイズが小さくなる仕組みを説明するために、例を見てみましょう。 1280 x 1024 ピクセルの画像があり、各ピクセルに単純な色表現 (RGB 24 ビット、赤 8 ビット、緑 8 ビット、青 8 ビット) があるとします。全体として、画像を表すには 1280 * 1024 * 24 = 31457280 ビット、つまり 30 MB が必要です。ここで、色の総数を 16 に減らすということは、ピクセルあたり 24 ビットを使用する代わりに、16 色を表すのに 4 ビットが必要になることを意味します。これで、1280 * 1024 * 4 = 5MB となり、メモリは 6 分の 1 に減りました。もちろん、画像は以前ほど鮮明にはなりませんが (現在は 16 色しかありません)、適切な画像が必ず見つかります。 実行と結果 アルゴリズムを実行する最も簡単な方法は、JAR パッケージをダウンロードし、独自のイメージを使用して実行することです (Java がインストールされている必要があります)。私のコンピューターでは、色数を 16 に減らしてこれを実行するのに約 1 分かかります (Spark は並列で処理を実行するため、CPU と RAM を多く使用するとより効果的です)。ユーザー インターフェイスでは、試してみたい画像ファイルを選択できるほか、画像の色数を減らすこともできます。 UI と結果の例を次に示します。 ファイルサイズが 4 分の 1 に縮小されていることがわかりますが、最終的な画像の見栄えはまったく悪くありません。数回実行すると、より良い結果が得られる可能性があります。 24色を試してみましょう: 見た目はかなり良くなり、サイズもそれほど大きくありません (わずか 0.08 MB)。この画像の場合、24 から 28 の間が最適なビジュアルであると思われます。 結果は良さそうに見えますが、最適な画像を選択するのは手作業です。結局のところ、私たちはビジュアルに最適な画像を選択して実行しているのです。 この問題はさまざまな方法で解決できると信じています。 1 つの解決策は、元の画像のすべての色を単純に数え、それに基づいて、画像の見栄えを保ちながら画像に使用する色の数を定義することです。これは、線形回帰などの機械学習予測アルゴリズムを使用することで実行できます。アルゴリズムは、画像に異なる色を与えることによってトレーニングされ、同時に、各画像が適切に見えるようになります。いくつかの重要な例が与えられた後、アルゴリズムはさまざまな画像に基づいて最適な色数に減らす方法を学習しました。ここで、線形回帰アルゴリズムを使用して、次の画像の色がどれだけ少なくなるかを予測します。 コードをダウンロードして Java IDE で実行できます。もちろん、ソースで実行したくない場合は、コードをダウンロードして maven: mvn clean install exec:java を実行します。 |
<<: サイバー犯罪者が機械学習を利用する 7 つの方法: 対抗策
ドライバーが毎回信号を直進できるように旅行を計画できたらどうなるでしょうか?これは、特に幸運な状況下...
7月29日のニュース、海外メディアの報道によると、マイクロソフトは投資家に対し、グラフィックス・プロ...
1. 自然言語理解と言語モデル1.1 自然言語処理自然言語処理 (NLP) は人工知能 (AI) の...
Codex よりも優れた C 言語を記述できる AI コード生成モデルがオープンソース化されました。...
最近、西安で3Wイノベーションフェスティバルが開催されました。西安起業・イノベーション週間の代表的な...
研究により、印刷されたステッカーだけで AI システムを「騙す」ことができ、検出システムが目の前にい...
Neural Radiance Fieldsは2020年に提案されて以来、関連論文が飛躍的に増加し...
「ジェネレーティブ AI はビジネスや運用モデルに多大な影響を及ぼすでしょう」と、ガートナーの著名な...
ディープラーニング プロジェクトに適した環境を構築するのは簡単な作業ではありません。処理すべきことは...
モノのインターネットは長い間、インターネットの第2フェーズとして宣伝されてきましたが、現在、コロナウ...
Alpha Goの勝利により、人工知能における「ディープラーニング」の概念が急速に普及し、画像認識の...
海外メディアの報道によると、カリフォルニア大学バークレー校の研究者らは、ウェアラブルセンサーと人工知...
米国のベンチャーキャピタル企業a16zは10月9日、Cエンドユーザーに公開されている現在市場に出回っ...