導入 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 ファイルが生成されます。 生成されたモデルを呼び出します。 ディレクトリ自体に呼び出し例がありますが、次のように少し変更されています。
認識効果の写真をいくつか紹介します。 終わり。 |
>>: 中国チームがボストン・ダイナミクスに対抗する四足歩行ロボットを発表
今後 1 年間で AI テクノロジーはどのように進化するのでしょうか。組織が注目すべき主要な AI ...
機械学習開発者として、あなたは多くの機械学習リソースに遭遇したことがあるかもしれません。今日は、オー...
ロボットはコンピューターによってプログラムされた機械です。人間の介入なしに一連の複雑なアクションを自...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
[[389147]]人間は経験を通して学び、成長する能力を持っている学習能力と経験を通じてタスクを...
スマートホームのコンセプトを最も簡単に説明すると、それは家の自然な進化であるということです。スマート...
人工知能は科学技術革命を牽引する重要な原動力として、国家戦略計画や産業界の注目の的となり、オープンソ...
グーグルは6月15日、オンラインショッピングツールに新たな生成AI技術を導入すると発表した。この技術...
GPT-4 のリリースから半年も経たないうちに、GPT-5 がもうすぐ登場するのでしょうか?最近、...
人工知能 (AI)、機械学習 (ML)、ディープニューラルネットワーク (DNN) は、金融業界のビ...
実際、AI はほとんどの人間同士のやり取りに取って代わっています。デジタルアシスタントや AI ベー...
人々は日常生活の中で、見知らぬ人の顔だけでなく、身近な親戚、友人、同僚、有名人の顔など、さまざまな顔...