stMind

about Tech, Computer vision and Machine learning

TF OD APIにおいてどのモデルを使うのかは、どのように判断されるのか?

tl;dr

pipeline configに含まれるmodelのアーキテクチャ名から判断され、アーキテクチャに応じたbuildメソッドが使われる。 例えば、以下はfaster_rcnn_resnet50_v1_640x640_coco17_tpu-8のpipeline.configファイル。 f:id:satojkovic:20211010212331p:plain

具体的なところ

configはobject_detection/protos/pipeline.protoに定義され、model以外に5つのフィールドがある。

f:id:satojkovic:20211010211715p:plain

また、modelは対応している有効なmeta architectureとしてfaster_rcnn、ssd、center_netの三種類がobject_detection/protos/model.protoに定義されている。 f:id:satojkovic:20211010212524p:plain

そして、model_main_tf2.pyを使って、引数のpipeline_config_pathで使いたいモデルのpipeline configファイルを指定して実行すると、model_lib_v2.pyのeval_continuously()からmodel_builder.pyのbuild()が呼ばれて、アーキテクチャ名に応じたbuildメソッドを実行するようになっている。 f:id:satojkovic:20211010213240p:plain