Использование моделей GluonCV в TensorFlow (Lite) - PullRequest
0 голосов
/ 05 мая 2020

Я работаю над развертыванием моделей на встроенных устройствах, сравнивая производительность и тому подобное. Это стажировка, поэтому я очень ограничен во времени и не могу go повторно внедрять / переобучать модели, но я должен использовать то, что доступно (я действительно спросил об этом прямо у своего руководителя). Поскольку TorchScript не так развит, как TF Lite, по крайней мере, из того, что я собрал, я выберу последний. Это хорошо работает с моделями до 2018 года, но многие модели SotA, такие как ResNeSt, имеют код только в PyTorch. GluonCV, однако, похоже, предоставляет хороший выбор моделей в своем зоопарке и основан на TensorFlow, поэтому я подумал, что будет способ экспортировать их в SavedModel, Keras .h5 или что-то еще, но я не нашел ни одного после много поисков. Я нашел MMdnn , но попытка его на JSON экспортированных моделях не удалась во время преобразования в ИК (я прикрепляю вывод внизу, кажется, что M XNet JSON и Gluon JSON являются не тот же формат).

Кто-нибудь еще работал с экспортом моделей глюонов в дикую природу? Как это go?

Спасибо!

Вывод mmtoir -f mxnet -n resnest200-symbol.json -d resnest200 --inputShape 3,257,257:

/home/kmfrick/Gluon_Tinkering/venv/lib/python3.8/site-packages/mxnet/module/base_module.py:55: UserWarning: You created Module with Module(..., label_names=['softmax_label']) but input with name 'softmax_label' is not found in symbol.list_arguments(). Did you mean one of:
    data
    _defaultpreprocess1_init_mean
    _defaultpreprocess1_init_scale
  warnings.warn(msg)
Warning: MXNet Parser has not supported operator null with name data.
Warning: convert the null operator with name [data] into input layer.
Warning: MXNet Parser has not supported operator null with name _defaultpreprocess1_init_scale.
Warning: convert the null operator with name [_defaultpreprocess1_init_scale] into input layer.
terminate called after throwing an instance of 'dmlc::Error'
  what():  [09:24:49] src/c_api/c_api_symbolic.cc:540: InferShapeKeyword argument name data not found.
Candidate arguments:
    [0]_defaultpreprocess1_init_scale

Stack trace:
  [bt] (0) /home/kmfrick/Gluon_Tinkering/venv/lib/python3.8/site-packages/mxnet/libmxnet.so(+0x307d3b) [0x7f0127eb9d3b]
  [bt] (1) /home/kmfrick/Gluon_Tinkering/venv/lib/python3.8/site-packages/mxnet/libmxnet.so(+0x33a3755) [0x7f012af55755]

1 Ответ

0 голосов
/ 16 мая 2020

Gluoncv - отличный инструментарий для компьютерного зрения на основе M XNet! Несколько вариантов развертывания моделей gluoncv во встроенных средах выполнения:

  1. Вы можете использовать ONNX для преобразования моделей в другие среды выполнения, например CoreML для iOS или NNAPI для Android
  2. Вы можете использовать TVM
  3. Вы можете использовать SageMaker Neo + DLR runtime , вероятно, самое простое решение. git включает примеры для Android.

Имейте в виду, что компиляция и переносимость из одного фреймворка в другой зависит от покрытия оператора, это может не работать для exoti c или совсем недавних моделей.

...