Повторная выборка API iOS Vision вызывает противоречивые результаты? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть модель обнаружения объекта, обученная на изображениях цветных изображений 640x480.Модель переносится в CoreML + Swift и работает нормально, когда мы тестируем изображения, полученные в собственном формате разрешения из исходного набора проверки.

при тестировании на свежем наборе изображений / селфи, полученных с более высоким разрешениемкамера на телефоне, результаты очень странные.Обнаружено гораздо больше ограничивающих рамок, и странные области обнаруживаются как объекты интереса.

Мое понимание подсказывает мне, что при повторной выборке изображения в api видения появляются некоторые артефакты, которые могут быть обнаружены для объекта интереса.

Вопрос

  1. Как API видения в iOS выполняет повторную выборку изображений?

  2. На глубокомУчебная сторона: Должны ли пересчитанные изображения и изображения с собственным разрешением давать разные результаты при выводе модели?

1 Ответ

0 голосов
/ 30 мая 2018

Вы предоставили мало или совсем не подробно в своем вопросе, но вот все идеи, которые у меня есть.

Что касается «глубокого обучения», то изменение размера изображения, конечно, повлияет на производительность модели.Тем не менее, размер изображения, который вы описываете, вероятно, достаточно для ваших задач.Тренировать модель в «родном» разрешении для фронтальных камер iOS - плохая идея.Тренировка для достижения лучших результатов займет значительно больше времени (вам также будет трудно получить данные о тренировках, если вы не прошли повышенную выборку).Кроме того, разные устройства iOS имеют разное фронтальное разрешение.В общем, ваша «повторная выборка» составляет отлично - это проблема конверсии.

В iOS есть несколько способов передискретизации и масштабирования изображений.Как вы устанавливаете масштабирование?Применяете ли вы imageCropAndScaleOption к созданному запросу?

let request = VNCoreMLRequest(model: model, completionHandler: { [weak self] request, error in
    self?.processClassifications(for: request, error: error)
})
request.imageCropAndScaleOption = .centerCrop
return request

Как преобразовать модель в coreML?Что-то вроде линий ...

model = coremltools.converters.keras.convert(
        './models/best.h5', 
        input_names=['image'],
        output_names=['output'],
        image_input_names='image',
        image_scale=1/255.0
)

При этом убедитесь, что представление изображения (для ввода) правильно представлено.Вы можете легко проверить, напечатав модель после преобразования.

Вдоль этих линий каналы в обученной модели (RGB) совпадают со всеми оцениваемыми изображениями или, возможно, модель обучена в обратных каналах (BGR) и входными даннымииз AVFoundation в RGB?

Если вы предоставите более подробную информацию о своей модели, о том, что она делает, как вы конвертируете ее в CoreML и как вы ее оцениваете, я могу обновить свой ответ.Но, пожалуйста, сначала обратитесь к вышеуказанному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...