Каковы требования к размеру входного изображения для распознавания лиц CoreML Vision

Я работаю с фреймворком Vision для обнаружения лиц на изображениях. Я не смог найти в документации Apple, каковы требования к входному изображению. Обычно при работе с моделью машинного обучения, особенно с .mlmodel в CoreML, описываются требуемые входные данные. Например Image (Color 112 x 112).

let image: UIImage = someUIImage()    
let handler = VNImageRequestHandler(ciImage: CIImage(cgImage: (image?.cgImage)!))
let faceRequest = VNDetectFaceLandmarksRequest(completionHandler: { (request: VNRequest, error: Error?) in
    guard let observations = request.results as? [VNFaceObservation]
    else {
        print("unexpected result type from VNFaceObservation")
                return
        }
    self.doSomething(with observations: observations)
})

do {
    try handler.perform([faceRequest])
} catch {
    print("Face detection failed: \(error)")
}

person Sanich    schedule 17.09.2019    source источник


Ответы (1)


Это не имеет значения, Vision автоматически позаботится об этом. (Он может использовать или не использовать модель машинного обучения под капотом.)

Вам необходимо убедиться, что все лицо / голова видны на изображении, иначе детектор лиц будет работать не очень хорошо.

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

person Matthijs Hollemans    schedule 17.09.2019
comment
Я получаю изображения из фотопленки. Я думаю, это не будет работать с наименьшим доступным изображением в кэше 32x32, а с другой стороны, полноразмерное изображение также не нужно. Если бы они упоминали рекомендуемый или минимальный размер, я бы знал, что взять. Теперь я просто догадываюсь. - person Sanich; 17.09.2019
comment
Использую на снимках 1080х1920 с камеры без проблем. Я уверен, что Vision внутренне изменяет размер изображений до любого размера, который предпочитает. - person Matthijs Hollemans; 17.09.2019
comment
Это очень важно, если вы хотите обработать все фотографии в фотопленке (10k фотографий). Я получаю 224x224 с .fasFormat режимом доставки. У меня ухудшается качество 90x120, и это вход для VNRequest, и он хорошо работает. Но это вроде догадки - person Sanich; 17.09.2019
comment
Я предполагаю, что вы можете установить точку останова, а затем использовать отладчик для пошагового выполнения действий Vision. ;-) Где-то там обязательно должен быть звонок vImageScale_xxx(). - person Matthijs Hollemans; 18.09.2019
comment
Я прочитал их статью с описанием того, что они делают. В первых слоях используется конвульсия, что означает, что вы можете указать любой размер ввода. Может быть, это своего рода новая концепция, согласно которой чем лучше ввод, тем лучше (охват) вывод. И не то, как обычно модели обучаются с фиксированным размером входных данных. - person Sanich; 18.09.2019