是否可以使用 CoreML 模型检测对象并找到该对象的测量值?

Posted

技术标签:

【中文标题】是否可以使用 CoreML 模型检测对象并找到该对象的测量值?【英文标题】:Is it possible to detect object using CoreML model and find measurement of that object? 【发布时间】:2019-12-28 19:29:59 【问题描述】:

我想使用 CoreML 和 ARKit 检测门、窗等对象类别,并且我想找到门的测量值(例如高度、宽度和面积)。

如何检测对象并在该对象上添加一些叠加形状,以便找到该对象的真实位置和测量值?

【问题讨论】:

【参考方案1】:

为该任务使用 ARKit 的内置对象检测算法。它简单而强大。

使用 ARKit 的 object detection,您可以检测到您的门(初步扫描或在智能手机上拍摄)。

以下代码可帮助您检测现实世界中的对象(如门)并将 3D 对象或 3D 文本放置在 ARObjectAnchor 位置:

import ARKit

extension ViewController: ARSCNViewDelegate 

    func renderer(_ renderer: SCNSceneRenderer,
                 didAdd node: SCNNode,
                  for anchor: ARAnchor) 

        if let _ = anchor as? ARObjectAnchor 

            let text = SCNText(string: "SIZE OF THIS OBJECT IS...",
                       extrusionDepth: 0.05)

            text.flatness = 0.5
            text.font = UIFont.boldSystemFont(ofSize: 10)

            let textNode = SCNNode(geometry: text)
            textNode.geometry?.firstMaterial?.diffuse.contents = UIColor.white
            textNode.scale = SCNVector3(0.01, 0.01, 0.01) 

            node.addChildNode(textNode)
        
    

并为 Xcode 的文件夹 Resources 提供您现实生活中物体的图像。

class ViewController: UIViewController 

    @IBOutlet var sceneView: ARSCNView!
    let configuration = ARWorldTrackingConfiguration()

    override func viewDidLoad() 
        super.viewDidLoad()

        sceneView.debugOptions = .showFeaturePoints
        sceneView.delegate = self

        guard let dObj = ARReferenceObject.referenceObjects(inGroupNamed: "Resources", 
                                                                  bundle: nil) 
        else 
            fatalError("There's no reference image")
            return
        

        configuration.detectionObjects = dObj
        sceneView.session.run(configuration)
    

    override func viewWillDisappear(_ animated: Bool) 
        super.viewWillDisappear(animated)
        sceneView.session.pause()
    

【讨论】:

以上是关于是否可以使用 CoreML 模型检测对象并找到该对象的测量值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用对象检测模型改进 CoreML 图像分类器模型?

OpenFace CoreML 模型。没有人脸检测

错误! coreML 模型对图像的预测是错误的,对视频是正确的

对象检测 ARKit 与 CoreML

如何将使用 Mask Rcnn 在自定义对象检测上创建蒙版图像的 Keras 模型转换为 CoreML 模型以在 iOS 应用程序中使用?

隐藏 CoreML 模型 (.mlmodel) 文件