ディープラーニングアルゴリズム面接のよくある質問(3)

プーリング層はバックプロパゲーションをどのように実行するのでしょうか?

  • 平均プーリング: 順方向伝播では、パッチの値が平均化され、次の層のピクセルに渡されます。したがって、バックプロパゲーションでは、あるピクセルの値を n 個の部分に均等に分割し、前の層に割り当てます。

  • max pooling: 順伝播では、パッチ内の最大値が次の層に渡され、それ以外の値は破棄されます。したがって、バックプロパゲーションでは、現在の勾配が前のレイヤーの特定のピクセルに直接渡され、同じパッチ内の他のピクセルの値は 0 になります。

プーリング層の役割

  1. 非線形性を追加します。
  2. パラメーターと計算を減らしながら主な機能を維持し、過学習を防止し、モデルの汎化能力を向上させます。
  3. 平行移動、回転、スケールなどの不変性 (不変性) を提供します。
  4. 受容野を増やす

ROIプーリングとROIアラインの違い

ROI プーリング: 2 つの量子化操作を使用すると、セグメンテーション タスクのピクセル レベルによって位置決めオフセットが大きすぎ、検出にはまだほとんど影響がありません。

ROI Align: 二重量子化は使用されず、双線形補間アルゴリズムのみが使用されます。

カスケード RCNN のモチベーション

**最初に Faster RCNN の関連ポイントを紹介します。**トレーニング フェーズでは、約 2000 件の提案が RPN によって抽出され、これらの提案が Faster RCNN に送信されます。Fast RCNN では、まず各プロポーザルと gt の間の IOU を計算し、人為的に設定された IOU 閾値によってこれらのプロポーザルをポジティブサンプルとネガティブサンプルに分け、それらの比率が可能な限り 1 を満たすようにサンプルをサンプリングします。 .:3 (128)、次に 128 個の提案が Roi Pooling に送信され、最後にカテゴリ分類とボックス回帰が実行されます。推論段階では、RPN ネットワークは約 300 件の提案を抽出し、300 件すべてが分類と回帰のための肯定的なサンプルとして送信されます。

カスケードで提起された質問:

  1. オーバーフィッティングの問題。IOU しきい値を増やします。このしきい値条件を満たすプロポーザルは以前よりも少なくなければならず、オーバーフィッティングにつながりやすくなります。
  2. より深刻な不一致の問題: トレーニング フェーズはすべて高品質の提案であり、過剰適合につながります。また、推論フェーズにはしきい値サンプリングがないため、検出器がこれまで見たことのない低品質の提案が多数存在します。下手な提案。

困難なネガティブサンプルマイニング(OHEM)とフォーカルロスの違い

ああ、神様:

  • ハードウェイト
  • 選択したサンプルの重みは 1 です。フィルタリングされたサンプルの重みは 0 です。
  • 一定の割合または数のサンプルをマイニングする
  • すべてのサンプルを最大限に活用できない

焦点損失:

  • ソフトな重み付け
  • 分類が正確であればあるほど (簡単なサンプル)、重みは低くなります。
  • 分類が間違っているほど(ハードサンプル)、重みが高くなります
  • すべてのサンプルがトレーニングに参加でき、すべてのサンプルを最大限に活用できます。

補間アルゴリズム

最近傍補間

アルゴリズム: 要求されるピクセルの 4 つの近傍で、要求されるピクセルに最も近いピクセルの値を割り当てます。次の図に示すように、要求されるピクセルは (i+u のピクセル グレー値です) , j+v), i と j は正の整数です。u<,0.5 v <0.5 の場合、要求されるピクセルに値 (i,j) を割り当てます。FPN における下から上へのアップサンプリングでは、最近傍法が使用されます。補間

ここに画像の説明を挿入

双一次補間

アルゴリズム: 取得するピクセルの隣接する 4 つのピクセルのグレー レベルを使用して、2 方向の線形補間を実行します。つまり、2 つの線形変換を実行します。

メリット・デメリット:最近傍補間と比べて計算量は多くなりますが、グレーの不連続性によるデメリットはありません

三次補間

3 次多項式を使用して理論的に最適な補間関数に近づくと、計算されるピクセルのグレー値は、周囲の 16 個のグレー値の加重補間によって取得されます。

3 つの比較:

  • 効果: 最近傍補間 < 双一次補間 < 三次補間
  • 速度: 最近傍補間 > 双一次補間 > 三次補間

開閉操作

オープン操作:

  • 最初に腐食し、次に膨張します
  • 操作すると、小さな明るい領域が削除され、オブジェクトがより細かい場所に分離されます。
  • 応用例: 閾値設定されたセルがオープニング操作によって分離され、セルの数をより明確にカウントできるようになります。

