PyTorchを使った効率的な画像セグメンテーション:パート1
Efficient Image Segmentation with PyTorch Part 1.
コンセプトとアイデア
この4部作では、PyTorchを使用して深層学習技術を使い、画像セグメンテーションをスクラッチからステップバイステップで実装していきます。この記事では、画像セグメンテーションに必要な基本的なコンセプトとアイデアからシリーズを始めます。
共著者:Naresh Singh
画像セグメンテーションは、画像内の特定のオブジェクトに属するピクセルを分離する技術です。オブジェクトピクセルの分離によって、興味深いアプリケーションの扉が開きます。例えば、図1では、右側の画像が左側のペット画像に対応するマスクであり、黄色のピクセルがペットに属しています。ピクセルが識別されたら、簡単にペットを大きくしたり、画像の背景を変更することができます。この技術は、いくつかのソーシャルメディアアプリケーションのフェイスフィルター機能で広く使用されています。
この記事シリーズの目標は、PyTorchを使用してビジョンAIモデルを構築し、異なる設定で実験を実行するために必要なすべてのステップを読者に理解してもらうことです。
このシリーズの記事
このシリーズは、深層学習に関する経験レベルに関係なく、すべての読者を対象にしています。深層学習とビジョンAIの実践について学び、堅実な理論と実践経験を得たい場合は、正しい場所に来ています!以下の記事で構成される4部作の予定です。
- コンセプトとアイデア(この記事)
- CNNベースのモデル
- Depthwise separable convolutions
- ビジョントランスフォーマーベースのモデル
画像セグメンテーションの概要
画像セグメンテーションは、オブジェクト、背景、および境界に対応する領域に画像を分割またはセグメント化する技術です。都市のシーンを示す図2を見てみましょう。さまざまな色のマスクで、車、バイク、木、建物、歩道、およびその他の興味深いオブジェクトに対応する領域を示しています。これらの領域は、画像セグメンテーション技術によって識別されます。
過去には、画像を領域に分割するために、専門の画像処理ツールやパイプラインを使用していました。しかし、過去に行われていたように、ドメイン固有の画像セグメンテーション戦略を構築するための専門家に対する依存度を大幅に減らし、深層学習が画像セグメンテーションタスクの手段として登場しました。十分なトレーニングデータが利用可能であれば、深層学習の実践者は、画像セグメンテーションモデルをトレーニングできます。
画像セグメンテーションの応用分野
画像セグメンテーションは、コミュニケーション、農業、交通、医療など、多様な分野で応用されています。さらに、視覚データの増加に伴い、その応用分野も増加しています。以下にいくつかの例を示します。
- 自動運転車では、車のカメラからのビデオフィードを常に処理して、車、歩行者、信号機などのオブジェクトにシーンをセグメント化する深層学習モデルが必要です。
- 医療画像では、画像セグメンテーションが医師が腫瘍、病変、およびその他の異常に対応する医療スキャン内の領域を特定するのを支援します。
- Zoomビデオ通話では、バーチャルシーンに背景を置き換えることで、個人のプライバシーを保護するために使用されます。
- 農業では、画像セグメンテーションで特定された雑草と作物の領域に関する情報を使用して、健康な作物収量を維持するために使用されます。
画像セグメンテーションの実用的な応用分野の詳細については、v7labsのこのページをご覧ください。
画像セグメンテーションタスクの種類には何がありますか?
画像セグメンテーションタスクには、それぞれに利点と欠点がある多くの種類があります。画像セグメンテーションタスクの2つの最も一般的なタイプは次のとおりです。
- クラスまたは意味セグメンテーション : クラスセグメンテーションは、画像の各ピクセルに背景、道路、車、または人などの意味クラスを割り当てます。画像に2つの車がある場合、両方の車に対応するピクセルは車のピクセルとしてタグ付けされます。自律走行やシーン理解などのタスクによく使用されます。
- オブジェクトまたはインスタンスセグメンテーション : オブジェクトセグメンテーションは、画像内のオブジェクトを識別し、各ユニークなオブジェクトにマスクを割り当てます。画像に2つの車がある場合、それぞれの車に対応するピクセルが別々のオブジェクトに属することが特定されます。オブジェクトセグメンテーションは、特定の車に従うようにプログラムされた自動運転車など、個々のオブジェクトを追跡するためにしばしば使用されます。
このシリーズでは、クラスセグメンテーションに焦点を当てます。
効率的な画像セグメンテーションを実装するにはどのような決定が必要ですか?
速度と正確性のためにモデルを効率的にトレーニングするには、プロジェクトのライフサイクル中に多くの重要な決定を行う必要があります。これには、以下が含まれます(が、これに限定されません):
- ディープラーニングフレームワークの選択
- 良いモデルアーキテクチャの選択
- 最適化したい側面を最適化する効果的な損失関数の選択
- 過学習と適合不足の回避
- モデルの正確性の評価
この記事の残りの部分では、上記で言及された各側面についてより詳しく説明する多数の記事へのリンクを提供します。
効率的な画像セグメンテーションのためのPyTorch
PyTorchとは何ですか?
「PyTorchは、柔軟でモジュール化されたオープンソースのディープラーニングフレームワークであり、研究に適した安定性とサポートがあり、生産展開に必要なものを提供します。PyTorchは、強力なGPUアクセラレーションを備えたテンソル演算(NumPyのようなもの)の高水準のPythonパッケージと、イーガーモードとグラフモードの簡単な切り替えに役立つTorchScriptを提供します。最新版のPyTorchでは、グラフベースの実行、分散トレーニング、モバイル展開、および量子化が提供されています。」(出典:PyTorchのMeta AIページ)
PyTorchはPythonとC++で書かれているため、使いやすく学びやすく、実行効率も高くなっています。サーバーおよびモバイルのCPU、GPU、TPUなど、幅広いハードウェアプラットフォームをサポートしています。
なぜPyTorchは画像セグメンテーションに適しているのですか?
PyTorchは、柔軟で強力な環境を提供するため、深層学習の研究開発に人気があります。次の機能があるため、深層学習ベースの画像セグメンテーションを実装するための優れたフレームワークの選択肢です。
- 柔軟性 : PyTorchは、様々な方法でニューラルネットワークを作成してトレーニングできる柔軟なフレームワークです。事前トレーニング済みのモデルを使用することも、自分自身でゼロから作成することも簡単です。
- バックエンドサポート : PyTorchは、GPU/TPUハードウェアなど、複数のバックエンドをサポートしています
- ドメインライブラリ : PyTorchには、特定のデータ垂直を扱いやすくする豊富なドメインライブラリが用意されています。たとえば、ビジョン(画像/動画)関連のAIに対して、このシリーズ全体で広く使用されるtorchvisionというライブラリが提供されています。
- 利用のしやすさとコミュニティの採用 : PyTorchは、使いやすく、ドキュメントが充実しており、多数のユーザーや開発者がいるため、採用されているフレームワークです。多くの研究者がPyTorchを使用して実験を行っており、彼らの公表された論文の結果には、PyTorchでモデルの実装が自由に利用できるようになっています。
データセットの選択
クラスセグメンテーションには、Oxford IIIT ペットデータセット(CC BY-SA 4.0 ライセンス)を使用します。このデータセットには、3680 のトレーニングセットがあり、各画像にはセグメンテーショントリマップが関連付けられています。トリマップには 3 つのピクセルクラスのうちの 1 つがあります:
- ペット
- 背景
- ボーダー
このデータセットは、非自明なクラスセグメンテーションタスクを提供する多様性が十分にあるため、このデータセットを選択します。また、クラスの不均衡などの問題に対処する時間が必要になるほど複雑ではなく、クラスセグメンテーションという主要な問題に集中できるため、このデータセットを選択します。
画像セグメンテーションタスクに使用される他の人気のあるデータセットには、以下があります:
- Pascal VOC(視覚物体クラス)
- MS Coco
- Cityscapes
PyTorch を使用した効率的な画像セグメンテーション
このシリーズでは、クラスセグメンテーションのために複数のモデルをゼロからトレーニングします。ゼロからモデルを構築してトレーニングする場合、考慮すべき多くの要素があります。以下では、それらのうちいくつかの主要な決定を見ていきます。
タスクに適したモデルの選択
画像セグメンテーションのための適切なディープラーニングモデルを選択する際に考慮すべき要素は多数あります。最も重要な要素のいくつかは以下のとおりです:
- 画像セグメンテーションタスクの種類 : 画像セグメンテーションタスクには、クラス(意味)セグメンテーションとオブジェクト(インスタンス)セグメンテーションの 2 つの主要なタイプがあります。私たちはより単純なクラスセグメンテーション問題に焦点を当てるため、問題をモデル化することを考えます。
- データセットのサイズと複雑さ : データセットのサイズと複雑さは、使用する必要があるモデルの複雑さに影響を与えます。たとえば、空間次元が小さい画像を使用している場合、より単純な(または浅い)モデル、例えば完全畳み込みネットワーク(FCN)を使用することができます。大きく複雑なデータセットを扱っている場合は、U-Net などのより複雑な(または深い)モデルを使用することができます。
- 事前トレーニングされたモデルの利用可能性 : 画像セグメンテーションには多くの事前トレーニングされたモデルがあります。これらのモデルは、自分自身のモデルの出発点として使用することもできますし、直接使用することもできます。ただし、事前トレーニングされたモデルを使用する場合、モデルへの入力画像の空間次元に制限がある場合があります。このシリーズでは、ゼロからモデルをトレーニングすることに焦点を当てます。
- 利用可能なコンピュータリソース : ディープラーニングモデルをトレーニングするには、計算資源が必要です。計算資源が限られている場合、より単純なモデルまたはより効率的なモデルアーキテクチャを選択する必要があります。
このシリーズでは、Oxford IIIT ペットデータセットを使用する予定です。これは、VoAGI サイズのモデルをトレーニングするのに十分な大きさがあり、GPU の使用が必要になります。このシリーズで参照されるノートブックやコードを実行するには、kaggle.com でアカウントを作成するか、Google Colab の無料 GPU を使用することを強くお勧めします。
モデルアーキテクチャ
画像セグメンテーション用の最も人気のあるディープラーニングモデルアーキテクチャの一部を以下に示します:
- U-Net : U-Net は、画像セグメンテーションタスクでよく使用される畳み込みニューラルネットワークです。スキップ接続を使用することで、ネットワークのトレーニングを高速化し、全体的な精度を向上させることができます。選択しなければならない場合、U-Net は常に優れたデフォルト選択肢です!
- FCN : FCN は完全畳み込みネットワークですが、U-Net ほど深くありません。深度が低い理由は、より高いネットワーク深度では精度が低下するためです。これにより、トレーニング時間が短縮されますが、U-Net ほど正確ではない場合があります。
- SegNet : SegNet は、U-Net に似た人気のあるモデルアーキテクチャで、U-Net よりも少ないアクティベーションメモリを使用します。このシリーズでは、SegNet を使用します。
- Vision Transformer(ViT) : Vision Transformer は、単純な構造と注意機構をテキスト、ビジョン、その他のドメインに適用できることから、最近人気が高まっています。ビジョントランスフォーマーは、トレーニングと推論の両方においてより効率的(CNN に比べて)である場合がありますが、畳み込みニューラルネットワークと比較してトレーニングにより多くのデータが必要になる傾向があります。このシリーズでは、ViT も使用します。
これらは、画像セグメンテーションに使用できる多くのディープラーニングモデルのうちのいくつかにすぎません。特定のタスクに最適なモデルは、前述の要素、特定のタスク、およびあなた自身の実験に依存します。
適切な損失関数の選択
画像セグメンテーションタスクにおける損失関数の選択は重要です。なぜなら、モデルの性能に重大な影響を与えるからです。使用可能なさまざまな損失関数があり、それぞれに利点と欠点があります。画像セグメンテーションのための最も一般的な損失関数は次のとおりです。
- クロスエントロピー損失:クロスエントロピー損失は、予測された確率分布と正解の確率分布の差を測定するものです。
- IoU損失:IoU損失は、クラスごとに予測されたマスクと正解マスクの重なりの量を測定します。IoU損失は、予測または再現が悪化する場合にペナルティを課します。定義されたIoUは微分可能ではないため、損失関数として使用するには少し調整する必要があります。
- Dice損失:Dice損失は、予測されたマスクと正解マスクのオーバーラップを測定するものです。
- Tversky損失:Tversky損失は、不均衡なデータセットを扱うことができる堅牢な損失関数として提案されています。
- Focal損失:Focal損失は、分類が困難な例である困難な例に焦点を当てるように設計されています。これは、チャレンジングなデータセットでのモデルのパフォーマンスを改善するのに役立ちます。
特定のタスクに最適な損失関数は、タスクの具体的な要件に依存します。たとえば、精度が重要な場合は、IoU損失またはDice損失がより良い選択肢になる場合があります。タスクが不均衡である場合は、Tversky損失またはFocal損失が良い選択肢になる場合があります。使用する特定の損失関数は、モデルのトレーニング中の収束率に影響を与える可能性があります。
損失関数はモデルのハイパーパラメータであり、結果に基づいて異なる損失を使用することで、損失をより速く減らしてモデルの精度を向上させることができます。
デフォルト:このシリーズでは、結果が不明な場合は常にクロスエントロピー損失を使用します。
以下のリソースを使用して、損失関数について詳しく学習できます。
- PyTorch損失関数:究極のガイド
- Torchvision – 損失
- Torchmetrics
次に、セグメンテーションタスクのCross Entropy Lossの堅牢な代替手段として定義されたIoU Lossを詳しく見てみましょう。
カスタムIoU Loss
IoUは、交差部分を和集合で割った値で定義されます。画像セグメンテーションタスクでは、(各クラスごとに)モデルによって予測されたクラス内のピクセルの交差部分と正解のセグメンテーションマスクのピクセルを計算することによって、これを計算できます。
たとえば、2つのクラスがある場合:
- 背景
- 人物
それから、人物として分類されたピクセルを決定し、人物用の正解ピクセルと比較し、人物クラスのIoUを計算できます。同様に、背景クラスのIoUを計算できます。
これらのクラス固有のIoUメトリックを持っていると、重み付けして平均化する前に、加重平均することができます。これは、前述の例で見たようなクラスの不均衡を考慮するためです。
定義されたIoUメトリックは、各メトリックにハードラベルを計算する必要があります。これには、argmax()関数の使用が必要であり、これは微分できないため、損失関数として使用できません。したがって、ハードラベルの代わりにsoftmax()を適用し、予測確率をソフトラベルとして使用してIoUメトリックを計算します。これにより、微分可能なメトリックが得られます。したがって、IoUメトリックは、損失関数の文脈で使用される場合、ソフトIoUメトリックとしても知られています。
もし、0.0から1.0の値をとるメトリック(M)がある場合、次のように損失(L)を計算できます。
L = 1 — M
しかし、もしメトリックが0.0から1.0の間の値をとる場合、次のトリックを使用してメトリックを損失に変換することができます。
L = -log(M)
すなわち、メトリックの負の対数を計算します。これは以前の公式と意味的に異なるため、こことここで読んでみることができます。基本的に、モデルの学習をより良くする結果が得られます。
また、IoUを損失として使用することで、より重要なものを捉えるように損失関数を近づけることができます。評価メトリックを損失関数として使用することには、利点と欠点があります。この領域をもっと探求したい場合は、このStackExchangeの議論から始めることができます。
データ拡張
モデルを正確に効率的にトレーニングするには、トレーニングに使用するトレーニングデータの量と種類に注意する必要があります。使用するトレーニングデータの選択は、最終的なモデルの精度に大きく影響します。したがって、この記事シリーズから得られる1つのことがあるとしたら、それはこのことです!
通常、データを次のように3つのパートに分割します。
- トレーニング(80%)
- 検証(10%)
- テスト(10%)
トレーニングセットでモデルをトレーニングし、検証セットで精度を評価し、これを繰り返して報告されたメトリックが満足できるまでプロセスを繰り返します。その後、モデルをテストセットで評価し、その数字を報告します。これは、トレーニングおよび評価中に使用されるモデルのアーキテクチャおよびハイパーパラメータに任意のバイアスが紛れ込むのを防ぐために行われます。一般的に、テストデータで見た結果に基づいてセットアップを微調整するほど、結果は信頼性が低くなります。したがって、私たちは、トレーニングおよび検証データセットで見た結果に限定する必要があります。
このシリーズでは、テストデータセットを使用して検証データセットとして使用し、データ拡張を適用して常にわずかに異なるデータでモデルを検証することにします。これにより、検証データセットに決定を過剰に反映することを防ぐことができます。これは少しハックのようなものであり、便宜とショートカットのために行っています。本番のモデル開発では、標準のレシピに従うようにしてください。
このシリーズで使用するデータセットには、トレーニングセットに3680枚の画像が含まれています。これは大量の画像のように思えるかもしれませんが、モデルがこれらの画像に過剰適合しないようにする必要があります。何回もエポックを繰り返してモデルをトレーニングするためです。
単一のトレーニングエポックでは、トレーニングデータセット全体でモデルをトレーニングし、本番モデルでは通常、60回以上エポックをトレーニングします。このシリーズでは、20エポックだけモデルをトレーニングすることにします。過剰適合を防ぐために、既存の入力データから新しい入力データを生成するためにデータ拡張という技術を使用します。画像入力のデータ拡張の基本的な考え方は、画像をわずかに変更すると、モデルにとって新しい画像のように感じられるが、期待される出力が同じであるかどうかを推論できるかどうかです。このシリーズで適用するデータ拡張の例を以下に示します。
- ランダムな水平フリップ
- ランダムな色のジッター
上記のデータ拡張を適用するためにTorchvisionライブラリを使用する予定ですが、画像データに使用できる豊富な変換が利用可能なAlbumentationsデータ拡張ライブラリを評価することをお勧めします。両方のライブラリには、画像データに使用できる豊富な変換が用意されています。私たちは個人的に、Torchvisionを使用し続けていますが、これは最初に使用したものであるためです。Albumentationsは、入力画像と同時にグラウンドトゥルーラベルまたはマスクを変更することができるデータ拡張のより豊富なプリミティブをサポートしています。たとえば、画像のサイズを変更したりフリップしたりする場合、グラウンドトゥルーセグメンテーションマスクを同じ変更を行う必要があります。Albumentationsは、これを自動的に行うことができます。
大まかに言えば、両方のライブラリは、画像に対してピクセルレベルで適用される変換または画像の空間次元を変更する変換をサポートしています。ピクセルレベルの変換は、torchvisionによってカラー変換と呼ばれ、空間変換はtorchvisionによってジオメトリック変換と呼ばれます。
以下では、TorchvisionとAlbumentationsライブラリによって適用されるピクセルレベルおよびジオメトリック変換のいくつかの例を見てみましょう。
モデルのパフォーマンスの評価
モデルのパフォーマンスを評価する場合、モデルの実際の世界のデータに対するパフォーマンスの質を表すメトリックで測定したいと考えるでしょう。例えば、画像セグメンテーションタスクでは、ピクセルに対して正しいクラスを予測できるモデルの精度を知りたいと思うでしょう。したがって、ピクセル精度はこのモデルの検証メトリックと言えます。
損失関数として評価メトリックを使用することができます(本当に重要なものを最適化するのはなぜですか!)が、これが常に可能であるとは限りません。
精度に加えて、IoUメトリック(またはJaccard Indexとも呼ばれる)と、上記で定義したカスタムIoUメトリックも追跡します。
画像セグメンテーションタスクに適用可能なさまざまな精度メトリックについて詳しくは、以下を参照してください。
- All the segmentation metrics — Kaggle
- How to evaluate image segmentation models
- Evaluating image segmentation models
パフォーマンスメトリックとしてピクセル精度を使用する際の欠点
精度メトリックは、画像セグメンテーションタスクのパフォーマンスを測定するための良いデフォルトの選択肢である場合がありますが、状況によっては重要な欠点がある場合があります。
例えば、写真で人の目を識別し、それらのピクセルをマークする画像セグメンテーションタスクを考えてみましょう。モデルは、それぞれ以下のいずれかのピクセルとして分類します。
- バックグラウンド
- 目
各画像に1人だけいると仮定し、ピクセルの98%が目に対応していないとします。この場合、モデルは単純にすべてのピクセルをバックグラウンドピクセルと予測し、セグメンテーションタスクで98%のピクセル精度を達成できます。すごい!
このような場合、IoUまたはDiceメトリックを使用することがはるかに良いアイデアである場合があります。IoUは、予測が正確であった割合をキャプチャし、各クラスまたはカテゴリが元の画像内で占める領域にバイアスをかけることはありません。クラスごとにIoUまたはDice係数をメトリックとして使用することもできます。これにより、手元のタスクのモデルのパフォーマンスをより正確に捉えることができます。
ピクセル精度のみを考慮すると、計算したいセグメンテーションマスクのオブジェクト(上記の例では目)の精度と再現率は、探している詳細を捕捉することができます。
画像セグメンテーションの理論的な基盤の大部分をカバーしたので、現実世界のワークロードに対する画像セグメンテーションの推論と展開に関連する考慮事項に迂回してみましょう。
モデルサイズと推論レイテンシ
最後に、モデルに合理的なパラメータ数があることを確認したいのですが、モデルが小さく効率的であることを望んでいるため、あまり多くはないです。効率的なモデルアーキテクチャを使用してモデルサイズを縮小することに関連する将来の投稿について、詳細に調べてみましょう。
推論レイテンシに関しては、モデルが実行する数学演算(乗算と加算)の数が重要です。モデルサイズと乗算加算は、torchinfoパッケージを使用して表示できます。乗算加算は、モデルのレイテンシを決定するための優れたプロキシですが、さまざまなバックエンドでのレイテンシには大きなバリエーションがある場合があります。特定のバックエンドまたはデバイスでモデルのパフォーマンスを決定する唯一の実際の方法は、その特定のデバイスでプロファイルを実行し、本番設定で予想される入力セットを使用してベンチマークを行うことです。
from torchinfo import summarymodel = nn.Linear(1000, 500)summary( model, input_size=(1, 1000), col_names=["kernel_size", "output_size", "num_params", "mult_adds"], col_width=15,)
出力:
====================================================================================================Layer (type:depth-idx) Kernel Shape Output Shape Param # Mult-Adds====================================================================================================Linear -- [1, 500] 500,500 500,500====================================================================================================Total params: 500,500Trainable params: 500,500Non-trainable params: 0Total mult-adds (M): 0.50====================================================================================================Input size (MB): 0.00Forward/backward pass size (MB): 0.00Params size (MB): 2.00Estimated Total Size (MB): 2.01====================================================================================================
さらに読む
以下の記事は、画像セグメンテーションの基本に関する追加情報を提供します。同じ主題について異なる視点を読むのが好きな人は、読んでみることを検討してください。
- Guide to Image Segmentation in Computer Vision: Best Practices
- An Introduction to Image Segmentation: Deep Learning vs. Traditional [+Examples]
- Image Segmentation: The Basics and 5 Key Techniques
もしOxford IIIT Petデータセットで手を動かして、torchvisionとAlbumentationsを使用して画像の拡張機能を実行したい場合は、Kaggleに提供されたスターターノートブックをクローンして遊んでみてください。本記事の多くの画像は、そのノートブックで生成されました!
記事のまとめ
ここまで議論したことのクイックレビューを行います。
- 画像セグメンテーションは、画像を複数のセグメントに分割する技術です(出典:Wikipedia)
- 画像セグメンテーションの主要なタイプには、クラス(意味)セグメンテーションとオブジェクト(インスタンス)セグメンテーションの2種類があります。クラスセグメンテーションは、画像の各ピクセルを意味クラスに割り当てます。オブジェクトセグメンテーションは、画像内の各個々のオブジェクトを特定し、各ユニークオブジェクトにマスクを割り当てます。
- このシリーズの効率的な画像セグメンテーションには、PyTorchをディープラーニングフレームワークとして、Oxford IIIT Petデータセットを使用します。
- 画像セグメンテーションの適切なディープラーニングモデルを選択する際には、画像セグメンテーションタスクのタイプ、データセットのサイズと複雑さ、事前トレーニング済みモデルの可用性、および利用可能な計算リソースなど、多くの要因を考慮する必要があります。画像セグメンテーションのための最も人気のあるディープラーニングモデルアーキテクチャには、U-Net、FCN、SegNet、Vision Transformer(ViT)などがあります。
- 画像セグメンテーションタスクの損失関数の選択は重要であり、モデルのパフォーマンスとトレーニング効率に大きな影響を与える可能性があります。画像セグメンテーションタスクでは、クロスエントロピー損失、IoU損失、Dice損失、Focal損失などを使用できます。
- データ拡張は、過学習を防止したり、不十分なトレーニングデータに対処するために使用される有用なテクニックです。
- モデルのパフォーマンスを評価することは、タスクにとって重要であり、このメトリックを注意深く選択する必要があります。
- モデルサイズと推論レイテンシは、特に顔セグメンテーションや背景ノイズ除去などのリアルタイムアプリケーションで使用することを意図している場合に、モデルを開発する際に考慮する必要がある重要なメトリックです。
次の投稿では、PyTorchを使用してゼロから構築された畳み込みニューラルネットワーク(CNN)を使用して、Oxford IIITペットデータセット上で画像セグメンテーションを実行する方法を説明します。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles