質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

2631閲覧

yolov3でオリジナルデータでの学習の仕組み(keras)

shocora

総合スコア8

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

1グッド

1クリップ

投稿2020/09/11 06:44

前提,質問したいこと

現在YOLOv3を独自データセットで学習することに取り組んでいるのですが、知らべても理解できなかったことがあるので質問させていただきます。

現在、下記のサイトを参考にオリジナルデータでの学習はできたのですが、以下のコマンドでyolov3のweightsをダウンロードしてきてからkeras用に変換しているところの詳細が分かりません。
wget https://pjreddie.com/media/files/yolov3.weights
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

そこで、質問なのですが
yolov3.weightsはCOCOデータセットで学習された80種類の物体を検出できる重みのネットワークということなのでしょうか。
また、今回私はこの80種類には含まれない物体を学習させたのですが、このネットワークのどの層の重みを学習し直しているのでしょうか。(すべての重みなのか一部分だけなのか)
また、yolov3で独自データで学習させるネットワークとはdarknet53のことなのでしょうか。

見当違いのことを言ってしまっているかもしれませんが、教えていただけると助かります。何卒宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

参考にしたサイト
https://sleepless-se.net/2019/06/21/how-to-train-keras%E2%88%92yolo3/

haru135👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

yolov3.weightsはCOCOデータセットで学習された80種類の物体を検出できる重みのネットワークということなのでしょうか。

はい
https://pjreddie.com/media/files/yolov3.weights の重みは MSCOCO の80クラスのモデルです。

今回私はこの80種類には含まれない物体を学習させたのですが、このネットワークのどの層の重みを学習し直しているのでしょうか

全部の層です。

yolov3で独自データで学習させるネットワークとはdarknet53のことなのでしょうか。

darknet53 は YOLOv3 の一部、YOLOv3 が物体検出モデルの名称


自作のデータセットを学習するのになぜ MSCOCO の重みを最初に変換して使うのかというと、モデルをゼロから学習するのは大変なので、既存の学習済みの重みを初期値として使う「fine-tuning」という転移学習手法を使うためです。

追記

darknet53がYolov3の一部というのは、どの部分のことでしょうか

特徴抽出器として darknet53 を使っているということです。
keras-yolov3 だと以下の darknet_body() で作ってる部分

keras-yolo3/model.py at master · qqwweee/keras-yolo3

論文だと「2.4. Feature Extractor」に記載があります。

https://pjreddie.com/media/files/papers/YOLOv3.pdf

fine-tuningは通常CNNの下から何層かを解凍して、その解凍した層のみを再学習させるという認識でしたが、今回のようなオリジナルデータを検出したい場合はすべての層を解凍して学習させているということですか?

途中の層をフリーズする場合もしない場合も自分は fine-tuning と認識していましたが、どうなのでしょう。
言葉の定義の問題はおいといて、今回のケースでは全部の層のパラメータを調整しています。

転移学習の方法

MSCOCOのような既存のモデルの重みを初期値として使う理由は何でしょうか

特徴抽出部分は学習する題材がなんであっても使い回せるものなので、潤沢な計算リソースと大量のデータが用意できるのであればゼロから学習してもよいですが、
そうでないなら、物体検出に限らず、学習済みモデルを使って重みを初期化するのが一般的です。

投稿2020/09/11 07:08

編集2020/09/11 07:56
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shocora

2020/09/11 07:29

回答ありがとうございます。理解が深まりました。 重ねて質問なのですが、darknet53がYolov3の一部というのは、どの部分のことでしょうか。下記リンクで両ネットワークを見比べてみましたが分かりませんでした。 YOLOv3 https://qiita.com/cyberailab/items/850806c08af08853bac8 Darknet53 https://qiita.com/mdo4nt6n/items/7cd5f106adc775e5d92b また、fine-tuningは通常CNNの下から何層かを解凍して、その解凍した層のみを再学習させるという認識でしたが、今回のようなオリジナルデータを検出したい場合はすべての層を解凍して学習させているということですか?その場合、MSCOCOのような既存のモデルの重みを初期値として使う理由は何でしょうか。 知識不足で大変申し訳ないのですが、ご教授いただければ助かります。よろしくお願いいたします。
tiitoi

2020/09/11 07:51

追記しました。
shocora

2020/09/11 17:16

返信遅れてしまい申し訳ありません。ご丁寧なご回答ありがとうございます。 転移学習に関しては、理解することができました。 darknet53については、載せていただいたmodel.pyのソースコードが理解できませんでした。また、論文の2.4章を翻訳して読んだのですが、特徴抽出器というのは、分類を行う(ロジスティック回帰)層の前までのネットワークのこと(darknet53)であり、分類まで含めたネットワークがyolov3という事なのでしょうか。そして、オリジナルデータで重みを再学習するのがdarknet53ということでしょうか。 何度も質問してしまい申し訳ないのですが、教えていただけると助かります。よろしくお願いいたします。
tiitoi

2020/09/11 18:10 編集

> 分類を行う(ロジスティック回帰)層の前までのネットワークのこと(darknet53)であり、分類まで含めたネットワークがyolov3という事なのでしょうか。 分類モデルの場合はその理解であってます。 物体検出の場合、特徴抽出器 (例: darknet53) → 矩形やクラスを推論するためのいくつかの層となっていますが、特徴抽出器で画像から特徴を抽出し、それを分類や物体検出に使うという点では同じです。 darknet53 + いつくかの層 = YOLOv3
shocora

2020/09/13 11:17

回答ありがとうございます。tiitoi様のおかげで疑問に思っていたことを解決することができました。これからyolov3の学習をいい結果が出せるまで頑張ろうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問