操作を閉じる:

  • 最初に膨張し、後で腐食する
  • 閉じる操作により、オブジェクト内の小さなスペースを埋めたり、隣接する明るいオブジェクトを接続したりできます。

シルクハット作戦

ステップ:元の画像と開く操作の違い

効果: 局所的な最大輝度がセグメント化されます。

ブラックハット作戦:

ステップ: 閉じる操作と元の画像の違い

効果: 部分的にブラック ホールがセグメント化されます。

ターゲット検出アンカーベースおよびアンカーフリー

アンカーベース:

アドバンテージ:

  • アンカー メカニズムを使用して高密度のアンカー ボックスを生成し、これに基づいてネットワークがターゲットの分類と境界ボックスの座標回帰を直接実行できるようにします。アプリオリボックスを追加すると、トレーニングが安定します
  • 高密度のアンカー ボックスはネットワーク ターゲットの再現率を効果的に向上させることができ、その向上は小さなターゲットの検出では非常に明白です。

欠点:

  • アンカーメカニズムの下ではハイパーパラメータを設定する必要があり、これには強力な事前知識が必要です
  • 重大な正と負のサンプルの不均衡問題を引き起こす
  • 一般化能力が低い

アンカーフリー:

アドバンテージ:

  • アンカーフリーは、予測中の計算に関してアンカーベースよりも 2/3 少ないです
  • ハイパーパラメータを設定する必要はありません
  • 導入とデコードが簡単: ヒートマップ上でプーリングを直接使用することは、NMS を実行し、オフセット、幅、高さを使用して対応する検出フレームを取得するのと同じです。(FCOS は nms を使用し、センターネットはプーリングを使用します)。nms 計算は CPU 上でのみ実行でき、GPU 上では並行して実行できません。

欠点:

  • 意味上の曖昧さ (2 つのターゲットの中心点の重なり) は、主に焦点損失と FPN によって軽減されるようになりました。
  • 汎化能力が低い、汎化能力が強い
アンカーベースのプロセス:
  1. 画像内にあらかじめ大量のアンカーを設置する
  2. アンカーに対する回帰ターゲットの 4 つのオフセット
  3. 対応するアンカーと回帰オフセットを使用して正確なターゲット位置を修正します
ターゲット検出にアンカーが導入されるのはなぜですか?

ターゲットの位置を特定するよりも、画像内のターゲットの位置を修正する方が簡単であるため、検出ネットワークに事前情報を導入するのと同じです。

アンカーフリー

アンカーフリーの精度はアンカーベースの方法と同等です。最大の功績は FPN (マルチスケール情報の提供) に起因し、次に焦点損失 (中心エリアの予測に非常に役立ちます) に起因します。

アンカーフリーに基づいてターゲット検出アルゴリズムを設定するには 2 つの方法があります。

  • キーポイント検出: ターゲット オブジェクトのいくつかのキーポイントを特定することで、検索スペースを制限します。
  • 中心点検出: 対象物の中心点を検出し、中心から境界までの距離を予測します。
キーポイント検出アルゴリズムに基づく

CornerNet は、ターゲット フレームの左上隅と右下隅の 2 つのキー ポイントを検出することによって、予測フレームを取得しますネットワーク プロセス全体: 入力画像は複数の Hourglass モジュールを接続することによって抽出され、次に 2 つのブランチ、つまり左上隅の予測ブランチと右下隅の予測ブランチを出力します。各ブランチ モデルはコーナー プーリング後に 3 つの部分を出力します。 : 予測されたコーナー位置 2. embeddings: 予測されたコーナー グループ化 3. offsets: 予測ボックスを微調整します。

キーポイント検出アルゴリズムに基づく

CenterNet は、キーポイントのグループ化や後処理を行わずに、オブジェクトの中心点を抽出するだけで済みますネットワーク構造はエンコードとデコードを使用して特徴を抽出し、出力は 3 つのブロックに分割されます。 1. ヒートマップ: 中心点の位置を予測します。 2. wh: 対応する中心点の幅と高さ 3. reg: オフセット対応する中心点の

センターネットの推論:

  1. 入力画像
  2. 入力画像をダウンサンプリングし、128*128 ヒートマップで予測を実行します。
  3. 次に、128*128 サイズのヒートマップで 3x3 の最大プーリング操作を使用して、ヒートマップ内の条件を満たすキー ポイントを取得し (nms 効果と同様)、100 個のキー ポイントを選択します。
  4. 最後に、信頼度のしきい値に従って最終的な検出結果をフィルタリングします。

ターゲット検出でアンカーの削除を考慮する必要があるのはなぜですか?

  • プリセットのアンカー サイズは、さまざまなデータ セットに応じて変更する必要があります。これは、手動で設定することも、データ セット上でクラスター化することもできます。
  • アンカーの数がターゲットの数よりもはるかに多いため、正のサンプルと負のサンプルの間に不均衡が生じます。

ATSS: 陽性サンプルの適応的選択

  1. 出力検出レイヤーごとに、各アンカーの中心点とターゲットの中心点の間の L2 距離を計算し、ターゲットの中心点に最も近い K 個のアンカー中心点を持つアンカーを候補陽性サンプルとして選択します。
  2. 各陽性サンプル候補と GT の間の IOU を計算し、この IOU グループの平均と分散を計算します。
  3. 平均 m と分散 g に従って、正のサンプルを選択するためのしきい値を設定します: t = m + g
特徴抽出機能: この機能を通じて、同じ種類のデータ分布が同じ解空間にマッピングされ、1 つのカテゴリに分類されます。

最大プーリングがより一般的に使用されるのはなぜですか? 平均プーリングが最大プーリングよりも適切なのはどのようなシナリオですか?

  • 最大プーリングは特徴選択を行い、より優れた分類認識を持つ特徴を選択し、非線形性を提供します。プーリングの機能は、冗長な情報を削除する一方で、特徴マップの特徴情報を保持することであり、分類問題では、画像がどこにあるかに関係なく、画像がどのようなオブジェクトを持っているかを知る必要があります。明らかに、平均プーリングよりも最大プーリングの方が適しています。
  • 平均プーリングは、情報全体のダウンサンプリングの層に重点を置き、パラメータの次元の削減に少し貢献し、情報の完全な送信の次元により反映されます。 DenseNet のモジュール間の接続のうち、平均プーリングを使用するものは、次元を削減しながら、特徴抽出のために次のモジュールに情報を転送する方が有益です。

データ強化方法

  • 単一サンプルの幾何学的変換: 反転、回転、クロップ、スケール
  • 1 サンプルのピクセル コンテンツ変換: ノイズ、ブラー、色の摂動
  • マルチサンプル補間のミックスアップ: 画像とラベルの両方が線形補間されます

モデルのトレーニングの初めにウォームアップがあるのはなぜですか?

トレーニングの開始時に小さい学習率でトレーニングをウォームアップしてネットワークをデータに慣れさせます。トレーニングが進むにつれて学習率が徐々に増加し、ある程度までは設定された初期学習率でトレーニングされます。

  • 初期段階でモデルのミニバッチへの初期の過剰適合現象を遅らせ、分布を安定に保つのに役立ちます。
  • モデルの深さの安定性を維持するのに役立ちます

R CNN から Faster R CNN までを簡単に説明します

  1. R CNN
  • まず、選択検索アルゴリズムを通じて画像上の約 2000 個の領域提案を取得します。
  • これらの領域提案を事前トレーニングされた CNN に入力し、前処理と均一なサイズによる特徴抽出を行います。
  • 抽出された特徴は分類のために SVM に入力されます。
  • 最後に、分類された領域の提案に対して bbox 回帰が実行されます。
  1. SPPネット
  • 空間ピラミッドプーリング
  • グローバル特徴マップを一度だけ抽出する
  1. 高速 R CNN
  • まず、選択的検索アルゴリズムを通じて画像上の約 2000 の領域提案を取得します。
  • 次に、画像全体に対して特徴抽出を実行します。
  • 次に、領域提案座標を使用して CNN の最後の特徴マップに ROI プーリングを入力し、ターゲット特徴を抽出します。
  • 次に、ROI プーリングによって抽出された特徴を FC モジュールに入力しますが、この時点ではアルゴリズム全体のプロセスは R-cnn に比べて大幅に簡素化されていますが、まだ共同学習は可能ではありません。
  1. より高速な受信
  • まず、学習可能な RPN ネットワークを通じてリージョン プロポーザルを抽出します。
  • 次に、領域提案座標を使用して、CNN 特徴マップ上で ROI プーリング操作を実行します。
  • 次に、空間プーリングに ROI プーリングを使用して、すべての特徴マップの出力サイズが同じになるようにします。
  • 最後に、すべての特徴マップが分類と回帰のために後続の FC レイヤーに入力され、エンドツーエンドのトレーニングが実現されます。

マスク rcnn ネットワークについて説明し、より高速な rcnn と比較してどのような点が改善されたのかを説明します

Mask rcnn は、より高速な rcnn に基づくターゲット検出ネットワークであり、ターゲット検出とインスタンスのセグメンテーションを同時に効果的に完了できます。マスク rcnn の主な貢献は次のとおりです。

  1. 基本ネットワークの強化: 特徴抽出ネットワークとして ResNext101+fpn を使用
  2. Roi align は、より高速な rcnn の Roi プーリングを置き換えます
  3. 新しい損失関数を使用します。マスク rcnn の損失関数は、分類の損失 + 回帰 + マスク予測の合計です。

SSDネットワークとそのメリット・デメリットを解説

SSD ネットワークは、さまざまなスケールで特徴マップの各ポイントにいくつかのデフォルト ボックスを設定します。これらのデフォルト ボックスはさまざまなサイズとアスペクト比を持ち、これらのボックスに対して分類とフレーム回帰操作を実行します。SSD の核心は、さまざまなオブジェクトに属する確率と座標調整の値を計算するためのデフォルト ボックスを設定することです。

利点: ssd は yolo よりも高速に動作し、その精度は特定の条件下でより高速な rcnn を上回ります。

短所: 事前のボックスとアスペクト比を手動で設定する必要がある ネットワーク内のデフォルトボックスの基本的なサイズと形状は学習によって直接取得できない 画像ピラミッドの考え方が使用されているが、再現率が低いオブジェクトはまだ平均的です。

FPN が小さなターゲットの精度を向上させることができるのはなぜですか?

基礎となる特徴の意味情報は比較的小さいですが、ターゲットの位置は正確です。高レベルの特徴の意味情報は比較的豊富ですが、ターゲットの位置は比較的大まかです。ほとんどの物体検出アルゴリズムは、予測に高レベルの機能を使用していることがわかりました。FPN は、最下層と上位層の意味情報を同時に使用し、これらの異なる特徴層の特徴を融合することで予測効果を実現し、予測は融合された各特徴層で個別に実行されます。

トレーニングプロセス中に損失が収束できなかった考えられる理由

  • データとラベルの問題
  • 学習率の設定が無理がある
  • ネットワークモデルは無理がある
  • データの正規化

画像をネットワークに入力する前に正規化する必要があるのはなぜですか?

  1. 入力層が大きい場合、バックプロパゲーション中に入力層に渡される勾配は非常に大きくなります。勾配が大きい場合、学習率は非常に小さくなければなりません。そうしないと、最適値を超えてしまいます。
  2. 一般に、正規化は、平均値を減算し、分散を除算する操作です。この方法により、画像の平均輝度値を除去できます。多くの場合、画像の明るさには興味がなく、その内容にもっと注意を払うことになります。検出タスクの追跡では、画像全体の明るさは、画像内にどのようなオブジェクトが存在するかには影響しません。このとき、各サンプルを正規化することで共通部分を削除し、個々の違いを際立たせることができます。

Yoloxのnms freeで採用されているpss構造

画像

最後に pss ブランチを追加して nms を置き換え、マッチング損失を提案します。

推論中の最終的な bbox スコアは次のとおりです。

ここに画像の説明を挿入

次に、nms プロセスを使用せずに、正と負のサンプルがこの番号によって直接ソートされ、topk が取得されます。

バッチサイズはモデルのパフォーマンスにどのような影響を与えますか?

  1. バッチサイズが大きいとトレーニング時間が短縮され、安定性が向上します
  2. バッチ サイズが大きいとモデルの一般化能力が低下しますが、その主な理由は、小さいバッチ サイズによってもたらされるノイズが局所最適から逃れるのに役立つためです。
  3. バッチ サイズが非常に大きくなると (臨界点を超えると)、モデルの汎化能力が低下します。この臨界点を下回ると、モデルのパフォーマンスはバッチ サイズに応じて変化し、通常は学習率の影響を受けません。

データ拡張の方法

  • ランダムなトリミング: 主な特徴を維持し、背景ノイズをトリミングできます。
  • mixup: 2 つの画像を 0.5 の比率で重ね合わせてサンプル数を増やし、ターゲットの背景を豊かにし、モデルの汎化能力を向上させます。
  • Cutmix: カットアウトとミックスアップを組み合わせて、画像の一部を消去し、トレーニングセット内の他のデータ領域のピクセル値をランダムに埋めます。
  • ランダム消去: 領域をランダムに選択し、ランダムな値で覆ってオクルージョン シーンをシミュレートします。
  • カットアウト: 正方形のみで塗りつぶし、塗りつぶし値は 0 または他の単色の塗りつぶしのみです (著者は、領域のサイズが形状よりも重要であることを発見しました)

パラメータの初期化

重み/パラメータの初期化

  • ランダム初期化: 小さすぎるとグラデーションが消え、大きすぎるとグラデーションが爆発します。
  • BN を使用したランダム初期化: BN は、大きすぎるデータまたは小さすぎるデータを 0-1 分布に正規化し、勾配の爆発や勾配の消失を回避できます。
  • Xavier 初期化 (Xavier): 入力データと出力データの分布が一貫していることを確認します。つまり、入力と出力の平均と分散が一貫していることを確認します。
  • 初期化: xavier は 0 点対称の活性化関数に適していますが、relu には適していません 解決策のアイデア: relu ネットワークでは、各層のニューロンの半分が活性化され、残りの半分は 0 であると想定されます。分散を変更しないでください。xavier に基づいて 2 で割るだけで済みます。

