アルゴリズム実装の概要

ブロガー自身のアルゴリズムと他のブロガーの要約によると

面接中、面接官は、paperswithcode で SOTA モデルを直接使用することを特に嫌いました。モデルが機能する場合は、そのモデルが機能タスクに適している理由を考えずに直接使用できるため、試行錯誤することはお勧めできません。このブログ投稿の本来の目的。

1. データに精通している

Andrew Ng: 80% データ + 20% モデル = より優れた AI
新しいプロジェクト タスクの場合、最初のステップは検出タスクなどのデータに慣れることです。ラベルが妥当かどうかを確認するビジュアル コードを記述して、検出対象物の大きさ分布(アンカー設定に便利)、画像の大きさの確認、カテゴリー分布の確認(ロングテール現象の有無)など。

2. アルゴリズムの選択

新しい分野の仕事を受けると、関連する分野のアルゴリズムを研究する必要がありますが、例えばブロガーさんはモーション検出などをやったことがあるのですが、最初はこの分野にあまり詳しくないので、研究に時間がかかってしまいます。この部分も忍耐が必要な部分です。研究には時間がかかりますが、アルゴリズム選択の実験を省略できるため、非常に費用対効果が高くなります。たとえば、モーション検出: openpose、slowfast、hrnet など。mmdet シリーズを視聴することをお勧めします。押して、押して、押して、押して!
あまり望ましくないアイデア:

  1. インジケーターに固執しすぎる場合、たとえば、インジケーターが独自のデータセットでうまく機能しない場合は、すぐに別のアルゴリズムに変更するか、すぐにバックボーンに変更してください。APとARのどちらの指標が効果的でないのかを慎重に分析する必要があります。、自分のトレーニング(lr)に問題があるのか​​、現在のデータがアルゴリズムに適していないのか、評価指標が無理があるのか​​。
  2. 関連する調査を行わず、SOTA アルゴリズムを直接使用しないでください: たとえば、現在のタスク検出ターゲットは小規模なターゲットですが、SOTA アルゴリズムは中規模および大型のターゲットの検出に偏っています。別の例: SOTA は、独自のタスクに対していくつかの最適化を行いません。シーンデータ。または、現在のタスクは高い FPS を必要とし、SOTA モデルは多くの場合重いネットワークになります。

3. 既存の実装に基づいてアルゴリズムを最適化する

特定のタスクに適したアルゴリズムを選択した後、そのアルゴリズムを再現するには、github で比較的高いスターを持つオープンソース プロジェクトを選択するのが最善です。
これを行う目的:

  • アルゴリズムの具体的な詳細を深く理解する方が便利ですが、この記事では (追加のトリックを使用して) モデル全体に​​ついて特に詳しく説明することは不可能です。ソース コードを読む必要があります。
  • 再現アルゴリズムのおおよその実行速度や達成効果など、アルゴリズムの基本性能を素早く把握できる
  • 自分で無駄な仕事をしないでください

改良されたオープンソース プロジェクト モデルの使用には、次のようなアイデアがあります。

  • この記事のコードにいくつかのトリックが実装されていますか。実装されていない場合は、試してみてください。
  • 論文は実験結果を分析するのが一般的で、その後に著者の意見が含まれ、場合によっては論文のアルゴリズム効果が低い理由が説明される場合があります。
  • 一部の記事では、今後の取り組みの可能性について書いていますが、これは改善のアイデアでもあります。
  • 実験結果を視覚的に確認する必要があります (特に独自のデータセットを実行する)。結果は公開データセットで著者が示した問題とは異なる可能性があり、結果が悪い理由を分析する必要があります。

4. 0からの再帰アルゴリズム

いくつかのアドバイス:

  • データ インターフェイス、モデル、損失出力、最終評価コードに至るまで、あらゆる詳細をテストしてみてください。あらゆる部分を制御下に置く
  • データインターフェイスをテストします。単一プロセスから開始します。バッチは 1 です。比較のために値を出力すると便利です。
  • ランダムにランダム化せず、問題が再現できるようにしてください。たとえば、最初にランダム データ拡張を追加しないでください。モデルのランダム シードは固定されます。
  • 少量のデータがあれば、実験を迅速に行うことができ、モデルをすぐに過剰適合させることができます。モデルの過学習能力によって、モデルが何かを学習できるかどうかを大まかに判断できます。
  • できる限り原文を再現するように努めますが、再現する前に独自のアイデアを追加しすぎないようにしてください。たとえば、トレーニング パラメーター、モデル バックボーン、データ拡張方法などは、最初に記事の後に続きます。不明な点がある場合は、著者に電子メールを送信するか、ディスカッションのために関連するサークルを見つけてください。
  • ログはすべて出力されますが、たとえば損失が nan に解決された場合、それが forward によるものか bp によるものかを知る必要があります。

5. 役立つトレーニングのアドバイス

  • データの信頼性を確保する
  • 事前にトレーニングされたモデルがある場合は、必ずそれを使用する必要があります。
  • 通常、学習率パラメータは 1e-5 未満で、コサイン演算やステップ演算など基本的に役に立たず、最終的な学習率は 1e-5 になります。もちろん特別なタスクは異なります
  • bn トレーニング中は忘れずに更新をオンにしてください (特に見逃しやすい tf の小さなパートナー)。そうしないと、トレーニング中に損失が急速に低下し、テストでモデルが収束していないと思われる問題が発生する可能性があります。
  • sgd は優れていますが、実験的に adam を使用した方が収束速度が向上する可能性があります
  • アルゴリズムのパフォーマンスを最大限に絞り出したい場合は、絞り出す前に現在のモデルが対応するパフォーマンスに到達できることを確認してください。やみくもにモジュールを変更したりパラメータを狂ったように調整したりするよりも、それは単なる時間の無駄かもしれません
  • 独自のパラメーター チューニング テクノロジをあまり信頼しないでください。より良いベースラインがなければ、パラメーター チューニングは質的に飛躍することはありません (以前のパラメーターによって何らかのバグが発生した場合を除く)。
  • データが小さい場合は、事前トレーニングされたモデルを使用し、最初の数層のモデル パラメーターを忘れずに修正してください。また、より小さい学習率を使用することもできます。
  • トレーニングを繰り返すとポイントが増加する場合があります。モデルをトレーニングした後、トレーニング済みモデルを事前トレーニング モデルとして使用してロードし、同じパラメーター セットでトレーニングを続けます。
  • DL は機械学習のような多くの公式でサポートされているわけではなく、実験を行って検証することに意味があるものが多いため、できるだけ多くの論文を読み、他の人の実験を参考にして、無駄な実験を減らすことができます。

おすすめ

転載: blog.csdn.net/weixin_45074568/article/details/124850999
おすすめ