学習済みモデルのダウンロード
openimagev4と呼ばれるデータセットで訓練したSSD(Single Shot MultiBox Detector)というモデルを使ってみました
openimagev4
600種類のクラスはここから確認できます
https://storage.googleapis.com/openimages/2018_04/class-descriptions-boxable.csv
実際に使ってみる
https://tfhub.dev/google/openimages_v4/ssd/mobilenet_v2/1
圧縮されたフォルダを展開してロードするだけです。
modelpath = "./openimages_v4_ssd_mobilenet_v2_1" #"./faster_rcnn"
model = hub.load(modelpath).signatures['default']
入力はTensorです
def load_img(path):
img = tf.io.read_file(path)
img = tf.image.decode_jpeg(img, channels=3)
return img
localpath = os.path.join(dpath, fname)
image = Image.open( localpath )
tfimg = load_img( localpath )
converted_img = tf.image.convert_image_dtype(tfimg, tf.float32)[ tf.newaxis, ... ]
result = model(converted_img)
検出結果
速度と精度
速度だと
yolo > ssd > faster-rcnn
精度は
faster-rcnn > ssd > yolo
という認識です
480x270pxの画像を使って、faster-rcnnという精度重視のモデルと比較してみました
モデル/速度平均値(秒/枚) | Geforce RTX 2080 Ti(7.5) |
---|---|
ssd | 0.2 |
faster-rcnn | 2 |
標準偏差は0.001程度でほぼ無視できます
時間あれば適合率も出しますね
残念なとこ
転移学習はできないみたいです。
https://github.com/pythonlessons/TensorFlow-2.x-YOLOv3
そーす