機械学習で画像の色を復元する方法

機械学習で画像の色を復元する方法

[[217139]]

この記事では、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

それでは、ステップ 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 つの方法: 対抗策

>>:  「人工知能+ヘルスケア」が急成長

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

自然:機械が人間の言語の出現を促進する

今週ネイチャー誌に掲載された科学報告で、研究者らはロボットが人間の言語の生成を促進できることを発見し...

...

ChatGPTがついにオンラインになり、回答のソースを提供できるようになりました

たった今、OpenAI が重要なニュースを発表しました。ChatGPT が正式にインターネットに接続...

冬季オリンピックは人工知能産業の導入を加速し、デジタル経済の徹底的な発展を推進するだろう

人工知能は、この冬季オリンピックに知能の要素を加え、競技の効率とレベルを向上させ、テクノロジーに満ち...

...

人工知能は電子商取引の分野でどのような応用が期待できるでしょうか?

科学技術と経済社会の急速な発展に伴い、人工知能の応用はますます一般的になり、その発展は私たちの仕事や...

今日のAIの優れた使用例

企業は AI パイロットを実施し、AI を本番環境に移行しています。大手組織はここに賭けており、すで...

3D生成の中核理論の再構築:VAST、香港大学、清華大学が「ゼロ」のトレーニングデータで3Dモデルを生成

トレーニング データは必要ありません。「宿題をしているバナナマン」などの文をモデルに説明するだけです...

この AI はわずか 20 分で複雑な芸術作品を作成できます。 1080グラフィックカードが実行可能

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Google の家庭用ロボットがスタンフォード大学のエビ揚げロボットに挑む!猫と遊ぶためにお茶と水を出し、3回続けてフリックして猫と遊ぶ

インターネット上で話題となったスタンフォード大学のエビ揚げロボットは、1日で人気が急上昇した。結局の...

AI は「彼ら」による盗聴を防ぐことができますか?

次のような状況に遭遇したことがあるかもしれません:携帯電話でアプリを開くと、最初に表示されるのは数分...

2020年が到来。人工知能について知っておくべきこと

新年を迎え、皆様にお楽しみいただいている「まとめ記事」が今年も登場です! 2020年に人工知能が大き...

...

政府規制のAIの時代が到来

スティーブン・ホーキング博士はかつてこう言った。「効果的な人工知能の開発に成功すれば、私たちの文明史...

...