ここに画像の説明を挿入

pytorchの関数とモジュールの違い

  1. 関数は操作を定義するだけでパラメータを保存できません。モジュールはパラメータを保存するため、レイヤーの定義に適しています
  2. 関数は 3 つのメソッドを定義する必要があります: init、forward、backward; モジュールは init と forward のみを定義する必要があり、backward の計算は自動導出メカニズムで構成されます
  3. モジュールは一連の関数で構成されます。したがって、順方向の処理では、関数と変数が計算グラフを形成します。逆方向の場合は、関数の逆方向関数を呼び出すだけで結果が得られるため、モジュールは計算グラフを作成しません。逆方向に再度定義する必要があります。
  4. モジュールには関数が含まれるだけでなく、対応するパラメータや他の関数や変数も含まれます

Pythonのリスト、タプル、セット、辞書の違い list set dict

ここに画像の説明を挿入

Reluのメリットとデメリット

アドバンテージ:

  • グラデーションの飽和なし
  • 高速コンバージェンス
  • 計算効率が高く、負の値は 0 に切り捨てられるため、ネットワークにスパース性が導入され、計算効率がさらに向上します。

欠点:

  • Relu の出力は 0 平均対称ではないため、勾配更新方向に鋸歯状のパスが生成されます。
  • デッドレル問題。解決策: 1. 学習率を高く設定しすぎず、運動量などの最適化手法を使用します。 2. リーキーな relu: α の値は 0.01 PRelu: α は学習可能なパラメーターです。
  • データが圧縮されていないため、nanが発生しやすい
  • 低次元の relu 操作は情報損失を引き起こしやすいですが、高次元の relu 操作はほとんど情報損失を引き起こしません

内部共変量シフト (ICS)

各ニューロンの入力データは「独立して同一に分散」されなくなりました。

  • 上位層のパラメーターは新しい入力データの分布に常に適応する必要があるため、学習速度が低下します。
  • 下位層の入力の変化は大きくなったり小さくなったりする傾向があり、その結果、上位層が飽和領域に陥り、学習が途中で停止してしまうことがあります。
  • 各レイヤーの更新は他のレイヤーに影響を与えるため、各レイヤーのパラメーター更新戦略は可能な限り慎重になる必要があります。

YOLOシリーズ

v1 の革新ポイント:

  • 画像全体をネットワーク入力として使用し、出力層で境界ボックスの位置とカテゴリを直接返します。
  • 高速、一段階検出の先駆的な取り組み

v2 の革新ポイント:

  • 大規模な事前トレーニング分類
  • 新しいバックボーン: Darknet19
  • 結合アンカー

v3 の革新ポイント:

  • 新しいバックボーン: Darknet53
  • FPN
  • 分類器としてソフトマックスをロジスティック回帰に置き換えます

モデルのアイデアを改善する

  • データ角度
  • モデルの角度
  • パラメータ調整最適化角度
  • トレーニング角度

産業用着陸プロセス

  1. 製品定義、需要調査
  2. シーンの制約、データ収集
  3. ベースライン開発、ターゲットを絞った最適化
  4. アルゴリズムの導入、多次元テスト
  5. 継続的なメンテナンス、機能拡張

TensorRT

C++ コンパイル プロセスと同様に、既存のモデルをエンジンにコンパイルします。エンジンをコンパイルする過程で、各層の計算演算に最適な演算子メソッドが見つけられ、モデルの構造とパラメータ、および対応するカーネル計算メソッドがバイナリエンジンにコンパイルされるため、推論速度が大幅に向上します。導入後の加速。

アドバンテージ:

  1. いくつかのネットワーク層を統合
  2. 特別な concat 操作を実行しないなど、一部の不要な操作をキャンセルします。
  3. TensorRT は、さまざまなハードウェアに対応する最適化を行い、最適化されたエンジンを取得します。
  4. TensorRT は、計算量の削減と精度の維持の間の理想的なトレードオフを実現することにより、INT8 と FP16 の計算をサポートします。

デバイス側の静的マルチバッチと動的マルチバッチの違い

静的マルチバッチが 6 に設定されている場合、batch=2 またはbatch=4 のどちらを入力しても、デフォルトのbatch=6 に従ってリソースの申請が開始されます。

