Pytorchの基本的な使用法&&セマンティックセグメンテーションアルゴリズムの説明
最も単純なセマンティックセグメンテーションの基盤と開発環境のセットアップから始めましょう。
2.セマンティックセグメンテーションセマンティックセグメンテーション
とは何ですか?
セマンティックセグメンテーション:画像上のターゲットカテゴリの各ポイントに「セマンティック」に従ってラベルを付け、画像上でさまざまな種類のものを区別できるようにします。これは、ピクセルレベルでの分類タスクとして理解できます。簡単なポイントは、各ピクセルを分類することです。
つまり、私たちの目標は、RGBカラー画像(高さx幅x3)またはグレースケール画像(高さx幅x1)を提供し、各ピクセルのカテゴリラベル(高さx幅x1)を含むセグメンテーションマップを出力することです。詳細を次の図に示します。
注:視覚的にわかりやすくするために、上記の予測マップは低解像度のマップです。実際のアプリケーションでは、セグメンテーション注釈の解像度は元の画像の解像度と同じである必要があります。
ここでの写真は、人(人)、財布(パッケージ)、植物/草(植物/草)、歩道(歩道)、建物/構造(建物)の5つのカテゴリに分類されます。
標準のカテゴリ値と同様に、ここでもワンホットエンコードされたターゲットカテゴリラベルを作成します。基本的に、各カテゴリの出力チャネルを作成します。
上の図には5つのカテゴリがあるため、次の図に示すように、ネットワークによって出力されるチャネルの数も5になります。上の図に示すように、予測結果は、argmaxを深さで計算することによってセグメンテーションに統合できます。写真の各ピクセルに対して。さらに、各ターゲットを重ねて簡単に観察できます。
argmaxの方法も理解しやすいです。上の図に示すように、各チャネルには0または1しかありません。Personチャネルを例にとると、赤い1はPersonピクセルを表し、他のピクセルはすべて0です。同じことが他のチャネルにも当てはまり、同じピクセルが3つ以上のチャネルで1になる場合はありません。したがって、各ピクセルの最大インデックスチャネル値はargmaxを介して検出されます。最終的な結果は次のとおりです。
元の画像でチャネルの1つのレイヤーのみが重なっている場合、それをマスクと呼びます。これは、特定のカテゴリが存在する領域のみを示します。
次の図に高解像度の結果を示します。さまざまな色がさまざまなカテゴリを表しています。
3.データセット
一般的なセマンティックセグメンテーションアルゴリズムは教師あり学習に属するため、適切にラベル付けされたデータセットが不可欠です。
多くのパブリックセマンティックセグメンテーションデータセットがあります。現在、モデルのトレーニングとテストのために、学術コミュニティには主に3つのベンチマーク(データセット)があります。
最初に一般的に使用されるデータセットは、PascalVOCシリーズです。このシリーズで最も人気のあるのはVOC2012であり、PascalContextなどの同様のデータセットも役立ちます。
2番目に一般的に使用されるデータセットはMicrosoftCOCOです。COCOには合計80のカテゴリがあります。詳細なピクセルレベルの注釈はありますが、セマンティックセグメンテーションの公式な評価はありません。このデータセットは、主にインスタンスレベルのセグメンテーションと画像の説明に使用されます。したがって、COCOデータセットは、モデルトレーニング用の追加のトレーニングデータセットと見なされることがよくあります。
3番目のデータセットは、支援運転(自動運転)環境の都市景観であり、より一般的な19のカテゴリを評価に使用します。
セマンティックセグメンテーショントレーニングに使用できるデータセットは多数あります。
Pascal Voc 2012:より一般的なオブジェクト分類、21のカテゴリ、
MS COCO:Microsoftが後援、画像セマンティック理解アルゴリズムのパフォーマンス評価の「標準」データセット、合計80のカテゴリ、
Cityscapes:50のヨーロッパの都市が含まれていますストリートシーンのさまざまなシーン、さまざまな背景、さまざまな季節の33種類のラベル付きオブジェクト、
Pascal-Context:PASCAL-VOC 2010認識コンペティションの拡張、合計59のカテゴリ、
KITTI:モバイルロボットと自律運転で最も人気のあるオブジェクト研究データセットの1つ、合計11のカテゴリ;
NYUDv2:2.5次元データセット、Microsoft Kinect機器によってキャプチャされた1449の屋内RGB-D画像が含まれています;
SUN-RGBD:10000のAnを含む4つのRGB-Dセンサーによって取得されましたRGB-D画像、サイズはPASCAL VOCと同じです
。ADE20K_MIT:シーンを理解するための新しいデータセット。このデータセットは無料でダウンロードでき、合計151のカテゴリがあります。
多くのデータセットがあります。この一連のチュートリアルは、特定のデータセットに限定されず、Kaggleコンペティションなどのデータセットを使用する場合もあります。各データセットの処理方法、データセットの形式、および内容以降の記事で使用データセットについて詳しく説明します。
第4に、GPUマシン
セマンティックセグメンテーションタスクの場合、ハイエンドGPUグラフィックカードを備えたマシンが必要です。そうでない場合、トレーニングの収束は非常に遅くなります。
社内での日常業務は基本的にモデル開発にLinuxクラウドサーバーを使用することであるため、最適な開発環境はLinuxです。したがって、事前にLinuxオペレーティングシステムに適応することをお勧めします。
学生パーティーの場合、ラボがディープラーニングの方向で研究を行っており、リソースが完全であれば、GPUサーバーは引き続き利用可能であり、GPUサーバーについて心配する必要はありません。
ただし、条件が限られているため、ラボにはGPUサーバーが装備されていません。ディープラーニング関連の知識を学びたい場合は、次の3つの方法があります。
1.
ほとんど使用できない無料のクラウドサーバーであるGoogleColabはGoogleColabです。これはGoogleが提供する無料のGPUサーバーです。提供されるGPUコンピューティング能力は悪くありませんが、その主な問題は壁を覆す必要性にあります。 Google Colabのストレージスペースは、Googleドライブをマウントすることで得られます。Googleドライブは15Gの無料ストレージスペースしか提供しません。スペースを拡張したい場合でも、お金を使う必要があります。
無料のクラウドサーバーであるGoogleColabを使用する場合は、Baiduチュートリアルを自分で使用できます。
2. AlibabaCloud有料GPUクラウドサーバー
。AlibabaCloudはGPUクラウドサーバーリソースを提供します。毎月とペイパーフローの2つの支払いモードがあります。P4サーバーやV100サーバーもあります。性能は強く、価格も非常に感動的です。一言で言えば非常に高価であり、個人ユーザーは購入をお勧めしません。Alibaba Cloudが提供するGPUクラウドサービスに加えて、Tencent、Baidu、Huaweiにはすべて対応するサービスがありますが、それらはすべて高価です。
3.コンピューターホストを構成します。
デスクトップホストは自分で構成できます。これは、自分自身への投資と見なすことができます。ディープラーニングトレーニングに使用できる優れたホストを構成するには、約6000元の費用がかかります。
ディープラーニングトレーニングはグラフィックカードのパフォーマンスに大きく依存するため、より優れたNカード、つまりNVIDIAグラフィックカードを構成する必要があります。グラフィックカードを選択する秘訣は、グラフィックカードのラダーチャートを確認することです。
このグラフィックカードラダーチャートには、主に市場で一般的に使用されているグラフィックカードのランキングが含まれています。V100のように価格が100,000のグラフィックカードは含まれていません。
ラダー図が高いほど、グラフィックカードのパフォーマンスが高くなります。右側のAMDグラフィックカードは選択しないでください。パフォーマンスは良好ですが、カードAはCUDAをサポートしていません。
予算に応じてグラフィックカードを選択します。グラフィックカードには8G以上のビデオメモリを選択してください。ディープラーニングモデルのトレーニングは、ビデオメモリリソースを消費します。
MSIのRTX2060 Superを3399元の価格で購入しました。グラフィックカードは保持する価値がなく、価格は時間とともにどんどん低くなっていきます。
CPU、コンピューターのマザーボード、電源、メモリ、ラジエーターの選択など、コンピューターの構成について記述できることはたくさんあるので、ここでは詳しく説明しません。自分でデスクトップを組み立てるエネルギーがない場合は、対応するグラフィックカードを搭載したデスクトップを直接購入できますが、価格は自分で組み立てたデスクトップよりも高くなります。
V.開発環境の構築
条件が許せば、Ubuntuシステムを使用して開発環境を構成することをお勧めします。Ubuntuは、使いやすいインターフェイスと簡単な操作を備えた、初心者に適したLinuxのディストリビューションの1つです。
購入したコンピューターのマザーボードはLinuxベースのシステムのインストールに対応していないため、将来的にはWindowsを開発環境として使用しますが、アルゴリズムの原理やコードの説明には影響しません。
私のデスクトップ構成:
CPU:Intel i7 9700k
グラフィック:RTX2060スーパー
システム:Windows 10
Windowsシステムと必要なドライバーをインストールした後、インストールする必要のあるツールは、CUDA、Anaconda3、cuDNN、Pytorch-gpu、Fluent Terminal(オプション)です。
1. CUDA
CUDAは、グラフィックカードメーカーのNVIDIAが立ち上げたコンピューティングプラットフォームです。グラフィックカードのモデルに応じて、サポートされているCUDAバージョンを選択する必要があります。たとえば、RTX 2060SuperはCUDA10をサポートしています。ダウンロードリンク:クリックして表示
ばかスタイルのインストールは非常に簡単です。
インストール後、システムの環境変数を構成する必要があります。コンピューター->マウスの右ボタン->プロパティ->システムの詳細設定->環境変数->パス:
独自のNVSMIパスを環境変数に追加します。デフォルトを使用しましたインストールアドレス:
構成後、cmdでnvidia-smiコマンドを使用してグラフィックカードを表示できます。
2. Anaconda3
Anacondaは、Pythonのパッケージマネージャーおよび環境マネージャーであり、Python用のサードパーティライブラリのインストールを容易にすることができます。
ダウンロードアドレス:クリックして表示
。Python3.7のバージョンを選択します。インストールも非常に簡単で、次のステップはばかげています。
インストール後、CUDAをインストールするときと同じ方法でシステム環境変数を追加する必要があります。
D:\Anaconda
D:\Anaconda\Scripts
パスは、自分でインストールしたAnacondaパスに変更できます。
構成が完了した後、cmdでconda -Vを実行してもエラーは報告されず、構成が成功したことを示すバージョン情報が出力されます。
3.cuDNNとPytorchをインストールします。cuDNN
はディープニューラルネットワーク用のGPUアクセラレーションライブラリです。パフォーマンス、使いやすさ、メモリオーバーヘッドの低さを強調しています。
Anacondaをインストールした後、condaを使用してcuDNNとPytorchをインストールできます。
Anacondaに付属のコマンドラインツールであるAnacondaPromptを開きます。まず、このツールを使用して環境を作成する必要があります。システムに直接付属のcmdを使用します。CondaHTTPErrorなどの奇妙な問題が発生する場合があります。Anacondaプロンプトに入力します。
conda create -n your_name jupyter notebook
この文の意味は、your_nameという名前の仮想環境を作成することであり、この仮想環境は、jupyterノートブックのサードパーティライブラリを追加でインストールします。your_nameを好きな名前に変更できます。この名前は仮想環境の名前であり、ジャックなど、好きな名前を付けることができます。
次に、yを入力してインストールし
ます。インストールが完了したら、コマンドconda info-eを使用して既存の環境を確認できます。
上の図からわかるように、2つの環境があります。1つはベース、組み込みの基本環境、もう1つは新しく作成されたジャックと呼ばれる環境です。新しい環境を作成する理由は、構成済みの環境を個別に管理できるためです。
環境をインストールした後、ジャック環境をアクティブ化し、PytorchのcuDNNおよびGPUバージョンをインストールできます。jackという名前の環境をアクティブにします。
activate jack
ご覧のとおり、環境はベースからジャックに変わりました。ジャック環境にcuDNNをインストールします。
conda install cudnn
cuDNNをインストールしたら、PytorchをインストールしてPytorchの公式Webサイトを開きます。クリックして表示
します。ご使用の環境に応じて選択します。選択すると、Webページに実行手順が自動的に表示されます。PythonバージョンとCUDAバージョンを区別する必要があるかもしれません。
Pythonバージョンの表示方法:コマンドラインに直接pythonと入力すると、Pythonバージョンが表示されます。
CUDAバージョンを表示するには、コマンドラインにnvidia-smiと入力し
ます。バージョンを確認したら、Pytorchの公式Webサイトの手順に従ってPytorchのGPUバージョンをインストールできます。
この時点で、基本的な環境のセットアップは完了です。おめでとうございます。
4. Fluent Terminalの
基本環境が構成されており、通常の使用で十分です。
しかし、美しさを追求する人は、Windowsに付属のコマンドラインツールとAnacondaが提供するコマンドラインツールが醜すぎると感じるかもしれません。
見栄えが良く使いやすいターミナルはありますか?答えは「はい」ですが、自分で設定する必要があり、ゆっくりと踏む必要のあるピットがいくつかあります。
たとえば、Fluent Terminalは、私がお勧めする最新のターミナルツールです。これは、Windowsプラットフォーム上に構築され、UWPテクノロジを使用する超高価値のターミナルエミュレータです。最初に顔の価値を見てください: