導入 Tensorflow はバージョン 1.0 へのアップデート後に多くの新機能が追加され、tf フレームワーク (https://github.com/tensorflow/models) で記述された多くのディープ ネットワーク構造がリリースされ、開発の難易度が大幅に軽減されました。既製のネットワーク構造を使用すると、微調整と再トレーニングの両方がはるかに便利になります。最近、ついに TensorFlow Object Detection API の ssd_mobilenet_v1 モデルを実行しました。ここでは、データの準備からモデルの使用までのプロセス全体を実行する方法を記録します。これは、私やクラスメートにとって役立つと思います。 オブジェクト検出 API は、5 つのネットワーク構造に対して事前トレーニング済みの重みを提供します。これらはすべて、COCO データセットを使用してトレーニングされています。5 つのモデルは、SSD+mobilenet、SSD+inception_v2、R-FCN+resnet101、faster RCNN+resnet101、faster RCNN+inception+resnet101 です。各モデルの精度と計算時間は以下のとおりです。以下では、オブジェクト検出を使用して独自のモデルをトレーニングする方法について説明します。 ここでは TensorFlow のインストールについては説明しません。インターネット上には多くのチュートリアルがあり、TensorFlow のインストールに関する非常に詳細なドキュメントを見つけることができます。 トレーニング前の準備: protobuf を使用してモデルとトレーニング パラメータを設定するため、API を正常に使用する前に protobuf ライブラリをコンパイルする必要があります。直接コンパイルされた pb ライブラリをここ (https://github.com/google/protobuf/releases) からダウンロードし、圧縮パッケージを解凍して、環境変数に protoc を追加できます。
(環境変数に protoc を追加したところ、*.proto ファイルが見つからないというエラーが発生しました。その後、protoc.exe を models/object_detection ディレクトリに配置して再実行しました。) 次に、モデルとスリム (tf アドバンス フレームワーク) を Python 環境変数に追加します。
データ準備: データセットは PASCAL VOC 構造に変換する必要があります。API は、VOC 構造データセットを .record 形式に変換するための create_pascal_tf_record.py を提供します。しかし、より簡単な方法を見つけました。Datitran は、.record 形式を生成するより簡単な方法を提供します。 まず、画像に適切なラベルを付ける必要があります。ここでは labelImg ツールを使用できます。サンプルに注釈が付けられるたびに、XML 注釈ファイルが生成されます。次に、これらの注釈付き XML ファイルを、トレーニング セットと検証セットに応じてそれぞれ 2 つのディレクトリに配置します。xml_to_csv.py スクリプトは Datitran で提供されています。ここでは、マークされたディレクトリ名のみを指定する必要があります。次に、対応する csv 形式を .record 形式に変換する必要があります。
generate_tfrecord.py を呼び出し、2 つのパラメーター –csv_input と –output_path を必ず指定してください。次のコマンドを実行します。
これにより、トレーニングと検証用の train.record と test.record が生成されます。次にラベル名を指定します。model/object_detection/data/pet_label_map.pbtxtに従ってファイルを再作成し、ラベル名を指定します。
電車: 必要に応じて、coco データセットで事前トレーニングされたモデルを選択し、トレーニングするディレクトリにプレフィックス model.ckpt を配置します。ここで、メタファイルはグラフとメタデータを保存し、ckpt はネットワークの重みを保存します。これらのファイルは、事前トレーニング済みモデルの初期状態を表します。 ssd_mobilenet_v1_pets.config ファイルを開き、次の変更を加えます。 num_classes: 独自のクラス番号に変更する すべての PATH_TO_BE_CONFIGURED の場所を、以前に設定したパスに変更します (合計 5 つ) その他のパラメータはすべてデフォルトのままです。 上記のファイルを準備したら、トレーニング用のトレーニングファイルを直接呼び出すことができます。
TensorBoard モニタリング: トレーニングプロセスは、Tensorboard ツールを使用して監視できます。次のコマンドを入力した後、ブラウザに localhost:6006 (デフォルト) を入力します。
インジケーター曲線やモデル ネットワーク アーキテクチャも多数あります。著者はまだ多くのインジケーターの意味を理解していませんが、TensorBoard ツールは非常に強力であるはずだと感じています。ただし、Total_Loss を使用すると、全体的なトレーニング状況を確認できます。 全体的に、損失曲線は確かに収束しており、全体的なトレーニング効果は満足のいくものです。さらに、TensorFlow では、トレーニング中に精度を検証するために検証セットを使用する機能も提供されていますが、著者はそれを呼び出すときにまだいくつかの問題に遭遇しました。これについては、ここでは今のところ詳しく説明しません。 フリーズモデルのエクスポート: モデルの実際の効果を確認する前に、トレーニング プロセス ファイルをエクスポートし、.pb モデル ファイルを生成する必要があります。本来、tensorflow/python/tools/freeze_graph.py はモデルをフリーズするための API を提供していますが、出力の最終ノード名(通常は softmax などの最終層の活性化関数の名前)を提供する必要があります。物体検出 API は事前学習済みのネットワークを提供しており、最終ノード名が簡単には見つからないため、object_detection ディレクトリに export_inference_graph.py も提供しています。
エクスポートが完了すると、output_directory の下に、frozen_inference_graph.pb、model.ckpt.data-00000-of-00001、model.ckpt.meta、および model.ckpt.data ファイルが生成されます。 生成されたモデルを呼び出します。 ディレクトリ自体に呼び出し例がありますが、次のように少し変更されています。
認識効果の写真をいくつか紹介します。 終わり。 |
>>: 中国チームがボストン・ダイナミクスに対抗する四足歩行ロボットを発表
訪問者は検問所で携帯電話の「健康コード」を開き、携帯電話の画面をコードスキャンウィンドウの前に置くこ...
[[438551]]人工知能技術の急速な発展に伴い、世界各国は兵器や装備の研究開発にインテリジェント...
画像、音声認識、自然言語処理、強化学習などの多くの技術分野において、ディープラーニングは非常に効果的...
1月4日、研究者のデイビッド・クルーズマ氏はナショナルジオグラフィックとブルームバーグ・フィランソロ...
マスク氏はツイッターで奇妙な見解を表明した。人類が超人的な人工知能を創り出した理由は、ある種の「脳寄...
マイクロソフトは 7 月 11 日にプレスリリースを発行し、Combinable Diffusion...
推奨アルゴリズムは、機械学習とデータマイニングの分野の重要な部分であり、ユーザーにパーソナライズされ...
[[207730]] Microsoft は、Apache Spark 用のディープラーニング ライ...
技術が急速に進歩する時代において、人工知能 (AI) が最終的に世界を支配するかどうかという差し迫っ...
この記事は次のように構成されています。固有表現抽出 (NER) とはどのように識別しますか? cs2...
最新の3Dアニメーションをご覧になった方は、その壮大な世界に衝撃を受けるかもしれません。もしこれらの...
人工知能が人々の日常生活においてますます重要になるにつれ、行動マーケティングも成長しています。人々は...