しかし、ダイナミックマルチバッチはバッチ数を事前に設定する必要がなく、実際のシーンで実際の入力バッチに応じてリソースの適用を最適化し、エンド側の実際の効率を向上させます。動的マルチバッチでは、通常、推論に時間がかかり、静的バッチよりもメモリ使用量が多くなります。

移動平均

これは変数の局所平均を推定するために使用され、変数の更新が一定期間の履歴値に関連するようになります。

写真

移動平均の利点: 使用するメモリが少なく、過去 10 または 100 個の履歴値を保存せずに平均を推定できます。移動平均はすべての履歴値を保存するほど正確ではありませんが、後者はより多くのメモリを使用し、計算にコストがかかります。

テスト中に移動平均が使用されるのはなぜですか?

移動平均を使用すると、テスト データに対してモデルをより堅牢にすることができます。

Pythonのインスタンスメソッド、静的メソッド、クラスメソッドの違いは何ですか?

  • @classmethod および @staticmethod によって変更されていないメソッドはインスタンス メソッドです
  • @classmethod によって変更されたメソッドはクラスメソッドです
  • @staticmethod によって変更されたメソッドは静的メソッドです

DataLoader 内部呼び出しメソッドの手順:

  1. データセットの長さを決定します (データセットの ____len____ メソッドによって実装されます)

  2. サンプリング インデックスを決定します (データローダーでのサンプラーとバッチサンプラーの実装)

  3. サンプル バッチのバッチを取り出します (データセットの ____getitem___ メソッドによって実装されます)

  4. 特徴とラベルに整理(データローダーのcollat​​e_fnメソッドの実装)

損失関数とは何ですか?

  • 回帰モデル: 通常は nn.MSELoss を使用します。
  • 2 カテゴリ モデル: 通常は nn.BCELoss または nn.BCEWithLogitsLoss を使用します。
  • 複数分類モデル: 通常、nn.CrossEntropyLoss (nn.softmax なしの y_pred) == y_pred (softmax あり) + nn.NLLLoss を使用することをお勧めします。
  • nn.MSELoss (平均二乗誤差損失、L2 損失とも呼ばれ、回帰に使用されます)
  • nn.L1Loss (L1 損失、絶対値誤差損失とも呼ばれ、回帰に使用されます)
  • nn.SmoothL1Loss (滑らかな L1 損失、入力が -1 ~ 1 の場合、L2 損失として平滑化され、回帰に使用されます)
  • nn.BCELoss (バイナリ クロス エントロピー、バイナリ分類に使用されます。入力は nn.Sigmoid によってアクティブ化されており、カテゴリの重みは不均衡データ セットの重みパラメータで調整できます)
  • nn.BCEWithLogitsLoss (バイナリ クロス エントロピー、バイナリ分類に使用されます。入力は nn.Sigmoid によってアクティブ化されていません)
  • nn.CrossEntropyLoss (クロスエントロピー、多重分類に使用され、ラベルをまばらにコーディングする必要があり、入力は nn.Softmax によってアクティブ化されておらず、カテゴリの重みは不均衡データセットの重みパラメーターで調整できます)
  • nn.NLLLoss (多重分類に使用される負の対数尤度損失では、ラベルをまばらにコーディングする必要があり、入力は nn.LogSoftmax によってアクティブ化されます)
  • nn.KLDivLoss (KL 発散損失。相対エントロピーとも呼ばれ、クロス エントロピーから情報エントロピーを引いたものに等しく、ラベルが確率値である場合の複数分類に使用され、nn.LogSoftmax によってアクティブ化される入力が必要です)
  • nn.CosineSimilarity (コサイン類似度、複数分類に使用可能)
  • nn.AdaptiveLogSoftmaxWithLoss (多くのカテゴリと非常に不均一なカテゴリ分布に適した損失関数。複数の小さなカテゴリを適応的にクラスタに結合します)

Pytorch モデリング プロセス

  1. データを準備する
  2. モデルを定義する
  3. トレーニングモデル
  4. 評価モデル
  5. 使用モデル
  6. モデルを保存

コーデック構造の設計アイデア

エンコーダでは、プーリング層の導入により、後続の畳み込み層の受容野が増加し、重要な情報に焦点を当てた特徴抽出が可能になり、背景干渉が軽減され、画像分類が容易になります。ただし、プーリング操作により位置情報が大幅に失われるため、エンコーダーによって抽出された特徴だけではピクセルを正確にセグメント化するのに十分ではありません。これにより、デコーダがオブジェクトの詳細を修復することが困難になり、デコーダのアップサンプリング/デコンボリューション層によって直接生成されたセグメント化された画像が粗くなります。そのため、誰かがショートカット接続 (unet) と aspp 構造を確立して高解像度を実現することを提案しました。解像度 レートの特性情報は後続のデコード プロセスに関与するため、デコーダがターゲットの詳細情報をより適切に復元できるようになります。

