XCode で CreateML 開発者ツールを使用して、トレーニング済みの「画像分類」モデルを作成しました。ユーザーの顔を認識するために使用したいと考えています。
私は実際にモデルを評価しており、モデルが実際に物事を見たいと思っており、Label1 を非常に好んでいることがわかりますが、見るべきもののほとんどは 3 つのラベルの 1 つではありません (したがって、"他の")。
私はいくつかのラベルを定義しています:
- ラベル1 600枚の写真
- Label2 200枚の写真
- Label3 200枚の写真
- 「その他」100枚
「画像分類」モデルは常にラベルの 1 つを報告するように設定されていますか?
** オブジェクト検出という別のタイプのモデルが必要ですか?"
特定のラベルの誤検知を減らすには、どこから始めればよいですか? 「その他」の例を 1k ~ 2k ほど用意する必要がありますか?
これが私のコードの要点です:
let model: VNCoreMLModel
coreMLRequest = VNCoreMLRequest(model: self.model) { [weak self] request, error in
guard let self = self,
let results = request.results as? [VNClassificationObservation],
let topResult = results.first
else {
fatalError("Unexpected results")
}
self.outputRelay.accept(topResult.identifier)
}
coreMLRequest.imageCropAndScaleOption = .scaleFit
// Get the camera image cropped to be analyzed
let requestHandler = VNImageRequestHandler(cvPixelBuffer: croppedFaceImageBuffer, options: [:])
try? requestHandler.perform([self.coreMLRequest])