導入 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 ファイルが生成されます。 生成されたモデルを呼び出します。 ディレクトリ自体に呼び出し例がありますが、次のように少し変更されています。
認識効果の写真をいくつか紹介します。 終わり。 |
>>: 中国チームがボストン・ダイナミクスに対抗する四足歩行ロボットを発表
[[253650]]テクノロジー専門家の約 37% は、人工知能 (AI) と関連技術の進歩により、...
タスクの数が増えるにつれて、現在の計算方法を使用して汎用の日常的なロボットを構築するコストは法外なも...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
こんにちは、皆さん。私は Luga です。今日は、人工知能 (AI) エコシステムに関連するテクノロ...
[51CTO.com からのオリジナル記事]人工知能は近年非常に人気の高い技術です。99 歳から歩け...
著者 |ブライト・リャオ「プログラマーから見たChatGPT」の記事では、開発者のChatGPTに対...
一部のネットユーザーが「Crazy Guess the Idiom」ゲームを解読する最新の戦略を明ら...
2月27日、米国の著名な自動運転企業であるAuroraは、ライダーチップ企業OURSを1億ドルで買収...
美団ドローンは、ドローンそのもの以上のものを見せてくれるだけでなく、インターネットがインターネットに...
JD.comは早くも2017年8月に、陝西省の地域をカバーする中国初のドローン空域の承認を取得しまし...