模範によって学習し、周囲を認識するという人間の生来の能力をロボットに吹き込むことに成功したことを知ると、心強くなります。 根本的な課題は、コンピューターに人間と同じように「見る」ことを教えるには、はるかに多くの時間と労力が必要であるということです。
ただし、このスキルが現在組織や企業に提供している実際的な価値を考慮すると、努力する価値はあります。 この記事では、画像分類、その仕組み、そして実際の実装について学びます。 さぁ、始めよう。
画像分類とは何ですか?
画像を ニューラルネットワーク そして、その写真に対して何らかの形式のラベルを出力させることは、画像認識として知られています。 ネットワークの出力ラベルは、事前定義されたクラスに対応します。
画像には多数のクラスが割り当てられている場合もあれば、単に XNUMX つのクラスが割り当てられている場合もあります。 クラスが XNUMX つだけの場合は「認識」という用語がよく使われ、クラスが複数ある場合は「分類」という用語がよく使われます。
オブジェクト検出 画像分類のサブセットであり、オブジェクトの特定のインスタンスが、動物、乗り物、人間などの特定のクラスに属するものとして検出されます。
画像分類はどのように機能するのでしょうか?
ピクセル形式の画像はコンピューターによって分析されます。 これは、画像を行列のコレクションとして扱うことでこれを実現します。行列のサイズは画像の解像度によって決まります。 画像分類とは、簡単に言えば、アルゴリズムを利用した統計データをコンピュータの観点から研究することです。
画像分類は、デジタル画像処理においてピクセルを所定のグループ、つまり「クラス」にグループ化することによって行われます。 このアルゴリズムは画像を一連の注目すべき特徴に分割するため、最終的な分類器の負担が軽減されます。
これらの性質は、画像の意味と潜在的な分類について分類器に通知します。 画像を分類する残りのプロセスは画像に依存するため、特徴抽出方法は最も重要な段階となります。
提供されたデータ アルゴリズムへの影響は、画像分類、特に教師付き分類においても重要です。 クラスに基づいてデータの不均衡があり、画像と注釈の品質が低いひどいデータセットと比較して、適切に最適化された分類データセットは見事にパフォーマンスを発揮します。
Python で Tensorflow と Keras を使用した画像分類
私たちは使用します CIFAR-10 データセット (航空機、飛行機、鳥、その他 7 つが含まれます)。
1. インストール要件
以下のコードは、前提条件をすべてインストールします。
2. 依存関係のインポート
Python で train.py ファイルを作成します。 以下のコードは Tensorflow と Keras の依存関係をインポートします。
3. パラメータの初期化
CIFAR-10 には 10 個の画像カテゴリしか含まれていないため、クラス数は単に分類するカテゴリの数を指します。
4. データセットのロード
この関数は Tensorflow Datasets モジュールを使用してデータセットを読み込み、with info を True に設定して、それに関する情報を取得します。 これを印刷してフィールドとその値を確認できます。この情報を使用して、トレーニング セットとテスト セット内のサンプル数を取得します。
5. モデルの作成
次に、最大プーリング機能と ReLU アクティベーション機能を備えた 1024 つの ConvNet で構成される 50 つのレイヤーを構築し、その後に完全に接続された XNUMX ユニット システムを構築します。 最先端のモデルである ResNetXNUMX や Xception と比較すると、これは比較的小さなモデルかもしれません。
6.モデルのトレーニング
Tensorboard を使用して各エポックの精度と損失を測定し、データをインポートしてモデルを生成した後、美しい表示を提供しました。 次のコードを実行します。 CPU/GPU によっては、トレーニングには数分かかります。
tensorboard を使用するには、ターミナルまたは現在のディレクトリのコマンド プロンプトに次のコマンドを入力するだけです。
検証損失が減少し、精度が約 81% まで上昇していることがわかります。 素晴らしいですね!
モデルをテストする
トレーニングが終了すると、最終的なモデルと重みが結果フォルダーに保存されるため、一度トレーニングすれば、いつでも予測を行うことができます。 test.py という名前の新しい Python ファイルのコードに従います。
7. テスト用のユーティリティのインポート
8. Pythonディレクトリの作成
各整数値をデータセットの適切なラベルに変換する Python 辞書を作成します。
9. テストデータとモデルのロード
次のコードは、テスト データとモデルを読み込みます。
10. 評価と予測
次のコードは、カエルの画像を評価して予測します。
11。 結果
モデルは 80.62% の精度でカエルを予測しました。
まとめ
さて、このレッスンは終わりました。 80.62% は小規模な CNN には適していませんが、より良い結果を得るには、モデルを変更するか、ResNet50、Xception、またはその他の最先端のモデルを検討することを強くお勧めします。
Keras で最初の画像認識ネットワークを構築したので、モデルを実験して、さまざまなパラメーターがそのパフォーマンスにどのような影響を与えるかを確認する必要があります。
コメントを残す