この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。 コンピュータビジョンの基礎としての画像セグメンテーションは、画像理解の重要な部分であり、画像処理における難しさの 1 つです。 では、画像をエレガントかつ適切に分割するにはどうすればよいでしょうか? わずか 5 行のコードで数分で実装できるライブラリ、 PixelLibをご覧ください。 もちろん、このような有用なプロジェクトにはオープンソースが必須です。 画像セグメンテーションを使用する理由は何ですか?コンピューター ビジョンの研究者は、画像セグメンテーションの問題に頻繁に遭遇しますが、それでも、初心者の便宜のために、その「詳細な説明」を行う必要があります。 各画像はピクセル値のセットで構成されていることは誰もが知っています。簡単に言えば、画像セグメンテーションはピクセルレベルで画像を分類するタスクです。 画像セグメンテーションで使用される「独自のトリック」のいくつかにより、いくつかの重要なコンピューター ビジョン タスクを処理できるようになります。主に2つのカテゴリーに分かれています:
重要なシーンで頻繁に登場します。
したがって、画像セグメンテーション技術の応用は依然として非常に重要です。 次に、早速本題に入り、この魔法のような使いやすいライブラリ、PixelLib について学習してみましょう。 PixelLibのクイックインストールPixelLib は、画像のセグメンテーションを非常に簡単にするライブラリです。セマンティック セグメンテーションとインスタンス セグメンテーションは、わずか 5 行のコードで実現できます。 いつものように、まずはインストール環境の紹介をさせていただきます。 TensorFlow、Pillow、OpenCV-Python、scikit-image、PixelLib の最新バージョンをインストールします。
PixelLibはセマンティックセグメンテーションを実装しますセマンティック セグメンテーション タスクを実行する場合、PixelLib は Deeplabv3+ フレームワークと pascalvoc で事前トレーニングされた Xception モデルを使用します。 pascalvoc で事前トレーニングされた Xception モデルを使用してセマンティック セグメンテーションを実行します。
コードの各行を見てみましょう。
セマンティックセグメンテーションを実行するために使用されるクラスがpixellibからインポートされ、クラスのインスタンスが作成されます。
関数を呼び出して、pascal voc でトレーニングされた xception モデルをロードします (xception モデルは、記事の最後にあるリンクからダウンロードできます)。
これは画像をセグメント化するコード行です。この関数には 2 つのパラメータが含まれます。
次に、写真を見て何が起こっているのか見てみましょう。 画像ファイルの名前は、下の図に示すように、sample1.jpg です。 実行コードは次のとおりです。
コードを実行すると、保存された画像内のすべてのオブジェクトがセグメント化されていることがわかります。 コードを少し変更して、対象オブジェクトのセグメンテーションオーバーレイを含む画像を取得することもできます。
セグメント化されたオーバーレイを含む画像を生成するために、追加のパラメータが追加され、True に設定されます。 以下のコードを変更することで、セグメンテーションを実行するために必要な推論時間を確認できます。
出力は次のようになります。
ご覧のとおり、画像に対するセマンティックセグメンテーションの実行にはわずか 8.19 秒しかかかりませんでした。 この Xception モデルは、20 個の一般的なオブジェクト カテゴリを含む PascalVOC データセットを使用してトレーニングされます。 オブジェクトとそれに対応するカラーマップを以下に示します。 PixelLibはインスタンスセグメンテーションを実装するセマンティックセグメンテーションの結果は良さそうに見えますが、画像セグメンテーションの特定のタスクには理想的ではない可能性があります。 セマンティック セグメンテーションでは、同じカテゴリのオブジェクトに同じカラーマップが割り当てられるため、セマンティック セグメンテーションでは特に十分な画像情報が提供されない可能性があります。 このようにして、インスタンス セグメンテーションが誕生しました。同じカテゴリのオブジェクトには異なるカラーマップが割り当てられます。 PixelLib がインスタンスのセグメンテーションを実行するときは、Mask RCNN フレームワークに基づいています。コードは次のとおりです。
もう一度、まずコードの各行を分解してみましょう。
インスタンス分割を実行するためのクラスがインポートされ、クラスのインスタンスが作成されます。
これは、インスタンスのセグメンテーションを実行するために Mask RCNN モデルをロードするコードです (Mask RCNN モデルは、記事の最後にあるリンクからダウンロードできます)。
これは画像に対してインスタンスのセグメンテーションを実行するコードであり、次の 2 つのパラメータが必要です。
上の写真は実戦2ラウンド目の様子です! 画像ファイルの名前は、下の図に示すように、sample2.jpg です。 実行コードは次のとおりです。
上の画像はディレクトリに保存された画像です。これで、セマンティック セグメンテーションとインスタンス セグメンテーションの明らかな違いがわかります。インスタンス セグメンテーションでは、同じカテゴリのすべてのオブジェクトに異なるカラーマップが割り当てられます。 境界ボックスを使用してセグメンテーションを実装する場合は、コードを少し変更します。
この方法では、セグメンテーション マスクと境界ボックスを含む保存された画像が得られます。 同様に、コードを通じてインスタンス セグメンテーションの推論時間を照会することもできます。
出力は次のようになります。
ご覧のとおり、画像のインスタンスのセグメンテーションを実行するには 12.55 秒かかります。 最後に、プロジェクトとモデルのダウンロード アドレスを示します。ぜひ試してみてください。 ポータルPixelLib プロジェクト アドレス: xception モデルのダウンロード アドレス: Mask RCNN モデルをダウンロードします: |
<<: AIがスマート交通建設を推進し、警察ドローンの高速任務を加速
>>: 機械学習アルゴリズムのコレクション: ベイズ学習からディープラーニングまで、それぞれの長所と短所
概要TensorFlow.js (deeplearn.js) を使用すると、複雑なインストール手順な...
オンライン予約プラットフォームは人々の旅行計画の方法に革命をもたらし、モバイルアプリによりユーザーは...
[[349592]]最近、百度などの企業が自動運転タクシーを導入し、社会的注目を集めています。交通運...
Google は、ジャーナリストの記事作成を「支援」すると主張し、新しい人工知能ツール Genesi...
トラブルを起こせ! AI は、人間が GitHub で更新 (コミット) を送信する方法を「見て」、...
テクノロジーが今日の私たちの生活を根本的に変えてきたことは否定できません。私たちの先祖と比べると、今...
人工知能は驚くべきことを実現できますが、いくつかの障害にも直面しています。 2021年に3,500人...
青いステージの真ん中に黒いパネルが立っていた。パネルには青い楕円形のスクリーンが点滅し、その奥から冷...
今日、言語を超えた効果的なコミュニケーションはこれまで以上に重要になっています。企業が新しい市場に進...
ビッグデータ、分析、AI に関しては、価値はデータの収集から(あるいはそこから何らかの洞察を引き出す...
さまざまなタスクに人工知能を導入する企業が増えるにつれ、AI モデルのトレーニングはコストがかかり、...