如何解决无法从请求VNCoreMLRequest的结果中获取boundingBox
我正在尝试将Vision与我训练过的自定义模型一起使用,但是我没有找到一种方法来获得Vision在框架中检测到它的边界框。
模型:我已经使用CreateML训练了模型,它可以检测2个特定项目。 我在CreateML中用各种图像测试了模型,它可以正确检测到这2个项目,并在它们周围放置一个框。因此,Vision也不能给我边框吗?
func prepare() {
do {
let vnModel = try VNCoreMLModel(for: modelFile.model)
let coreMlRequest = VNCoreMLRequest(model: vnModel,completionHandler: { (request,error) in
guard
let results = request.results
as? [VNClassificationObservation] // is this the right cast?
else { return }
// how do I get the bounding box from the results?
})
vnRequests = [coreMlRequest]
}
catch {
print(error)
}
}
func run(arFrame: ARFrame) {
do {
let requestHandler = VNImageRequestHandler(cvPixelBuffer: arFrame.capturedImage,options: [:])
try requestHandler.perform(self.vnRequests)
}
catch {
print(error)
}
}
解决方法
您真的训练了物体检测模型吗?还是分类模型?
您只会获得对象检测模型的边界框,而不会得到分类器的边界框。
假设您训练了一个物体检测器,则正确的类别是Song Document:
{
id: ID,eventType: String,numberOfLikes: Integer,sections: String[]
}
,而不是eventType: {
songs: [{
songId: ID,sections: String[]
}]
}
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。