web-dev-qa-db-ja.com

darknetのyolo.cfg構成ファイルを理解する

私はインターネットを検索しましたが、これに関する情報はほとんど見つかりませんでした。各変数/値がyoloの.cfgファイル。だから私はあなたの何人かが助けてくれることを望んでいた、私がこの問題を抱えているのは私だけではないと思うので、誰かが2つまたは3つの変数を知っているなら、将来そのような情報を必要とする人々がそれらを見つけることができるようにそれらを投稿してください。

私が知りたい主なものは次のとおりです:

  • バッチ
  • 細分化

  • 減衰

  • 勢い

  • チャンネル

  • フィルター

  • 活性化

16
Reda Drissi

ここにいくつかの変数についての私の現在の理解があります。ただし、必ずしも正しいとは限りません。

[ネット]

  • バッチ:フォワードパスで多くの画像とラベルを使用して、勾配を計算し、バックプロパゲーションによって重みを更新します。
  • サブディビジョン:バッチは、この多くの「ブロック」に細分化されます。ブロックの画像はGPUで並行して実行されます。
  • 減衰:おそらく、値が大きくならないように重みを小さくする用語です。安定性の理由から、私は推測します。
  • チャンネル:この画像で説明した方が良い:

左側には、4x4ピクセルの単一チャネルがあります。再編成レイヤーはサイズを半分に縮小し、異なるチャネルに隣接するピクセルを持つ4つのチャネルを作成します。 figure

  • 運動量:新しい勾配はmomentum*previous_gradient+ (1-momentum)*gradient_of_current_batchグラデーションをより安定させます。
  • adam:adamオプティマイザーを使用しますか?私にはうまくいきません
  • burn_in:最初のxバッチについて、最終値(learning_rateパラメーター値)まで学習率をゆっくりと増加させます。これを使用して、損失がどの値まで減少するか(発散し始める前)を監視して、学習率を決定します。
  • policy = steps:以下のステップとスケールのパラメーターを使用して、トレーニング中に学習率を調整します
  • steps = 500,1000:500および1000バッチ後に学習率を調整します
  • scales = 0.1,0.2:500の後、LRに0.1を掛け、1000の後再び0.2を掛けます
  • angle:この角度(度単位)まで回転することで画像を増強します

  • filters:レイヤーにある畳み込みカーネルの数。
  • アクティベーション:アクティベーション関数、relu、leaky reluなど。src/ activations.hを参照
  • stopbackward:このレイヤーのみまで逆伝播を行います。最初のヨーロ層の前の最後から最後の畳み込み層に入れて、その背後の層のみを訓練します。事前学習済みの重みを使用する場合。
  • ランダム:ヨーロ層に入れます。 1に設定すると、数バッチごとに異なるサイズに画像のサイズを変更することにより、データの増加を行います。オブジェクトサイズを一般化するために使用します。

多くのことは多かれ少なかれ自明です(サイズ、ストライド、batch_normalize、max_batches、幅、高さ)。さらに質問がある場合は、お気軽にコメントしてください。

繰り返しますが、私はそれらの多くについて100%確信がないことに留意してください。

22
FelEnd

バッチ損失を減らすために各バッチで選択された画像の数

subdivisions noへのバッチサイズの分割。並列処理のためのサブバッチの

decayは学習パラメーターであり、ジャーナルで指定されているように、0.9の運動量と0.0005の減衰が使用されます

momentumは学習パラメーターであり、ジャーナルで指定されているように、0.9の運動量と0.0005の減衰が使用されます

channels Channelsは、BGRイメージの入力イメージ(3)のチャネルサイズを指します

filters CNNアルゴリズムに使用されるフィルターの数

アクティベーション CNNのアクティベーション関数:主にLeaky RELU関数が使用されます(主に構成ファイルで見たもの)

2
code-freeze

これは非常に古いヘルプのリクエストですが、答えを探している将来のユーザーのために、元のYoloプロジェクトの最も有名なフォーク内のWikiページですべての説明を見つけることができます https://github.com/AlexeyAB/darknet/wiki

特に、次のように here から[net]部分のみをコピーして貼り付けます。

[ネット]

  • batch=1-1つのバッチに含まれるサンプル(画像、文字、...)の数
  • subdivisions=1-1つのバッチ内のmini_batchesの数、サイズmini_batch = batch/subdivisionsので、GPUプロセスmini_batchサンプルを一度に取得し、batchサンプルの重みを更新します(1回の反復処理batchイメージ)
  • width=416-ネットワークサイズ(幅)。したがって、トレーニングと検出中にすべての画像がネットワークサイズにサイズ変更されます。
  • height=416-ネットワークサイズ(高さ)。したがって、トレーニングおよび検出中にすべての画像がネットワークサイズにサイズ変更されます。
  • channels=3-ネットワークサイズ(チャネル)。したがって、トレーニングと検出中にすべての画像がこのチャネル数に変換されます。
  • inputs=256-ネットワークサイズ(入力)は非画像データに使用されます:文字、価格、カスタムデータ

とにかく、通常はすでに質問されて回答されているので、知りたいと思っている何か、素朴なものについても、 Github/issues part を調べてみてください。

幸運を。

1
l.fabbrini