yolov5 の紹介

yolov5 と v4 はどちらも v3 をベースに改良されており、パフォーマンスは v4 と同等ですが、ユーザーの観点から見ると、使いやすさとエンジニアリングの点で v5 の方が優れています。v5 の原則は 4 つの部分に分けることができます。

  • 入力側: 小さなターゲット検出の場合、v4 モザイク拡張を引き続き使用し、適応アンカー ボックス計算を使用します (トレーニング コードにアンカー ボックス計算を追加します)。
  • バックボーン: v4 の cspdarknet53 構造を使用しますが、画像入力の前にフォーカス操作を追加します (v6.0 は 6*6 畳み込みに置き換えられます)。v5 では、異なるサイズの 4 つのネットワーク構造 (s、m、l、x) が提供され、深さと幅の 2 つのパラメーターによって制御されます。
  • ネック: sppf + panet マルチスケール フィーチャ フュージョンを使用
  • 出力端子: v3 の先頭に従い、GIOU 損失を使用して境界ボックス回帰を実行します。出力は依然として 3 つの部分 (信頼度、境界情報、分類情報) です。

RPN実装の詳細

特徴マップはスライディング ウィンドウによって処理されて 256 の特徴が取得され、各特徴ベクトルに対して 2 つの完全接続操作が実行され、合計 2 つのスコア (前景および背景のスコア) と 4 つの座標 (元の画像座標のオフセット) が得られます。得られた。

クロスエントロピー CE が回帰問題に対して機能しない

mse とクロス エントロピーを同時に複数分類のシナリオに適用すると、mse は各出力の結果を非常に重視しますが、クロス エントロピーは正しい分類の結果のみを評価します。

ここに画像の説明を挿入

上式から、クロスエントロピーの損失関数は正しい分類の予測結果のみに関連しているのに対し、mse の損失関数は誤った分類にも関連していることがわかります。可能な限り、分類関数は誤分類も平均化しますが、実際には、この調整は分類問題には必要ありません。しかし、回帰問題の場合、そのような考慮事項は非常に重要です。

深層学習における学習手法の最適化(一次、二次)

  • 一次法: 確率的勾配降下法、運動量、ニュートンの運動量法 (ネステロフ運動量)、adagrad (適応勾配)、Rmsprop、adam
  • 二次法:ニュートン法、準ニュートン法、
  • 適応最適化アルゴリズム: adagrad、rmsprop、adam

ここに画像の説明を挿入

コンピューター ビジョンの分野でディープ ラーニングが優れているのはなぜですか?

  • 物体検出を例に挙げると、従来のコンピュータ ビジョン手法では、まず経験に基づいて手動で特徴を抽出し、次に分類器を使用して分類しており、2 つのプロセスは分離されています。
  • ディープラーニングでは、局所領域の情報を抽出し、より高度な特徴を取得するために CNN が使用されます。ニューラル ネットワークの層数が増えると、抽出された特徴はより抽象化され、分類に役立ちます。同時に、ニューラル ネットワークは、特徴と分類が 1 つの構造に融合されています。

L1 正則化と L2 正則化の違いは何ですか?

  • L1: スパース性が生成され、w の多くのエントリがゼロになる可能性があります。計算の利点に加えて、スパース性はより「説明可能」になります。(たとえば、病気が 5 つの変数に依存する場合、医師は法則を理解し、説明し、要約するのが容易になりますが、5,000 の変数に依存する場合は、基本的に人間の範囲を超えます)
  • L2: モデルの解はノルムが小さい W に偏り、解空間を制限することで過学習がある程度回避されます。

Python のジェネレーターとは何ですか?

ジェネレーターはイテレーターを作成するためのツールで、通常の関数との違いは、データを返すときに yield ステートメントを使用することです。次の関数が呼び出されるたびに、ジェネレーターは中断したところから再開します。

ジェネレーターとイテレーターの違い

  1. ジェネレーターは本質的に、最後に関数が返されたときの関数本体の位置を記憶する関数であり、データの状態だけでなく、実行位置も記憶します。
  2. イテレータは次の操作をサポートするオブジェクトです。イテレータには一連の要素が含まれており、次の操作を実行し、要素の 1 つを返します。すべての要素が返された後、再度実行するとエラーが報告されます。

違い:

  • ジェネレーターは要素を生成するものであり、イテレーターはコレクション要素にアクセスする方法です。

Pythonのパラメータは値またはアドレスで渡されますか

  • 実際のパラメータが不変パラメータの場合、値によって渡されます。
  • 実際のパラメータが可変パラメータの場合、参照によって渡されます。

Python の is と == の違いは何ですか?

is: 2 つのオブジェクトの ID 値が等しいかどうかを比較します

