Я создал новую модель tflite на основе MobilenetV2 . Он хорошо работает без квантования с использованием процессора на iOS. Должен сказать, что команда TensorFlow проделала отличную работу, большое спасибо.
К сожалению, существует проблема с задержкой. Я использую iPhone5s для тестирования моей модели, поэтому у меня есть следующие результаты для CPU:
500 мс для MobilenetV2 с входным изображением 224 * 224.
250-300 мс для MobilenetV2 с входным изображением 160 * 160.
Я использовал следующий модуль 'TensorFlowLite', '~> 1.13.1'
Этого недостаточно Итак, я прочитал документацию TF, связанную с оптимизацией (квантование после обучения). Я полагаю, мне нужно использовать квантование Float16 или UInt8 и делегат GPU (см. https://www.tensorflow.org/lite/performance/post_training_quantization). Я использовал Tensorflow v2.1.0 для обучения и квантования моих моделей.
- Квантование весов Float16 (я использовал модель MobilenetV2 после квантования Float16)
https://github.com/tensorflow/examples/tree/master/lite/examples/image_segmentation/ios
- pod 'TensorFlowLiteSwift', '0.0.1-nightly'
Нет ошибок, но модель не работает
- pod 'TensorFlowLiteSwift', '2.1.0'
2020-05-01 21: 36: 13.578369 + Сегментация TFL 0300 [6367: 330410 ] Инициализированная среда выполнения TensorFlow Lite. 2020-05-01 21: 36: 20.877393 + 0300 Сегментация TFL [6367: 330397] Выполнение буфера команд было прервано из-за ошибки во время выполнения. Вызванная ошибка зависания графического процессора (код IOAF 3)
Полное целочисленное квантование весов и активаций
pod 'TensorFlowLiteGpuExperimental'
Пример кода: https://github.com/makeml-app/MakeML-Nails/tree/master/Segmentation%20Nails
Я использовал модель MobilenetV2 после квантования uint8.
GpuDelegateOptions options;
options.allow_precision_loss = true;
options.wait_type = GpuDelegateOptions::WaitType::kActive;
//delegate = NewGpuDelegate(nullptr);
delegate = NewGpuDelegate(&options);
if (interpreter->ModifyGraphWithDelegate(delegate) != kTfLiteOk)
Сегментация Live [6411: 331887] [DYMTLInitPlatform] инициализация платформы выполнена успешно. Загруженная модель 1, разрешенный репортер. 2 '
Можно ли как-то использовать квантованную модель MObilenetV2 на IOS? Надеюсь, я допустил ошибку :) и это возможно.
С уважением, Дмитрий