導入画像分類は、コンピューター ビジョンの最も重要なアプリケーションの 1 つです。その応用範囲は、自動運転車における物体の分類から医療業界における血球認識、製造における不良品の特定から人がマスクを着用しているかどうかを分類できるシステムの構築まで多岐にわたります。これらすべての業界では、何らかの形で画像分類が使用されています。彼らはどうやってそれを行うのでしょうか?どのフレームワークを使用していますか? TensorFlow、PyTorch、Keras などのさまざまなディープラーニング フレームワークの違いについて、多くのことを読んだことがあるはずです。 TensorFlow と PyTorch は間違いなく業界で最も人気のあるフレームワークです。これらのディープラーニング フレームワーク間の類似点と相違点を学ぶためのリソースは無数に見つかるはずです。 この記事では、PyTorch と TensorFlow で基本的な画像分類モデルを構築する方法について説明します。まず、PyTorch と TensorFlow の簡単な概要から始めます。次に、MNIST 手書き数字分類データセットを使用し、PyTorch と TensorFlow で CNN (畳み込みニューラル ネットワーク) を使用して画像分類モデルを構築します。 これが出発点となり、その後は好きなフレームワークを選択して、他のコンピューター ビジョン モデルの構築も開始できます。 目次
PyTorch の概要PyTorch はディープラーニング コミュニティで人気が高まっており、ディープラーニングの実践者によって広く使用されています。PyTorch は、Tensor コンピューティングを提供する Python パッケージです。さらに、テンソルは、NumPy の ndarray と同様に GPU でも実行できる多次元配列です。 PyTorch のユニークな機能は、動的計算グラフを使用することです。 PyTorch の Autograd パッケージは、テンソルから計算グラフを生成し、勾配を自動的に計算します。特定の機能を持つ定義済みのグラフィックではなく。 PyTorch は、実行時に計算グラフを構築し、さらにはそれを変更するためのフレームワークを提供します。特に、ニューラル ネットワークを作成するためにどれだけのメモリが必要になるかわからない場合に役立ちます。 PyTorch を使用すると、さまざまなディープラーニングの課題に取り組むことができます。課題のいくつかを以下に示します。
TensorFlow の概要TensorFlow は、Google Brain チームの研究者とエンジニアによって開発されました。これは、ディープラーニングの分野で最も一般的に使用されているソフトウェア ライブラリからはまだまだ遠いです (ただし、他のソフトウェア ライブラリは急速に追いついています)。 TensorFlow が人気を博している最大の理由の 1 つは、Python、C++、R など、ディープラーニング モデルを作成するための複数の言語をサポートしていることです。詳細なドキュメントとガイドによるガイダンスを提供します。 TensorFlow は多くのコンポーネントで構成されています。ここに 2 つの優れた例を示します。
TensorFlow は現在、2019 年 9 月に正式にリリースされたバージョン 2.0 を実行しています。バージョン2.0ではCNNも実装する予定です。 これで、PyTorch と TensorFlow の両方について基本的な理解が得られたと思います。それでは、これら 2 つのフレームワークを使用してディープラーニング モデルを構築し、その内部の仕組みを理解してみましょう。その前に、まずこの記事で解決する問題の定義を理解しましょう。 問題ステートメントの理解: MNIST始める前に、データセットを理解しましょう。この記事では、人気の MNIST 問題を解決します。これは、手書きの数字の画像を 0 から 9 までの 10 個のカテゴリのいずれかに分類する数字認識タスクです。 MNIST データセットには、さまざまなスキャンされた文書から取得され、サイズが正規化され、中央に配置された数字の画像があります。その後、各画像は 28 x 28 ピクセルの正方形 (合計 784 ピクセル) になります。モデルの評価と比較にはデータセットの標準的な分割が使用され、モデルのトレーニングには 60,000 枚の画像が使用され、モデルのテストには別の 10,000 枚の画像セットが使用されます。 これで、データセットも理解できました。それでは、PyTorch と TensorFlow で CNN を使用して画像分類モデルを構築してみましょう。まずは PyTorch での実装から始めます。これらのモデルは、ディープラーニング モデルを実行するための無料の GPU を提供する Google Colab に実装されます。 PyTorch で畳み込みニューラル ネットワーク (CNN) を実装するまず、すべてのライブラリをインポートします。
Google colab で PyTorch のバージョンも確認してみましょう。
そこで、私は PyTorch の 1.5.1 バージョンを使用しています。他のバージョンを使用すると、警告やエラーが発生する可能性があるため、このバージョンの PyTorch に更新できます。ピクセル値の正規化など、画像に対していくつかの変換を実行するので、それらも定義しましょう。
それでは、MNIST データセットのトレーニング セットとテスト セットを読み込んでみましょう。
次に、トレーニング セットとテスト セットをバッチでロードするのに役立つ、トレーニング ローダーとテスト ローダーを定義しました。バッチ サイズを 64 と定義しました。
まず、トレーニング セットの概要を見てみましょう。
したがって、各バッチには、サイズがそれぞれ 28,28 の画像が 64 個あり、各画像には対応するラベルがあります。トレーニング画像を視覚化して、どのように見えるか確認してみましょう。
数字の0のイメージです。同様に、テスト セットの画像を視覚化してみましょう。
テスト セットには、サイズ 64 のバッチもあります。ではアーキテクチャを定義しましょう モデルアーキテクチャの定義ここではCNNモデルを使用します。それでは、モデルを定義してトレーニングしてみましょう。
また、オプティマイザーと損失関数を定義し、モデルの概要を見てみましょう。
したがって、画像から特徴を抽出するのに役立つ 2 つの畳み込み層があります。これらの畳み込み層からの特徴は、画像をそれぞれのカテゴリに分類する完全接続層に渡されます。モデル アーキテクチャの準備ができたので、このモデルを 10 エポックにわたってトレーニングしてみましょう。
エポックが増加するにつれてトレーニングが減少することがわかります。これは、モデルがトレーニング セットからパターンを学習していることを意味します。このモデルのパフォーマンスをテスト セットで確認してみましょう。
そこで合計 10,000 枚の画像でテストしたところ、モデルはテスト画像のラベルを約 96% の精度で予測できました。 これが PyTorch で畳み込みニューラル ネットワークを構築する方法です。次のセクションでは、同じアーキテクチャを TensorFlow で実装する方法について説明します。 TensorFlow で畳み込みニューラル ネットワーク (CNN) を実装するここで、TensorFlow の畳み込みニューラル ネットワークを使用して同じ MNIST 問題を解決してみましょう。いつものように、ライブラリをインポートすることから始めます。
使用している TensorFlow のバージョンを確認します。
したがって、TensorFlow のバージョン 2.2.0 を使用します。次に、tensorflow.keras のデータセット クラスを使用して MNIST データセットをロードします。
ここでは、MNIST データセットのトレーニング セットとテスト セットをロードしました。さらに、トレーニング画像とテスト画像のピクセル値を正規化しました。次に、データセットからいくつかの画像を視覚化してみましょう。
これが私たちのデータセットの外観です。手書きの数字の画像があります。トレーニング セットとテスト セットの形状を見てみましょう。
したがって、トレーニング セットには 28 x 28 の画像が 60,000 枚あり、テスト セットには同じ形状の画像が 10,000 枚あります。次に、画像のサイズを変更し、ターゲット変数をワンホットエンコードします。
モデルアーキテクチャの定義ここで、モデルのアーキテクチャを定義します。 Pytorch で定義されているのと同じアーキテクチャを使用します。したがって、私たちのモデルは、2 つの畳み込み層と最大プーリング層の組み合わせになり、次にフラット化層があり、最後にクラスが 10 個あるため 10 個のニューロンを持つ完全接続層があります。
モデルの概要を簡単に見てみましょう。
要約すると、2 つの畳み込み層、2 つの最大プーリング層、フラット化層、および完全接続層があります。モデル内のパラメータの総数は 1198 です。モデルの準備ができたので、コンパイルします。
Adam オプティマイザーを使用していますが、変更することもできます。多クラス分類問題を解決しているため、損失関数はカテゴリクロスエントロピーに設定され、メトリックは「精度」です。それではモデルを10エポックトレーニングしてみましょう
要約すると、最初はトレーニング損失は約 0.46 でしたが、10 エポック後にはトレーニング損失は 0.08 に低下しました。10 エポック後のトレーニングと検証の精度はそれぞれ 97.31% と 97.48% でした。 これが TensorFlow で CNN をトレーニングする方法です。 注釈要約すると、この記事ではまず、PyTorch と TensorFlow の概要を簡単に説明しました。次に、MNIST 手書き数字分類の課題について学び、最後に PyTorch と TensorFlow で CNN (畳み込みニューラル ネットワーク) を使用して画像分類モデルを構築しました。さて、皆さんは両方のフレームワークに精通していると思います。次に、別の画像分類の課題に取り組み、PyTorch と TensorFlow の両方を使用して解決してみます。 |
<<: 2020年の世界コンサルティング会社の新ランキング:AI時代の新たな課題
>>: IT プロフェッショナルが CIO に人工知能について知ってほしい 9 つのこと
ビル・ゲイツ氏の暴露は機械学習コミュニティで話題となっている。 「GPT-5 は GPT-4 よりそ...
Huawei Connect 2021では、中国科学技術情報研究所(CITI)、AITISA(新世代...
世界的なスマート アプリケーション市場の成長は、高度なコンピューティングおよび分析テクノロジによって...
[[391062]]海外メディアの報道によると、世界中の研究者がロボットが周囲の状況をよりよく認識...
大規模言語モデル (LLM) の出現により、複数の分野でイノベーションが促進されました。しかし、思考...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
「パンダはトークができる、パンダはジョークを言うことができる、パンダは書道を書ける、そしてパンダはチ...
[[420239]] 2011年7月14日、紅旗HQ3は長沙から武漢までの286キロの高速道路を疾...
最近、アクセンチュアは「メタバースで出会う:テクノロジーとエクスペリエンスの連続体のビジネスを再構築...
機械学習はデータ内のパターンを使用して物事にラベルを付けます。魔法のように聞こえますが、核となる概念...