==: 比較は 2 つのオブジェクトの内容が等しいかどうかであり、オブジェクトのqual() メソッドがデフォルトで呼び出されます。

Pythonのプロセスとスレッド

  • スレッド: これは基本的な CPU 実行ユニットであり、存続するにはプロセスに依存する必要があります。マルチスレッドの利点は、複数のスレッドがプロセスのメモリ空間を共有できるため、プロセス間通信の実装が非常に簡単であることです。ただし、公式の CPython インタープリタを使用する場合、マルチスレッドは GIL (グローバル インタープリタ) の影響を受けます。マルチコア機能
  • プロセス: 指定されたデータ セットでのプログラムの実行プロセスを指します。これは、システムによるメモリ割り当ての基本単位です。各プロセスが開始されると、最初にメイン スレッドが生成され、次にメイン スレッドが他のサブ スレッドを作成します。 -スレッド。マルチプロセスを使用すると、CPU のマルチコア機能を最大限に活用できますが、プロセス間通信は比較的煩雑であり、IPC メカニズム (パイプライン、ソケットなど)を使用する必要があります。

違い:

  1. スレッドは何らかのプロセス内で実行する必要があります。
  2. プロセスには複数のプロセスを含めることができますが、その中にはメイン スレッドが 1 つだけあります。
  3. 複数のスレッドは、同じアドレス空間、開いているファイル、およびその他のリソースを共有します。
  4. 複数のプロセスが物理メモリ、ディスク、プリンタ、その他のリソースを共有します。

マルチスレッドかマルチプロセッシングを選択しますか?

  • CPU 集中型: プログラムは計算に重点を置いており、計算のために CPU を頻繁に使用する必要があります。———————> マルチプロセス
  • I/O 集中型: プログラムは頻繁な入出力操作を必要とします。例: クローラー —————————> マルチスレッド

os モジュールと sys モジュールの役割は何ですか?

  • os モジュールは、プログラムとオペレーティング システムの間の対話を担当し、オペレーティング システムの最下層にアクセスするためのインターフェイスを提供します。
  • sys モジュールはプログラムと Python インタープリターの間の対話を担当し、Python オペレーティング環境を操作するための一連の関数と変数を提供します。

閉鎖

関数内に別の関数を定義し、この関数は外側の関数の変数を使用します。この関数と使用されるいくつかの変数はクロージャと呼ばれます。

OSTUアルゴリズム(大津法)

OSTU は 2 値化に最適なしきい値を選択する方法であり、基本原理は、しきい値 T に従って画像内のピクセルを C1 と C2 に分割することです。しきい値 T を継続的に調整した後、クラス間の最大の分散がある場合、その場合、このしきい値が最適なしきい値となります。

画像のセグメンテーション

画像セグメンテーションには、しきい値ベース、領域ベース、エッジベース、クラスターベース、深層学習ベースの画像セグメンテーション手法などが含まれます。

https://blog.csdn.net/m0_45447650/article/details/124398438

  • 固定閾値法 - ヒストグラム二峰性法

基本的な考え方: 画像内に明らかなターゲットと背景があると仮定すると、そのグレースケール ヒストグラムは二峰性の分布を持ちます。グレースケール ヒストグラムが二峰性の特性を持つ場合、2 つのピークの間の谷に対応するグレー値がしきい値として選択されます

画像

自動閾値方式

  • 適応閾値法:単純な画像の場合は固定閾値法でもうまく分割できますが、要素が多く明暗の変化が不均一な画像の場合、固定閾値法ではうまく分割できません

cv2.adaptiveThreshold(): 小領域の閾値計算方法 1. 小領域の平均値を取る 2. 小領域の加重加算、重みはガウスカーネル

  • 反復しきい値セグメント化: 1. 画像の最大グレー値と最小グレー値を見つけ、初期しきい値 T0 = (最大グレー値 + 最小グレー値)/2 を設定します。 **2.**しきい値に従って画像をセグメント化します。前景と背景、それぞれ前景と背景の平均グレー値 (z1、z2) を計算します。 3. 新しいしきい値 T1 = (z1 + z2)/2 を計算します。 4. T0 == T1 の場合、結果がしきい値になります。それ以外の場合、結果はしきい値になります。 2 の反復計算 5 に進みます。計算されたしきい値を固定しきい値セグメンテーションに使用します。
  • 大津大津法: 最大クラス間分散は、グローバルしきい値に基づく適応的な方法です。つまり、前景と背景のクラス間分散を最大化するしきい値を見つける方法です。

エッジ検出

  • 賢いオペレーター

ここに画像の説明を挿入

勾配の方向と大きさの計算

ここに画像の説明を挿入

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_45074568/article/details/129070004