#SSD(物体検出)をTensorFlow2.0 でやってみた
##SSDをいつも使っている環境(TensorFlow 2.0)で動かしてみたかったが以外に苦労した。
###環境
- Windows 10
- Python 3.8
- tensorflow 2.3.0
- keras 2.4.3
- Core i5
- Spyde 5
##SSDについて
沢山良い記事が書かれているので参考にしてください。
元コード
動かしてみたコードの元は
TensorFlow 2.0への書き換え
参考記事のままに書き換え。
keras 2.0への対応はrykov8/ssd_keras https://github.com/rykov8/ssd_kerasのPull requests API updated to Keras2 も参考になります。
動かしてみた
NoteBook を使わないので SSD.ipynb の内容をエディタで.pyに編集して実行。
デモを動かすだけなのですぐに動くものだと思っていたがエラー。
TypeError: 'NoneType' object is not subscriptable
どうもssd.pyからPriorBox()を呼び出したときに問題がありそうだったので、
class PriorBox(Layer):
...
@tf.function
def call(self, x, mask=None):
input_shape = x._shape_val
@tf.functionをつけグラフモードにした。
無事にデモが動きました。