Coremltools: Как вычесть среднее значение изображения из входного изображения? - PullRequest
0 голосов
/ 29 октября 2018

Я использую swift для запуска моей модели, которая конвертирована из keras, к сожалению, результат очень плохой при работе на swift, поэтому я думаю, что возможно что-то запустится с моей предварительной обработкой. Затем я обнаружил, что coremltools может масштабировать и вычитать входные данные с определенным значением, таким как 255 и -1, в следующем коде:

coremltools.converters.keras.convert(model,image_scale=255,red_bias=-1,green_bias=-1,blue_bias=-1) 

Однако, если мне нужно вычесть среднее значение входного изображения из изображения и выполнить нормализацию, что мне делать? Должен ли я использовать coremltools или swift?

1 Ответ

0 голосов
/ 29 октября 2018

Я не уверен, есть ли простой способ сделать это, но модели Core ML поддерживают операцию NeuralNetworkMeanImage, которая вычитает среднее изображение из входного изображения. Это часть "NeuralNetworkPreprocessing" вашей модели.

Когда вы используете image_scale, red_bias и т. Д., NeuralNetworkPreprocessing использует операцию NeuralNetworkImageScaler. Но вместо этого вы хотите использовать операцию NeuralNetworkMeanImage.

Не похоже, что coremltools.converters.keras.convert() позволяет вам выбрать эту среднюю операцию изображения. Таким образом, решение было бы написать новый скрипт, который загружает вашу преобразованную mlmodel и заменяет операцию предварительной обработки NeuralNetworkMeanImage. Это требует знакомства с форматом protobuf. * ​​1008 *

...