代码之家  ›  专栏  ›  技术社区  ›  mducc

为什么MLKIT中的“检测人脸”会导致内存泄漏?

  •  0
  • mducc  · 技术社区  · 8 年前

    BarCode DetectFace 检测条形码或人脸。但我有一个问题,当我使用内存泄漏 .

    条形码

    override fun onImageAvailable(reader: ImageReader) {
            imageOnFrame = reader.acquireNextImage()
            barcode = BarCode(this@MainActivity, imageOnFrame, getRotation("0"))
            barcode!!.run()
            barcode = null
            imageOnFrame.close()
        }
    

    探测面 ,这会导致内存泄漏:

    override fun onImageAvailable(reader: ImageReader) {
            imageOnFrame = reader.acquireNextImage()
            detectFace = DetectFace(this@MainActivity, imageOnFrame, getRotation("0"))
            detectFace!!.run()
            detectFace = null  
            imageOnFrame.close()
        }
    

    这是课堂 :

    class DetectFace(private val context: Context, private val image: Image, private val rotation: Int) {
    
        private val option = FirebaseVisionFaceDetectorOptions.Builder()
                .setModeType(FirebaseVisionFaceDetectorOptions.ACCURATE_MODE)
                .setLandmarkType(FirebaseVisionFaceDetectorOptions.ALL_LANDMARKS)
                .setClassificationType(FirebaseVisionFaceDetectorOptions.ALL_CLASSIFICATIONS)
                .setTrackingEnabled(true)
                .setMinFaceSize(0.01f)
                .build()
    
        fun run(){
            val image = FirebaseVisionImage.fromMediaImage(this.image, rotation)
            val detector = FirebaseVision.getInstance()
                    .getVisionFaceDetector(option)
    
            detector.detectInImage(image)
                    .addOnSuccessListener {
                        // code ..
                    }
                    .addOnFailureListener{
                        // code ..
                    }
            this.image.close()
        }
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Shiyu    8 年前

    这主要是由于发送到ML-Kit的图像速度太快,不能及时处理,内存占用增加。我们将提供一种在ML工具包中正确处理它的方法。同时,您可以限制发送到ML-Kit的图像。

    例如,ML Kit快速入门示例应用程序在此处执行图像调节: https://github.com/firebase/quickstart-android/blob/master/mlkit/app/src/main/java/com/google/firebase/samples/apps/mlkit/VisionProcessorBase.java#L49