diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/Net/MobileNetCombined.swift b/metal/paddle-mobile-demo/paddle-mobile-demo/Net/MobileNetCombined.swift index 1f5468d797c24e3129745f721a992f059c9c4c59..3afe84fde90c343ae0fdf4dc1fef2a1bc1cd8dd8 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/Net/MobileNetCombined.swift +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/Net/MobileNetCombined.swift @@ -23,8 +23,11 @@ public class MobileNetCombined: Net { paramPath = Bundle.main.path(forResource: "combined_mobilenet_params", ofType: nil) ?! "para null" inputDim = Dim.init(inDim: [1, 224, 224, 3]) metalLoadMode = .LoadMetalInCustomMetalLib - metalLibPath = Bundle.main.path(forResource: "paddle-mobile-metallib", ofType: "metallib") + let paddleMobileMetallib = Bundle.main.path(forResource: "paddle-mobile-metallib", ofType: "metallib") + metalLibPath = paddleMobileMetallib useMPS = true + preprocessKernel = ScaleKernel.init(device: device, shape: Shape.init(inWidth: 224, inHeight: 224, inChannel: 3), metalLoadMode: .LoadMetalInCustomMetalLib, metalLibPath: paddleMobileMetallib) + } let labels = PreWords.init(fileName: "vision_synset") diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/Net/YoloNet.swift b/metal/paddle-mobile-demo/paddle-mobile-demo/Net/YoloNet.swift index 3fad441a2e2441766006f1df2a8fd53523be8185..a13b6303ac3c8127761a5449e186d896cbf8925f 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/Net/YoloNet.swift +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/Net/YoloNet.swift @@ -27,6 +27,8 @@ public class YoloNet: Net { metalLibPath = Bundle.main.path(forResource: "paddle-mobile-metallib", ofType: "metallib") useMPS = true paramPrecision = .Float16 + preprocessKernel = ScaleKernel.init(device: device, shape: Shape.init(inWidth: 416, inHeight: 416, inChannel: 3), metalLoadMode: .LoadMetalInCustomMetalLib, metalLibPath: Bundle.main.path(forResource: "paddle-mobile-metallib", ofType: "metallib")) + } override public func resultStr(res: [ResultHolder]) -> String { diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift b/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift index 1aa9d82654047bde999a8c6be44d6dfb845d0c71..53c417e88d64926160a95829498425646c2ba1ad 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift @@ -100,16 +100,15 @@ class ViewController: UIViewController { if self.toPredictTexture == nil { - - // runner.getTexture(inBuffer: buffer!) { [weak self] (texture) in - // self?.toPredictTexture = texture - // } - let beforeDate = Date.init() - runner.getTexture(image: selectImage!.cgImage!) { [weak self] (texture) in - let timeUse = Date.init().timeIntervalSince(beforeDate) - print("get texture time use: \(timeUse)") - self?.toPredictTexture = texture + if modelType == .mobilenet_combined || modelType == .yolo { + self.toPredictTexture = try! MetalHelper.shared.textureLoader.newTexture(cgImage: selectImage!.cgImage!, options: nil) + } else { + runner.getTexture(image: selectImage!.cgImage!) { [weak self] (texture) in + let timeUse = Date.init().timeIntervalSince(beforeDate) + print("get texture time use: \(timeUse)") + self?.toPredictTexture = texture + } } } } else { diff --git a/metal/paddle-mobile/paddle-mobile/Src/Operators/Kernels/Scale.swift b/metal/paddle-mobile/paddle-mobile/Src/Operators/Kernels/Scale.swift index 4a6a9a3ee4b2558fbf2a7442717400ef19c22b33..cab3f3b0db922612f4fc4752ba0c95a554c05ec1 100644 --- a/metal/paddle-mobile/paddle-mobile/Src/Operators/Kernels/Scale.swift +++ b/metal/paddle-mobile/paddle-mobile/Src/Operators/Kernels/Scale.swift @@ -14,8 +14,8 @@ import Foundation -class ScaleKernel: CusomKernel { - init(device: MTLDevice, shape: Shape, metalLoadMode: MetalLoadMode, metalLibPath: String?) { +public class ScaleKernel: CusomKernel { + public init(device: MTLDevice, shape: Shape, metalLoadMode: MetalLoadMode, metalLibPath: String?) { if GlobalConfig.shared.computePrecision == .Float32 { super.init(device: device, inFunctionName: "scale", outputDim: shape, metalLoadModel: metalLoadMode, metalLibPath: metalLibPath) } else if GlobalConfig.shared.computePrecision == .Float16 {