From 38acdb9d958a6fce98260d20551eda20ba00da44 Mon Sep 17 00:00:00 2001 From: liuruilong Date: Fri, 21 Sep 2018 17:56:21 +0800 Subject: [PATCH] update --- .../project.pbxproj | 1030 ++--------------- .../Base.lproj/Main.storyboard | 4 +- .../MultiPredictViewController.swift | 6 - .../VideoCapture/VideoCapture.swift | 3 + .../paddle-mobile-demo/ViewController.swift | 31 +- .../paddle-mobile.xcodeproj/project.pbxproj | 32 +- .../xcschemes/paddle-mobile.xcscheme | 2 +- .../CPU/{PaddleMobile.h => PaddleMobileCPU.h} | 0 .../paddle-mobile/MobilenetSSD_AR.swift | 18 +- .../Operators/Base/OpCreator.swift | 4 +- .../Operators/Base/Operator.swift | 8 +- .../Operators/ConvAddAddPreluOp.swift | 108 ++ .../Operators/ElementwiseAddPreluOp.swift | 119 ++ .../Kernels/ConvAddAddPreluKernel.swift | 150 +++ .../Kernels/ElementwiseAddPreluKernel.swift | 79 ++ .../Kernels/metal/ConvAddMetal.metal | 58 +- .../Kernels/metal/ConvAddPrelu.inc.metal | 14 +- .../metal/ElementwiseAddPreluKernel.inc.metal | 90 ++ .../metal/ElementwiseAddPreluKernel.metal | 75 ++ .../Program/ProgramOptimize.swift | 15 +- .../paddle-mobile/framework/Executor.swift | 4 +- .../paddle-mobile/paddle_mobile.h | 2 +- 22 files changed, 823 insertions(+), 1029 deletions(-) rename metal/paddle-mobile/paddle-mobile/CPU/{PaddleMobile.h => PaddleMobileCPU.h} (100%) create mode 100644 metal/paddle-mobile/paddle-mobile/Operators/ConvAddAddPreluOp.swift create mode 100644 metal/paddle-mobile/paddle-mobile/Operators/ElementwiseAddPreluOp.swift create mode 100644 metal/paddle-mobile/paddle-mobile/Operators/Kernels/ConvAddAddPreluKernel.swift create mode 100644 metal/paddle-mobile/paddle-mobile/Operators/Kernels/ElementwiseAddPreluKernel.swift create mode 100644 metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ElementwiseAddPreluKernel.inc.metal create mode 100644 metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ElementwiseAddPreluKernel.metal diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/project.pbxproj b/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/project.pbxproj index 0338e5eee1..d6114880ef 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/project.pbxproj +++ b/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/project.pbxproj @@ -8,226 +8,7 @@ /* Begin PBXBuildFile section */ 30D0ED21F392CFA3885B1002 /* Pods_paddle_mobile_demo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18896810981724F8A0FED62A /* Pods_paddle_mobile_demo.framework */; }; - C2E67D81215248950013F575 /* synset.txt in Resources */ = {isa = PBXBuildFile; fileRef = C2E67C9E215248940013F575 /* synset.txt */; }; - C2E67D82215248950013F575 /* banana.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = C2E67C9F215248940013F575 /* banana.jpeg */; }; - C2E67D83215248950013F575 /* hand.jpg in Resources */ = {isa = PBXBuildFile; fileRef = C2E67CA0215248940013F575 /* hand.jpg */; }; - C2E67D84215248950013F575 /* iphone.JPG in Resources */ = {isa = PBXBuildFile; fileRef = C2E67CA1215248940013F575 /* iphone.JPG */; }; - C2E67D85215248950013F575 /* paddle-mobile.png in Resources */ = {isa = PBXBuildFile; fileRef = C2E67CA2215248940013F575 /* paddle-mobile.png */; }; C2E67E5E21524E460013F575 /* LoadPointerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C2E67E5D21524E460013F575 /* LoadPointerViewController.m */; }; - C2E6810C215280A00013F575 /* params in Resources */ = {isa = PBXBuildFile; fileRef = C2E680302152809F0013F575 /* params */; }; - C2E6810D215280A00013F575 /* model in Resources */ = {isa = PBXBuildFile; fileRef = C2E680312152809F0013F575 /* model */; }; - C2E6810E215280A00013F575 /* genet_params in Resources */ = {isa = PBXBuildFile; fileRef = C2E680332152809F0013F575 /* genet_params */; }; - C2E6810F215280A00013F575 /* genet_model in Resources */ = {isa = PBXBuildFile; fileRef = C2E680342152809F0013F575 /* genet_model */; }; - C2E68110215280A00013F575 /* ssd_hand_params in Resources */ = {isa = PBXBuildFile; fileRef = C2E680362152809F0013F575 /* ssd_hand_params */; }; - C2E68111215280A00013F575 /* ssd_hand_model in Resources */ = {isa = PBXBuildFile; fileRef = C2E680372152809F0013F575 /* ssd_hand_model */; }; - C2E68112215280A00013F575 /* mobilenet in Resources */ = {isa = PBXBuildFile; fileRef = C2E680392152809F0013F575 /* mobilenet */; }; - C2E68113215280A00013F575 /* params in Resources */ = {isa = PBXBuildFile; fileRef = C2E6803A2152809F0013F575 /* params */; }; - C2E68114215280A00013F575 /* model in Resources */ = {isa = PBXBuildFile; fileRef = C2E6803B2152809F0013F575 /* model */; }; - C2E68115215280A00013F575 /* yolo in Resources */ = {isa = PBXBuildFile; fileRef = C2E6803C2152809F0013F575 /* yolo */; }; - C2E68116215280A00013F575 /* params in Resources */ = {isa = PBXBuildFile; fileRef = C2E6803E2152809F0013F575 /* params */; }; - C2E68117215280A00013F575 /* model in Resources */ = {isa = PBXBuildFile; fileRef = C2E6803F2152809F0013F575 /* model */; }; - C2E68118215280A00013F575 /* batch_norm_7.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680412152809F0013F575 /* batch_norm_7.w_0 */; }; - C2E68119215280A00013F575 /* batch_norm_26.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680422152809F0013F575 /* batch_norm_26.b_0 */; }; - C2E6811A215280A00013F575 /* batch_norm_32.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680432152809F0013F575 /* batch_norm_32.b_0 */; }; - C2E6811B215280A00013F575 /* conv2d_16.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680442152809F0013F575 /* conv2d_16.w_0 */; }; - C2E6811C215280A00013F575 /* batch_norm_15.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680452152809F0013F575 /* batch_norm_15.w_2 */; }; - C2E6811D215280A00013F575 /* batch_norm_29.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680462152809F0013F575 /* batch_norm_29.w_2 */; }; - C2E6811E215280A00013F575 /* batch_norm_4.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680472152809F0013F575 /* batch_norm_4.w_1 */; }; - C2E6811F215280A00013F575 /* batch_norm_5.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680482152809F0013F575 /* batch_norm_5.w_1 */; }; - C2E68120215280A00013F575 /* batch_norm_28.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680492152809F0013F575 /* batch_norm_28.w_2 */; }; - C2E68121215280A00013F575 /* batch_norm_14.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6804A2152809F0013F575 /* batch_norm_14.w_2 */; }; - C2E68122215280A00013F575 /* conv2d_17.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6804B2152809F0013F575 /* conv2d_17.w_0 */; }; - C2E68123215280A00013F575 /* batch_norm_33.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6804C2152809F0013F575 /* batch_norm_33.b_0 */; }; - C2E68124215280A00013F575 /* batch_norm_27.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6804D2152809F0013F575 /* batch_norm_27.b_0 */; }; - C2E68125215280A00013F575 /* batch_norm_6.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6804E2152809F0013F575 /* batch_norm_6.w_0 */; }; - C2E68126215280A00013F575 /* batch_norm_4.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6804F2152809F0013F575 /* batch_norm_4.w_0 */; }; - C2E68127215280A00013F575 /* depthwise_conv2d_9.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680502152809F0013F575 /* depthwise_conv2d_9.w_0 */; }; - C2E68128215280A00013F575 /* batch_norm_31.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680512152809F0013F575 /* batch_norm_31.b_0 */; }; - C2E68129215280A00013F575 /* conv2d_29.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680522152809F0013F575 /* conv2d_29.w_0 */; }; - C2E6812A215280A00013F575 /* batch_norm_25.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680532152809F0013F575 /* batch_norm_25.b_0 */; }; - C2E6812B215280A00013F575 /* conv2d_15.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680542152809F0013F575 /* conv2d_15.w_0 */; }; - C2E6812C215280A00013F575 /* batch_norm_19.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680552152809F0013F575 /* batch_norm_19.b_0 */; }; - C2E6812D215280A00013F575 /* batch_norm_16.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680562152809F0013F575 /* batch_norm_16.w_2 */; }; - C2E6812E215280A00013F575 /* __model__ in Resources */ = {isa = PBXBuildFile; fileRef = C2E680572152809F0013F575 /* __model__ */; }; - C2E6812F215280A00013F575 /* batch_norm_7.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680582152809F0013F575 /* batch_norm_7.w_1 */; }; - C2E68130215280A00013F575 /* batch_norm_6.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680592152809F0013F575 /* batch_norm_6.w_1 */; }; - C2E68131215280A00013F575 /* batch_norm_17.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6805A2152809F0013F575 /* batch_norm_17.w_2 */; }; - C2E68132215280A00013F575 /* conv2d_14.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6805B2152809F0013F575 /* conv2d_14.w_0 */; }; - C2E68133215280A00013F575 /* batch_norm_18.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6805C2152809F0013F575 /* batch_norm_18.b_0 */; }; - C2E68134215280A00013F575 /* conv2d_28.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6805D2152809F0013F575 /* conv2d_28.w_0 */; }; - C2E68135215280A00013F575 /* batch_norm_24.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6805E2152809F0013F575 /* batch_norm_24.b_0 */; }; - C2E68136215280A00013F575 /* batch_norm_30.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6805F2152809F0013F575 /* batch_norm_30.b_0 */; }; - C2E68137215280A00013F575 /* depthwise_conv2d_8.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680602152809F0013F575 /* depthwise_conv2d_8.w_0 */; }; - C2E68138215280A00013F575 /* batch_norm_5.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680612152809F0013F575 /* batch_norm_5.w_0 */; }; - C2E68139215280A00013F575 /* batch_norm_1.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680622152809F0013F575 /* batch_norm_1.w_0 */; }; - C2E6813A215280A00013F575 /* conv2d_10.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680632152809F0013F575 /* conv2d_10.w_0 */; }; - C2E6813B215280A00013F575 /* batch_norm_34.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680642152809F0013F575 /* batch_norm_34.b_0 */; }; - C2E6813C215280A00013F575 /* batch_norm_20.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680652152809F0013F575 /* batch_norm_20.b_0 */; }; - C2E6813D215280A00013F575 /* batch_norm_13.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680662152809F0013F575 /* batch_norm_13.w_2 */; }; - C2E6813E215280A00013F575 /* batch_norm_2.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680672152809F0013F575 /* batch_norm_2.w_1 */; }; - C2E6813F215280A00013F575 /* batch_norm_3.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680682152809F0013F575 /* batch_norm_3.w_1 */; }; - C2E68140215280A00013F575 /* batch_norm_12.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680692152809F0013F575 /* batch_norm_12.w_2 */; }; - C2E68141215280A00013F575 /* batch_norm_21.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6806A2152809F0013F575 /* batch_norm_21.b_0 */; }; - C2E68142215280A00013F575 /* conv2d_11.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6806B2152809F0013F575 /* conv2d_11.w_0 */; }; - C2E68143215280A00013F575 /* batch_norm_0.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6806C2152809F0013F575 /* batch_norm_0.w_0 */; }; - C2E68144215280A00013F575 /* batch_norm_2.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6806D2152809F0013F575 /* batch_norm_2.w_0 */; }; - C2E68145215280A00013F575 /* conv2d_13.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6806E2152809F0013F575 /* conv2d_13.w_0 */; }; - C2E68146215280A00013F575 /* batch_norm_23.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6806F2152809F0013F575 /* batch_norm_23.b_0 */; }; - C2E68147215280A00013F575 /* batch_norm_10.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680702152809F0013F575 /* batch_norm_10.w_2 */; }; - C2E68148215280A00013F575 /* batch_norm_1.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680712152809F0013F575 /* batch_norm_1.w_1 */; }; - C2E68149215280A00013F575 /* batch_norm_0.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680722152809F0013F575 /* batch_norm_0.w_1 */; }; - C2E6814A215280A00013F575 /* batch_norm_11.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680732152809F0013F575 /* batch_norm_11.w_2 */; }; - C2E6814B215280A00013F575 /* batch_norm_22.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680742152809F0013F575 /* batch_norm_22.b_0 */; }; - C2E6814C215280A00013F575 /* conv2d_12.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680752152809F0013F575 /* conv2d_12.w_0 */; }; - C2E6814D215280A00013F575 /* batch_norm_3.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680762152809F0013F575 /* batch_norm_3.w_0 */; }; - C2E6814E215280A00013F575 /* batch_norm_21.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680772152809F0013F575 /* batch_norm_21.w_1 */; }; - C2E6814F215280A00013F575 /* batch_norm_3.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680782152809F0013F575 /* batch_norm_3.b_0 */; }; - C2E68150215280A00013F575 /* batch_norm_22.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680792152809F0013F575 /* batch_norm_22.w_0 */; }; - C2E68151215280A00013F575 /* batch_norm_23.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6807A2152809F0013F575 /* batch_norm_23.w_0 */; }; - C2E68152215280A00013F575 /* batch_norm_2.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6807B2152809F0013F575 /* batch_norm_2.b_0 */; }; - C2E68153215280A00013F575 /* batch_norm_20.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6807C2152809F0013F575 /* batch_norm_20.w_1 */; }; - C2E68154215280A00013F575 /* batch_norm_34.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6807D2152809F0013F575 /* batch_norm_34.w_1 */; }; - C2E68155215280A00013F575 /* batch_norm_22.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6807E2152809F0013F575 /* batch_norm_22.w_1 */; }; - C2E68156215280A00013F575 /* batch_norm_0.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6807F2152809F0013F575 /* batch_norm_0.b_0 */; }; - C2E68157215280A00013F575 /* batch_norm_21.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680802152809F0013F575 /* batch_norm_21.w_0 */; }; - C2E68158215280A00013F575 /* batch_norm_20.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680812152809F0013F575 /* batch_norm_20.w_0 */; }; - C2E68159215280A00013F575 /* batch_norm_34.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680822152809F0013F575 /* batch_norm_34.w_0 */; }; - C2E6815A215280A00013F575 /* batch_norm_1.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680832152809F0013F575 /* batch_norm_1.b_0 */; }; - C2E6815B215280A00013F575 /* batch_norm_23.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680842152809F0013F575 /* batch_norm_23.w_1 */; }; - C2E6815C215280A00013F575 /* batch_norm_27.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680852152809F0013F575 /* batch_norm_27.w_1 */; }; - C2E6815D215280A00013F575 /* batch_norm_33.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680862152809F0013F575 /* batch_norm_33.w_1 */; }; - C2E6815E215280A00013F575 /* batch_norm_5.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680872152809F0013F575 /* batch_norm_5.b_0 */; }; - C2E6815F215280A00013F575 /* batch_norm_18.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680882152809F0013F575 /* batch_norm_18.w_0 */; }; - C2E68160215280A00013F575 /* batch_norm_30.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680892152809F0013F575 /* batch_norm_30.w_0 */; }; - C2E68161215280A00013F575 /* batch_norm_24.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6808A2152809F0013F575 /* batch_norm_24.w_0 */; }; - C2E68162215280A00013F575 /* conv2d_28.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6808B2152809F0013F575 /* conv2d_28.b_0 */; }; - C2E68163215280A00013F575 /* batch_norm_25.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6808C2152809F0013F575 /* batch_norm_25.w_0 */; }; - C2E68164215280A00013F575 /* conv2d_29.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6808D2152809F0013F575 /* conv2d_29.b_0 */; }; - C2E68165215280A00013F575 /* batch_norm_31.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6808E2152809F0013F575 /* batch_norm_31.w_0 */; }; - C2E68166215280A00013F575 /* batch_norm_19.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6808F2152809F0013F575 /* batch_norm_19.w_0 */; }; - C2E68167215280A00013F575 /* batch_norm_4.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680902152809F0013F575 /* batch_norm_4.b_0 */; }; - C2E68168215280A00013F575 /* batch_norm_32.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680912152809F0013F575 /* batch_norm_32.w_1 */; }; - C2E68169215280A00013F575 /* batch_norm_26.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680922152809F0013F575 /* batch_norm_26.w_1 */; }; - C2E6816A215280A00013F575 /* batch_norm_30.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680932152809F0013F575 /* batch_norm_30.w_1 */; }; - C2E6816B215280A00013F575 /* batch_norm_24.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680942152809F0013F575 /* batch_norm_24.w_1 */; }; - C2E6816C215280A00013F575 /* batch_norm_18.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680952152809F0013F575 /* batch_norm_18.w_1 */; }; - C2E6816D215280A00013F575 /* batch_norm_6.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680962152809F0013F575 /* batch_norm_6.b_0 */; }; - C2E6816E215280A00013F575 /* batch_norm_9.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680972152809F0013F575 /* batch_norm_9.w_2 */; }; - C2E6816F215280A00013F575 /* conv2d_8.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680982152809F0013F575 /* conv2d_8.w_0 */; }; - C2E68170215280A00013F575 /* batch_norm_27.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680992152809F0013F575 /* batch_norm_27.w_0 */; }; - C2E68171215280A00013F575 /* batch_norm_33.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6809A2152809F0013F575 /* batch_norm_33.w_0 */; }; - C2E68172215280A00013F575 /* batch_norm_32.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6809B2152809F0013F575 /* batch_norm_32.w_0 */; }; - C2E68173215280A00013F575 /* conv2d_9.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6809C2152809F0013F575 /* conv2d_9.w_0 */; }; - C2E68174215280A00013F575 /* batch_norm_26.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6809D2152809F0013F575 /* batch_norm_26.w_0 */; }; - C2E68175215280A00013F575 /* batch_norm_8.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6809E2152809F0013F575 /* batch_norm_8.w_2 */; }; - C2E68176215280A00013F575 /* batch_norm_7.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E6809F2152809F0013F575 /* batch_norm_7.b_0 */; }; - C2E68177215280A00013F575 /* batch_norm_19.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A02152809F0013F575 /* batch_norm_19.w_1 */; }; - C2E68178215280A00013F575 /* batch_norm_25.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A12152809F0013F575 /* batch_norm_25.w_1 */; }; - C2E68179215280A00013F575 /* batch_norm_31.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A22152809F0013F575 /* batch_norm_31.w_1 */; }; - C2E6817A215280A00013F575 /* batch_norm_28.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A32152809F0013F575 /* batch_norm_28.w_1 */; }; - C2E6817B215280A00013F575 /* batch_norm_14.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A42152809F0013F575 /* batch_norm_14.w_1 */; }; - C2E6817C215280A00013F575 /* batch_norm_5.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A52152809F0013F575 /* batch_norm_5.w_2 */; }; - C2E6817D215280A00013F575 /* batch_norm_17.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A62152809F0013F575 /* batch_norm_17.w_0 */; }; - C2E6817E215280A00013F575 /* conv2d_33.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A72152809F0013F575 /* conv2d_33.b_0 */; }; - C2E6817F215280A00013F575 /* conv2d_27.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A82152809F0013F575 /* conv2d_27.b_0 */; }; - C2E68180215280A00013F575 /* conv2d_4.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680A92152809F0013F575 /* conv2d_4.w_0 */; }; - C2E68181215280A00013F575 /* conv2d_5.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680AA2152809F0013F575 /* conv2d_5.w_0 */; }; - C2E68182215280A00013F575 /* conv2d_26.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680AB2152809F0013F575 /* conv2d_26.b_0 */; }; - C2E68183215280A00013F575 /* conv2d_32.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680AC2152809F0013F575 /* conv2d_32.b_0 */; }; - C2E68184215280A00013F575 /* batch_norm_16.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680AD2152809F0013F575 /* batch_norm_16.w_0 */; }; - C2E68185215280A00013F575 /* batch_norm_4.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680AE2152809F0013F575 /* batch_norm_4.w_2 */; }; - C2E68186215280A00013F575 /* batch_norm_15.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680AF2152809F0013F575 /* batch_norm_15.w_1 */; }; - C2E68187215280A00013F575 /* batch_norm_29.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B02152809F0013F575 /* batch_norm_29.w_1 */; }; - C2E68188215280A00013F575 /* batch_norm_17.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B12152809F0013F575 /* batch_norm_17.w_1 */; }; - C2E68189215280A00013F575 /* batch_norm_9.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B22152809F0013F575 /* batch_norm_9.b_0 */; }; - C2E6818A215280A00013F575 /* batch_norm_6.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B32152809F0013F575 /* batch_norm_6.w_2 */; }; - C2E6818B215280A00013F575 /* batch_norm_14.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B42152809F0013F575 /* batch_norm_14.w_0 */; }; - C2E6818C215280A00013F575 /* batch_norm_28.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B52152809F0013F575 /* batch_norm_28.w_0 */; }; - C2E6818D215280A00013F575 /* conv2d_24.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B62152809F0013F575 /* conv2d_24.b_0 */; }; - C2E6818E215280A00013F575 /* conv2d_7.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B72152809F0013F575 /* conv2d_7.w_0 */; }; - C2E6818F215280A00013F575 /* conv2d_30.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B82152809F0013F575 /* conv2d_30.b_0 */; }; - C2E68190215280A00013F575 /* conv2d_31.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680B92152809F0013F575 /* conv2d_31.b_0 */; }; - C2E68191215280A00013F575 /* batch_norm_29.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680BA2152809F0013F575 /* batch_norm_29.w_0 */; }; - C2E68192215280A00013F575 /* conv2d_6.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680BB2152809F0013F575 /* conv2d_6.w_0 */; }; - C2E68193215280A00013F575 /* conv2d_25.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680BC2152809F0013F575 /* conv2d_25.b_0 */; }; - C2E68194215280A00013F575 /* batch_norm_15.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680BD2152809F0013F575 /* batch_norm_15.w_0 */; }; - C2E68195215280A00013F575 /* batch_norm_7.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680BE2152809F0013F575 /* batch_norm_7.w_2 */; }; - C2E68196215280A00013F575 /* batch_norm_8.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680BF2152809F0013F575 /* batch_norm_8.b_0 */; }; - C2E68197215280A00013F575 /* batch_norm_16.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C02152809F0013F575 /* batch_norm_16.w_1 */; }; - C2E68198215280A00013F575 /* batch_norm_12.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C12152809F0013F575 /* batch_norm_12.w_1 */; }; - C2E68199215280A00013F575 /* batch_norm_3.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C22152809F0013F575 /* batch_norm_3.w_2 */; }; - C2E6819A215280A00013F575 /* conv2d_2.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C32152809F0013F575 /* conv2d_2.w_0 */; }; - C2E6819B215280A00013F575 /* batch_norm_11.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C42152809F0013F575 /* batch_norm_11.w_0 */; }; - C2E6819C215280A00013F575 /* batch_norm_10.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C52152809F0013F575 /* batch_norm_10.w_0 */; }; - C2E6819D215280A00013F575 /* conv2d_3.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C62152809F0013F575 /* conv2d_3.w_0 */; }; - C2E6819E215280A00013F575 /* batch_norm_2.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C72152809F0013F575 /* batch_norm_2.w_2 */; }; - C2E6819F215280A00013F575 /* depthwise_conv2d_12.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C82152809F0013F575 /* depthwise_conv2d_12.w_0 */; }; - C2E681A0215280A00013F575 /* batch_norm_13.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680C92152809F0013F575 /* batch_norm_13.w_1 */; }; - C2E681A1215280A00013F575 /* batch_norm_11.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680CA2152809F0013F575 /* batch_norm_11.w_1 */; }; - C2E681A2215280A00013F575 /* depthwise_conv2d_10.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680CB2152809F0013F575 /* depthwise_conv2d_10.w_0 */; }; - C2E681A3215280A00013F575 /* batch_norm_0.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680CC2152809F0013F575 /* batch_norm_0.w_2 */; }; - C2E681A4215280A00013F575 /* conv2d_22.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680CD2152809F0013F575 /* conv2d_22.b_0 */; }; - C2E681A5215280A00013F575 /* conv2d_1.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680CE2152809F0013F575 /* conv2d_1.w_0 */; }; - C2E681A6215280A00013F575 /* batch_norm_12.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680CF2152809F0013F575 /* batch_norm_12.w_0 */; }; - C2E681A7215280A00013F575 /* batch_norm_13.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D02152809F0013F575 /* batch_norm_13.w_0 */; }; - C2E681A8215280A00013F575 /* conv2d_0.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D12152809F0013F575 /* conv2d_0.w_0 */; }; - C2E681A9215280A00013F575 /* conv2d_23.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D22152809F0013F575 /* conv2d_23.b_0 */; }; - C2E681AA215280A00013F575 /* batch_norm_1.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D32152809F0013F575 /* batch_norm_1.w_2 */; }; - C2E681AB215280A00013F575 /* batch_norm_10.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D42152809F0013F575 /* batch_norm_10.w_1 */; }; - C2E681AC215280A00013F575 /* depthwise_conv2d_11.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D52152809F0013F575 /* depthwise_conv2d_11.w_0 */; }; - C2E681AD215280A00013F575 /* depthwise_conv2d_3.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D62152809F0013F575 /* depthwise_conv2d_3.w_0 */; }; - C2E681AE215280A00013F575 /* batch_norm_13.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D72152809F0013F575 /* batch_norm_13.b_0 */; }; - C2E681AF215280A00013F575 /* conv2d_23.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D82152809F0013F575 /* conv2d_23.w_0 */; }; - C2E681B0215280A00013F575 /* batch_norm_20.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680D92152809F0013F575 /* batch_norm_20.w_2 */; }; - C2E681B1215280A00013F575 /* batch_norm_34.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680DA2152809F0013F575 /* batch_norm_34.w_2 */; }; - C2E681B2215280A00013F575 /* batch_norm_21.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680DB2152809F0013F575 /* batch_norm_21.w_2 */; }; - C2E681B3215280A00013F575 /* conv2d_22.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680DC2152809F0013F575 /* conv2d_22.w_0 */; }; - C2E681B4215280A00013F575 /* batch_norm_12.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680DD2152809F0013F575 /* batch_norm_12.b_0 */; }; - C2E681B5215280A00013F575 /* depthwise_conv2d_2.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680DE2152809F0013F575 /* depthwise_conv2d_2.w_0 */; }; - C2E681B6215280A00013F575 /* depthwise_conv2d_0.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680DF2152809F0013F575 /* depthwise_conv2d_0.w_0 */; }; - C2E681B7215280A00013F575 /* batch_norm_10.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E02152809F0013F575 /* batch_norm_10.b_0 */; }; - C2E681B8215280A00013F575 /* conv2d_20.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E12152809F0013F575 /* conv2d_20.w_0 */; }; - C2E681B9215280A00013F575 /* batch_norm_23.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E22152809F0013F575 /* batch_norm_23.w_2 */; }; - C2E681BA215280A00013F575 /* batch_norm_22.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E32152809F0013F575 /* batch_norm_22.w_2 */; }; - C2E681BB215280A00013F575 /* conv2d_21.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E42152809F0013F575 /* conv2d_21.w_0 */; }; - C2E681BC215280A00013F575 /* batch_norm_11.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E52152809F0013F575 /* batch_norm_11.b_0 */; }; - C2E681BD215280A00013F575 /* depthwise_conv2d_1.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E62152809F0013F575 /* depthwise_conv2d_1.w_0 */; }; - C2E681BE215280A00013F575 /* depthwise_conv2d_5.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E72152809F0013F575 /* depthwise_conv2d_5.w_0 */; }; - C2E681BF215280A00013F575 /* batch_norm_8.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E82152809F0013F575 /* batch_norm_8.w_0 */; }; - C2E681C0215280A00013F575 /* conv2d_25.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680E92152809F0013F575 /* conv2d_25.w_0 */; }; - C2E681C1215280A00013F575 /* batch_norm_29.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680EA2152809F0013F575 /* batch_norm_29.b_0 */; }; - C2E681C2215280A00013F575 /* conv2d_31.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680EB215280A00013F575 /* conv2d_31.w_0 */; }; - C2E681C3215280A00013F575 /* conv2d_19.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680EC215280A00013F575 /* conv2d_19.w_0 */; }; - C2E681C4215280A00013F575 /* batch_norm_15.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680ED215280A00013F575 /* batch_norm_15.b_0 */; }; - C2E681C5215280A00013F575 /* batch_norm_32.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680EE215280A00013F575 /* batch_norm_32.w_2 */; }; - C2E681C6215280A00013F575 /* batch_norm_26.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680EF215280A00013F575 /* batch_norm_26.w_2 */; }; - C2E681C7215280A00013F575 /* batch_norm_27.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F0215280A00013F575 /* batch_norm_27.w_2 */; }; - C2E681C8215280A00013F575 /* batch_norm_33.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F1215280A00013F575 /* batch_norm_33.w_2 */; }; - C2E681C9215280A00013F575 /* conv2d_18.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F2215280A00013F575 /* conv2d_18.w_0 */; }; - C2E681CA215280A00013F575 /* batch_norm_14.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F3215280A00013F575 /* batch_norm_14.b_0 */; }; - C2E681CB215280A00013F575 /* conv2d_30.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F4215280A00013F575 /* conv2d_30.w_0 */; }; - C2E681CC215280A00013F575 /* conv2d_24.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F5215280A00013F575 /* conv2d_24.w_0 */; }; - C2E681CD215280A00013F575 /* batch_norm_28.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F6215280A00013F575 /* batch_norm_28.b_0 */; }; - C2E681CE215280A00013F575 /* batch_norm_9.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F7215280A00013F575 /* batch_norm_9.w_0 */; }; - C2E681CF215280A00013F575 /* depthwise_conv2d_4.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F8215280A00013F575 /* depthwise_conv2d_4.w_0 */; }; - C2E681D0215280A00013F575 /* depthwise_conv2d_6.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680F9215280A00013F575 /* depthwise_conv2d_6.w_0 */; }; - C2E681D1215280A00013F575 /* conv2d_32.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680FA215280A00013F575 /* conv2d_32.w_0 */; }; - C2E681D2215280A00013F575 /* conv2d_26.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680FB215280A00013F575 /* conv2d_26.w_0 */; }; - C2E681D3215280A00013F575 /* batch_norm_16.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680FC215280A00013F575 /* batch_norm_16.b_0 */; }; - C2E681D4215280A00013F575 /* batch_norm_19.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680FD215280A00013F575 /* batch_norm_19.w_2 */; }; - C2E681D5215280A00013F575 /* batch_norm_25.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680FE215280A00013F575 /* batch_norm_25.w_2 */; }; - C2E681D6215280A00013F575 /* batch_norm_31.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E680FF215280A00013F575 /* batch_norm_31.w_2 */; }; - C2E681D7215280A00013F575 /* batch_norm_8.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68100215280A00013F575 /* batch_norm_8.w_1 */; }; - C2E681D8215280A00013F575 /* batch_norm_9.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68101215280A00013F575 /* batch_norm_9.w_1 */; }; - C2E681D9215280A00013F575 /* batch_norm_30.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68102215280A00013F575 /* batch_norm_30.w_2 */; }; - C2E681DA215280A00013F575 /* batch_norm_24.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68103215280A00013F575 /* batch_norm_24.w_2 */; }; - C2E681DB215280A00013F575 /* batch_norm_18.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68104215280A00013F575 /* batch_norm_18.w_2 */; }; - C2E681DC215280A00013F575 /* batch_norm_17.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68105215280A00013F575 /* batch_norm_17.b_0 */; }; - C2E681DD215280A00013F575 /* conv2d_27.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68106215280A00013F575 /* conv2d_27.w_0 */; }; - C2E681DE215280A00013F575 /* conv2d_33.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68107215280A00013F575 /* conv2d_33.w_0 */; }; - C2E681DF215280A00013F575 /* depthwise_conv2d_7.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = C2E68108215280A00013F575 /* depthwise_conv2d_7.w_0 */; }; - C2E681E0215280A00013F575 /* ar_model in Resources */ = {isa = PBXBuildFile; fileRef = C2E6810A215280A00013F575 /* ar_model */; }; - C2E681E1215280A00013F575 /* ar_params in Resources */ = {isa = PBXBuildFile; fileRef = C2E6810B215280A00013F575 /* ar_params */; }; FC013928210204A3008100E3 /* PreProcessKernel.metal in Sources */ = {isa = PBXBuildFile; fileRef = FC013927210204A3008100E3 /* PreProcessKernel.metal */; }; FC039B8220E11C550081E9F8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039B8120E11C550081E9F8 /* AppDelegate.swift */; }; FC039B8420E11C550081E9F8 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039B8320E11C550081E9F8 /* ViewController.swift */; }; @@ -240,6 +21,16 @@ FCEBEC2C20E1391F00C0B14D /* paddle_mobile.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FCEBEC2B20E1391F00C0B14D /* paddle_mobile.framework */; }; FCEBEC2D20E1391F00C0B14D /* paddle_mobile.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FCEBEC2B20E1391F00C0B14D /* paddle_mobile.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; FCF437E8214B6DDB00943429 /* MultiPredictViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCF437E7214B6DDB00943429 /* MultiPredictViewController.swift */; }; + FCFE9B692152858600DECA15 /* hand.jpg.zip in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B632152858600DECA15 /* hand.jpg.zip */; }; + FCFE9B6A2152858600DECA15 /* synset.txt in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B642152858600DECA15 /* synset.txt */; }; + FCFE9B6B2152858600DECA15 /* banana.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B652152858600DECA15 /* banana.jpeg */; }; + FCFE9B6C2152858600DECA15 /* hand.jpg in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B662152858600DECA15 /* hand.jpg */; }; + FCFE9B6D2152858600DECA15 /* iphone.JPG in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B672152858600DECA15 /* iphone.JPG */; }; + FCFE9B6E2152858600DECA15 /* paddle-mobile.png in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B682152858600DECA15 /* paddle-mobile.png */; }; + FCFE9C512152859600DECA15 /* genet_params in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B752152859500DECA15 /* genet_params */; }; + FCFE9C522152859600DECA15 /* genet_model in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9B762152859500DECA15 /* genet_model */; }; + FCFE9D232152859600DECA15 /* ar_model in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9C4C2152859500DECA15 /* ar_model */; }; + FCFE9D242152859600DECA15 /* ar_params in Resources */ = {isa = PBXBuildFile; fileRef = FCFE9C4D2152859500DECA15 /* ar_params */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -260,227 +51,8 @@ 081C9CF10DB06C58B8B6B039 /* Pods-paddle-mobile-demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-paddle-mobile-demo.release.xcconfig"; path = "../Pods/Target Support Files/Pods-paddle-mobile-demo/Pods-paddle-mobile-demo.release.xcconfig"; sourceTree = ""; }; 18896810981724F8A0FED62A /* Pods_paddle_mobile_demo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_paddle_mobile_demo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 878829884E1A14D7044721D5 /* Pods-paddle-mobile-demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-paddle-mobile-demo.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-paddle-mobile-demo/Pods-paddle-mobile-demo.debug.xcconfig"; sourceTree = ""; }; - C2E67C9E215248940013F575 /* synset.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = synset.txt; sourceTree = ""; }; - C2E67C9F215248940013F575 /* banana.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = banana.jpeg; sourceTree = ""; }; - C2E67CA0215248940013F575 /* hand.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = hand.jpg; sourceTree = ""; }; - C2E67CA1215248940013F575 /* iphone.JPG */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = iphone.JPG; sourceTree = ""; }; - C2E67CA2215248940013F575 /* paddle-mobile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "paddle-mobile.png"; sourceTree = ""; }; C2E67E5C21524E460013F575 /* LoadPointerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoadPointerViewController.h; sourceTree = ""; }; C2E67E5D21524E460013F575 /* LoadPointerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoadPointerViewController.m; sourceTree = ""; }; - C2E680302152809F0013F575 /* params */ = {isa = PBXFileReference; lastKnownFileType = file; path = params; sourceTree = ""; }; - C2E680312152809F0013F575 /* model */ = {isa = PBXFileReference; lastKnownFileType = file; path = model; sourceTree = ""; }; - C2E680332152809F0013F575 /* genet_params */ = {isa = PBXFileReference; lastKnownFileType = file; path = genet_params; sourceTree = ""; }; - C2E680342152809F0013F575 /* genet_model */ = {isa = PBXFileReference; lastKnownFileType = file; path = genet_model; sourceTree = ""; }; - C2E680362152809F0013F575 /* ssd_hand_params */ = {isa = PBXFileReference; lastKnownFileType = file; path = ssd_hand_params; sourceTree = ""; }; - C2E680372152809F0013F575 /* ssd_hand_model */ = {isa = PBXFileReference; lastKnownFileType = file; path = ssd_hand_model; sourceTree = ""; }; - C2E680392152809F0013F575 /* mobilenet */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mobilenet; sourceTree = ""; }; - C2E6803A2152809F0013F575 /* params */ = {isa = PBXFileReference; lastKnownFileType = file; path = params; sourceTree = ""; }; - C2E6803B2152809F0013F575 /* model */ = {isa = PBXFileReference; lastKnownFileType = file; path = model; sourceTree = ""; }; - C2E6803C2152809F0013F575 /* yolo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = yolo; sourceTree = ""; }; - C2E6803E2152809F0013F575 /* params */ = {isa = PBXFileReference; lastKnownFileType = file; path = params; sourceTree = ""; }; - C2E6803F2152809F0013F575 /* model */ = {isa = PBXFileReference; lastKnownFileType = file; path = model; sourceTree = ""; }; - C2E680412152809F0013F575 /* batch_norm_7.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.w_0; sourceTree = ""; }; - C2E680422152809F0013F575 /* batch_norm_26.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.b_0; sourceTree = ""; }; - C2E680432152809F0013F575 /* batch_norm_32.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.b_0; sourceTree = ""; }; - C2E680442152809F0013F575 /* conv2d_16.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_16.w_0; sourceTree = ""; }; - C2E680452152809F0013F575 /* batch_norm_15.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.w_2; sourceTree = ""; }; - C2E680462152809F0013F575 /* batch_norm_29.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.w_2; sourceTree = ""; }; - C2E680472152809F0013F575 /* batch_norm_4.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.w_1; sourceTree = ""; }; - C2E680482152809F0013F575 /* batch_norm_5.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.w_1; sourceTree = ""; }; - C2E680492152809F0013F575 /* batch_norm_28.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.w_2; sourceTree = ""; }; - C2E6804A2152809F0013F575 /* batch_norm_14.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.w_2; sourceTree = ""; }; - C2E6804B2152809F0013F575 /* conv2d_17.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_17.w_0; sourceTree = ""; }; - C2E6804C2152809F0013F575 /* batch_norm_33.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.b_0; sourceTree = ""; }; - C2E6804D2152809F0013F575 /* batch_norm_27.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.b_0; sourceTree = ""; }; - C2E6804E2152809F0013F575 /* batch_norm_6.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.w_0; sourceTree = ""; }; - C2E6804F2152809F0013F575 /* batch_norm_4.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.w_0; sourceTree = ""; }; - C2E680502152809F0013F575 /* depthwise_conv2d_9.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_9.w_0; sourceTree = ""; }; - C2E680512152809F0013F575 /* batch_norm_31.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.b_0; sourceTree = ""; }; - C2E680522152809F0013F575 /* conv2d_29.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_29.w_0; sourceTree = ""; }; - C2E680532152809F0013F575 /* batch_norm_25.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.b_0; sourceTree = ""; }; - C2E680542152809F0013F575 /* conv2d_15.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_15.w_0; sourceTree = ""; }; - C2E680552152809F0013F575 /* batch_norm_19.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.b_0; sourceTree = ""; }; - C2E680562152809F0013F575 /* batch_norm_16.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.w_2; sourceTree = ""; }; - C2E680572152809F0013F575 /* __model__ */ = {isa = PBXFileReference; lastKnownFileType = file; path = __model__; sourceTree = ""; }; - C2E680582152809F0013F575 /* batch_norm_7.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.w_1; sourceTree = ""; }; - C2E680592152809F0013F575 /* batch_norm_6.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.w_1; sourceTree = ""; }; - C2E6805A2152809F0013F575 /* batch_norm_17.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.w_2; sourceTree = ""; }; - C2E6805B2152809F0013F575 /* conv2d_14.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_14.w_0; sourceTree = ""; }; - C2E6805C2152809F0013F575 /* batch_norm_18.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.b_0; sourceTree = ""; }; - C2E6805D2152809F0013F575 /* conv2d_28.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_28.w_0; sourceTree = ""; }; - C2E6805E2152809F0013F575 /* batch_norm_24.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.b_0; sourceTree = ""; }; - C2E6805F2152809F0013F575 /* batch_norm_30.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.b_0; sourceTree = ""; }; - C2E680602152809F0013F575 /* depthwise_conv2d_8.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_8.w_0; sourceTree = ""; }; - C2E680612152809F0013F575 /* batch_norm_5.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.w_0; sourceTree = ""; }; - C2E680622152809F0013F575 /* batch_norm_1.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.w_0; sourceTree = ""; }; - C2E680632152809F0013F575 /* conv2d_10.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_10.w_0; sourceTree = ""; }; - C2E680642152809F0013F575 /* batch_norm_34.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.b_0; sourceTree = ""; }; - C2E680652152809F0013F575 /* batch_norm_20.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.b_0; sourceTree = ""; }; - C2E680662152809F0013F575 /* batch_norm_13.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.w_2; sourceTree = ""; }; - C2E680672152809F0013F575 /* batch_norm_2.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.w_1; sourceTree = ""; }; - C2E680682152809F0013F575 /* batch_norm_3.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.w_1; sourceTree = ""; }; - C2E680692152809F0013F575 /* batch_norm_12.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.w_2; sourceTree = ""; }; - C2E6806A2152809F0013F575 /* batch_norm_21.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.b_0; sourceTree = ""; }; - C2E6806B2152809F0013F575 /* conv2d_11.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_11.w_0; sourceTree = ""; }; - C2E6806C2152809F0013F575 /* batch_norm_0.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.w_0; sourceTree = ""; }; - C2E6806D2152809F0013F575 /* batch_norm_2.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.w_0; sourceTree = ""; }; - C2E6806E2152809F0013F575 /* conv2d_13.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_13.w_0; sourceTree = ""; }; - C2E6806F2152809F0013F575 /* batch_norm_23.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.b_0; sourceTree = ""; }; - C2E680702152809F0013F575 /* batch_norm_10.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.w_2; sourceTree = ""; }; - C2E680712152809F0013F575 /* batch_norm_1.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.w_1; sourceTree = ""; }; - C2E680722152809F0013F575 /* batch_norm_0.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.w_1; sourceTree = ""; }; - C2E680732152809F0013F575 /* batch_norm_11.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.w_2; sourceTree = ""; }; - C2E680742152809F0013F575 /* batch_norm_22.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.b_0; sourceTree = ""; }; - C2E680752152809F0013F575 /* conv2d_12.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_12.w_0; sourceTree = ""; }; - C2E680762152809F0013F575 /* batch_norm_3.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.w_0; sourceTree = ""; }; - C2E680772152809F0013F575 /* batch_norm_21.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.w_1; sourceTree = ""; }; - C2E680782152809F0013F575 /* batch_norm_3.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.b_0; sourceTree = ""; }; - C2E680792152809F0013F575 /* batch_norm_22.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.w_0; sourceTree = ""; }; - C2E6807A2152809F0013F575 /* batch_norm_23.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.w_0; sourceTree = ""; }; - C2E6807B2152809F0013F575 /* batch_norm_2.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.b_0; sourceTree = ""; }; - C2E6807C2152809F0013F575 /* batch_norm_20.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.w_1; sourceTree = ""; }; - C2E6807D2152809F0013F575 /* batch_norm_34.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.w_1; sourceTree = ""; }; - C2E6807E2152809F0013F575 /* batch_norm_22.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.w_1; sourceTree = ""; }; - C2E6807F2152809F0013F575 /* batch_norm_0.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.b_0; sourceTree = ""; }; - C2E680802152809F0013F575 /* batch_norm_21.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.w_0; sourceTree = ""; }; - C2E680812152809F0013F575 /* batch_norm_20.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.w_0; sourceTree = ""; }; - C2E680822152809F0013F575 /* batch_norm_34.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.w_0; sourceTree = ""; }; - C2E680832152809F0013F575 /* batch_norm_1.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.b_0; sourceTree = ""; }; - C2E680842152809F0013F575 /* batch_norm_23.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.w_1; sourceTree = ""; }; - C2E680852152809F0013F575 /* batch_norm_27.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.w_1; sourceTree = ""; }; - C2E680862152809F0013F575 /* batch_norm_33.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.w_1; sourceTree = ""; }; - C2E680872152809F0013F575 /* batch_norm_5.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.b_0; sourceTree = ""; }; - C2E680882152809F0013F575 /* batch_norm_18.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.w_0; sourceTree = ""; }; - C2E680892152809F0013F575 /* batch_norm_30.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.w_0; sourceTree = ""; }; - C2E6808A2152809F0013F575 /* batch_norm_24.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.w_0; sourceTree = ""; }; - C2E6808B2152809F0013F575 /* conv2d_28.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_28.b_0; sourceTree = ""; }; - C2E6808C2152809F0013F575 /* batch_norm_25.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.w_0; sourceTree = ""; }; - C2E6808D2152809F0013F575 /* conv2d_29.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_29.b_0; sourceTree = ""; }; - C2E6808E2152809F0013F575 /* batch_norm_31.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.w_0; sourceTree = ""; }; - C2E6808F2152809F0013F575 /* batch_norm_19.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.w_0; sourceTree = ""; }; - C2E680902152809F0013F575 /* batch_norm_4.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.b_0; sourceTree = ""; }; - C2E680912152809F0013F575 /* batch_norm_32.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.w_1; sourceTree = ""; }; - C2E680922152809F0013F575 /* batch_norm_26.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.w_1; sourceTree = ""; }; - C2E680932152809F0013F575 /* batch_norm_30.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.w_1; sourceTree = ""; }; - C2E680942152809F0013F575 /* batch_norm_24.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.w_1; sourceTree = ""; }; - C2E680952152809F0013F575 /* batch_norm_18.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.w_1; sourceTree = ""; }; - C2E680962152809F0013F575 /* batch_norm_6.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.b_0; sourceTree = ""; }; - C2E680972152809F0013F575 /* batch_norm_9.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.w_2; sourceTree = ""; }; - C2E680982152809F0013F575 /* conv2d_8.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_8.w_0; sourceTree = ""; }; - C2E680992152809F0013F575 /* batch_norm_27.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.w_0; sourceTree = ""; }; - C2E6809A2152809F0013F575 /* batch_norm_33.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.w_0; sourceTree = ""; }; - C2E6809B2152809F0013F575 /* batch_norm_32.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.w_0; sourceTree = ""; }; - C2E6809C2152809F0013F575 /* conv2d_9.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_9.w_0; sourceTree = ""; }; - C2E6809D2152809F0013F575 /* batch_norm_26.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.w_0; sourceTree = ""; }; - C2E6809E2152809F0013F575 /* batch_norm_8.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.w_2; sourceTree = ""; }; - C2E6809F2152809F0013F575 /* batch_norm_7.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.b_0; sourceTree = ""; }; - C2E680A02152809F0013F575 /* batch_norm_19.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.w_1; sourceTree = ""; }; - C2E680A12152809F0013F575 /* batch_norm_25.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.w_1; sourceTree = ""; }; - C2E680A22152809F0013F575 /* batch_norm_31.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.w_1; sourceTree = ""; }; - C2E680A32152809F0013F575 /* batch_norm_28.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.w_1; sourceTree = ""; }; - C2E680A42152809F0013F575 /* batch_norm_14.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.w_1; sourceTree = ""; }; - C2E680A52152809F0013F575 /* batch_norm_5.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.w_2; sourceTree = ""; }; - C2E680A62152809F0013F575 /* batch_norm_17.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.w_0; sourceTree = ""; }; - C2E680A72152809F0013F575 /* conv2d_33.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_33.b_0; sourceTree = ""; }; - C2E680A82152809F0013F575 /* conv2d_27.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_27.b_0; sourceTree = ""; }; - C2E680A92152809F0013F575 /* conv2d_4.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_4.w_0; sourceTree = ""; }; - C2E680AA2152809F0013F575 /* conv2d_5.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_5.w_0; sourceTree = ""; }; - C2E680AB2152809F0013F575 /* conv2d_26.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_26.b_0; sourceTree = ""; }; - C2E680AC2152809F0013F575 /* conv2d_32.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_32.b_0; sourceTree = ""; }; - C2E680AD2152809F0013F575 /* batch_norm_16.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.w_0; sourceTree = ""; }; - C2E680AE2152809F0013F575 /* batch_norm_4.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.w_2; sourceTree = ""; }; - C2E680AF2152809F0013F575 /* batch_norm_15.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.w_1; sourceTree = ""; }; - C2E680B02152809F0013F575 /* batch_norm_29.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.w_1; sourceTree = ""; }; - C2E680B12152809F0013F575 /* batch_norm_17.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.w_1; sourceTree = ""; }; - C2E680B22152809F0013F575 /* batch_norm_9.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.b_0; sourceTree = ""; }; - C2E680B32152809F0013F575 /* batch_norm_6.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.w_2; sourceTree = ""; }; - C2E680B42152809F0013F575 /* batch_norm_14.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.w_0; sourceTree = ""; }; - C2E680B52152809F0013F575 /* batch_norm_28.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.w_0; sourceTree = ""; }; - C2E680B62152809F0013F575 /* conv2d_24.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_24.b_0; sourceTree = ""; }; - C2E680B72152809F0013F575 /* conv2d_7.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_7.w_0; sourceTree = ""; }; - C2E680B82152809F0013F575 /* conv2d_30.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_30.b_0; sourceTree = ""; }; - C2E680B92152809F0013F575 /* conv2d_31.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_31.b_0; sourceTree = ""; }; - C2E680BA2152809F0013F575 /* batch_norm_29.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.w_0; sourceTree = ""; }; - C2E680BB2152809F0013F575 /* conv2d_6.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_6.w_0; sourceTree = ""; }; - C2E680BC2152809F0013F575 /* conv2d_25.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_25.b_0; sourceTree = ""; }; - C2E680BD2152809F0013F575 /* batch_norm_15.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.w_0; sourceTree = ""; }; - C2E680BE2152809F0013F575 /* batch_norm_7.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.w_2; sourceTree = ""; }; - C2E680BF2152809F0013F575 /* batch_norm_8.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.b_0; sourceTree = ""; }; - C2E680C02152809F0013F575 /* batch_norm_16.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.w_1; sourceTree = ""; }; - C2E680C12152809F0013F575 /* batch_norm_12.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.w_1; sourceTree = ""; }; - C2E680C22152809F0013F575 /* batch_norm_3.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.w_2; sourceTree = ""; }; - C2E680C32152809F0013F575 /* conv2d_2.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_2.w_0; sourceTree = ""; }; - C2E680C42152809F0013F575 /* batch_norm_11.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.w_0; sourceTree = ""; }; - C2E680C52152809F0013F575 /* batch_norm_10.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.w_0; sourceTree = ""; }; - C2E680C62152809F0013F575 /* conv2d_3.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_3.w_0; sourceTree = ""; }; - C2E680C72152809F0013F575 /* batch_norm_2.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.w_2; sourceTree = ""; }; - C2E680C82152809F0013F575 /* depthwise_conv2d_12.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_12.w_0; sourceTree = ""; }; - C2E680C92152809F0013F575 /* batch_norm_13.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.w_1; sourceTree = ""; }; - C2E680CA2152809F0013F575 /* batch_norm_11.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.w_1; sourceTree = ""; }; - C2E680CB2152809F0013F575 /* depthwise_conv2d_10.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_10.w_0; sourceTree = ""; }; - C2E680CC2152809F0013F575 /* batch_norm_0.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.w_2; sourceTree = ""; }; - C2E680CD2152809F0013F575 /* conv2d_22.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_22.b_0; sourceTree = ""; }; - C2E680CE2152809F0013F575 /* conv2d_1.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_1.w_0; sourceTree = ""; }; - C2E680CF2152809F0013F575 /* batch_norm_12.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.w_0; sourceTree = ""; }; - C2E680D02152809F0013F575 /* batch_norm_13.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.w_0; sourceTree = ""; }; - C2E680D12152809F0013F575 /* conv2d_0.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_0.w_0; sourceTree = ""; }; - C2E680D22152809F0013F575 /* conv2d_23.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_23.b_0; sourceTree = ""; }; - C2E680D32152809F0013F575 /* batch_norm_1.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.w_2; sourceTree = ""; }; - C2E680D42152809F0013F575 /* batch_norm_10.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.w_1; sourceTree = ""; }; - C2E680D52152809F0013F575 /* depthwise_conv2d_11.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_11.w_0; sourceTree = ""; }; - C2E680D62152809F0013F575 /* depthwise_conv2d_3.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_3.w_0; sourceTree = ""; }; - C2E680D72152809F0013F575 /* batch_norm_13.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.b_0; sourceTree = ""; }; - C2E680D82152809F0013F575 /* conv2d_23.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_23.w_0; sourceTree = ""; }; - C2E680D92152809F0013F575 /* batch_norm_20.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.w_2; sourceTree = ""; }; - C2E680DA2152809F0013F575 /* batch_norm_34.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.w_2; sourceTree = ""; }; - C2E680DB2152809F0013F575 /* batch_norm_21.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.w_2; sourceTree = ""; }; - C2E680DC2152809F0013F575 /* conv2d_22.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_22.w_0; sourceTree = ""; }; - C2E680DD2152809F0013F575 /* batch_norm_12.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.b_0; sourceTree = ""; }; - C2E680DE2152809F0013F575 /* depthwise_conv2d_2.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_2.w_0; sourceTree = ""; }; - C2E680DF2152809F0013F575 /* depthwise_conv2d_0.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_0.w_0; sourceTree = ""; }; - C2E680E02152809F0013F575 /* batch_norm_10.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.b_0; sourceTree = ""; }; - C2E680E12152809F0013F575 /* conv2d_20.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_20.w_0; sourceTree = ""; }; - C2E680E22152809F0013F575 /* batch_norm_23.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.w_2; sourceTree = ""; }; - C2E680E32152809F0013F575 /* batch_norm_22.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.w_2; sourceTree = ""; }; - C2E680E42152809F0013F575 /* conv2d_21.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_21.w_0; sourceTree = ""; }; - C2E680E52152809F0013F575 /* batch_norm_11.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.b_0; sourceTree = ""; }; - C2E680E62152809F0013F575 /* depthwise_conv2d_1.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_1.w_0; sourceTree = ""; }; - C2E680E72152809F0013F575 /* depthwise_conv2d_5.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_5.w_0; sourceTree = ""; }; - C2E680E82152809F0013F575 /* batch_norm_8.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.w_0; sourceTree = ""; }; - C2E680E92152809F0013F575 /* conv2d_25.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_25.w_0; sourceTree = ""; }; - C2E680EA2152809F0013F575 /* batch_norm_29.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.b_0; sourceTree = ""; }; - C2E680EB215280A00013F575 /* conv2d_31.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_31.w_0; sourceTree = ""; }; - C2E680EC215280A00013F575 /* conv2d_19.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_19.w_0; sourceTree = ""; }; - C2E680ED215280A00013F575 /* batch_norm_15.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.b_0; sourceTree = ""; }; - C2E680EE215280A00013F575 /* batch_norm_32.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.w_2; sourceTree = ""; }; - C2E680EF215280A00013F575 /* batch_norm_26.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.w_2; sourceTree = ""; }; - C2E680F0215280A00013F575 /* batch_norm_27.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.w_2; sourceTree = ""; }; - C2E680F1215280A00013F575 /* batch_norm_33.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.w_2; sourceTree = ""; }; - C2E680F2215280A00013F575 /* conv2d_18.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_18.w_0; sourceTree = ""; }; - C2E680F3215280A00013F575 /* batch_norm_14.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.b_0; sourceTree = ""; }; - C2E680F4215280A00013F575 /* conv2d_30.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_30.w_0; sourceTree = ""; }; - C2E680F5215280A00013F575 /* conv2d_24.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_24.w_0; sourceTree = ""; }; - C2E680F6215280A00013F575 /* batch_norm_28.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.b_0; sourceTree = ""; }; - C2E680F7215280A00013F575 /* batch_norm_9.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.w_0; sourceTree = ""; }; - C2E680F8215280A00013F575 /* depthwise_conv2d_4.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_4.w_0; sourceTree = ""; }; - C2E680F9215280A00013F575 /* depthwise_conv2d_6.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_6.w_0; sourceTree = ""; }; - C2E680FA215280A00013F575 /* conv2d_32.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_32.w_0; sourceTree = ""; }; - C2E680FB215280A00013F575 /* conv2d_26.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_26.w_0; sourceTree = ""; }; - C2E680FC215280A00013F575 /* batch_norm_16.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.b_0; sourceTree = ""; }; - C2E680FD215280A00013F575 /* batch_norm_19.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.w_2; sourceTree = ""; }; - C2E680FE215280A00013F575 /* batch_norm_25.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.w_2; sourceTree = ""; }; - C2E680FF215280A00013F575 /* batch_norm_31.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.w_2; sourceTree = ""; }; - C2E68100215280A00013F575 /* batch_norm_8.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.w_1; sourceTree = ""; }; - C2E68101215280A00013F575 /* batch_norm_9.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.w_1; sourceTree = ""; }; - C2E68102215280A00013F575 /* batch_norm_30.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.w_2; sourceTree = ""; }; - C2E68103215280A00013F575 /* batch_norm_24.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.w_2; sourceTree = ""; }; - C2E68104215280A00013F575 /* batch_norm_18.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.w_2; sourceTree = ""; }; - C2E68105215280A00013F575 /* batch_norm_17.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.b_0; sourceTree = ""; }; - C2E68106215280A00013F575 /* conv2d_27.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_27.w_0; sourceTree = ""; }; - C2E68107215280A00013F575 /* conv2d_33.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_33.w_0; sourceTree = ""; }; - C2E68108215280A00013F575 /* depthwise_conv2d_7.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_7.w_0; sourceTree = ""; }; - C2E6810A215280A00013F575 /* ar_model */ = {isa = PBXFileReference; lastKnownFileType = file; path = ar_model; sourceTree = ""; }; - C2E6810B215280A00013F575 /* ar_params */ = {isa = PBXFileReference; lastKnownFileType = file; path = ar_params; sourceTree = ""; }; FC013927210204A3008100E3 /* PreProcessKernel.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = PreProcessKernel.metal; sourceTree = ""; }; FC039B7E20E11C550081E9F8 /* paddle-mobile-demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "paddle-mobile-demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; FC039B8120E11C550081E9F8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -496,6 +68,16 @@ FCBCCC542122EF5400D94F7E /* MetalHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MetalHelper.swift; sourceTree = ""; }; FCEBEC2B20E1391F00C0B14D /* paddle_mobile.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = paddle_mobile.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FCF437E7214B6DDB00943429 /* MultiPredictViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiPredictViewController.swift; sourceTree = ""; }; + FCFE9B632152858600DECA15 /* hand.jpg.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = hand.jpg.zip; sourceTree = ""; }; + FCFE9B642152858600DECA15 /* synset.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = synset.txt; sourceTree = ""; }; + FCFE9B652152858600DECA15 /* banana.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = banana.jpeg; sourceTree = ""; }; + FCFE9B662152858600DECA15 /* hand.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = hand.jpg; sourceTree = ""; }; + FCFE9B672152858600DECA15 /* iphone.JPG */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = iphone.JPG; sourceTree = ""; }; + FCFE9B682152858600DECA15 /* paddle-mobile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "paddle-mobile.png"; sourceTree = ""; }; + FCFE9B752152859500DECA15 /* genet_params */ = {isa = PBXFileReference; lastKnownFileType = file; path = genet_params; sourceTree = ""; }; + FCFE9B762152859500DECA15 /* genet_model */ = {isa = PBXFileReference; lastKnownFileType = file; path = genet_model; sourceTree = ""; }; + FCFE9C4C2152859500DECA15 /* ar_model */ = {isa = PBXFileReference; lastKnownFileType = file; path = ar_model; sourceTree = ""; }; + FCFE9C4D2152859500DECA15 /* ar_params */ = {isa = PBXFileReference; lastKnownFileType = file; path = ar_params; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -529,295 +111,6 @@ name = Frameworks; sourceTree = ""; }; - C2E67C9D215248940013F575 /* images */ = { - isa = PBXGroup; - children = ( - C2E67C9E215248940013F575 /* synset.txt */, - C2E67C9F215248940013F575 /* banana.jpeg */, - C2E67CA0215248940013F575 /* hand.jpg */, - C2E67CA1215248940013F575 /* iphone.JPG */, - C2E67CA2215248940013F575 /* paddle-mobile.png */, - ); - path = images; - sourceTree = ""; - }; - C2E6802E2152809F0013F575 /* models */ = { - isa = PBXGroup; - children = ( - C2E6802F2152809F0013F575 /* mobilenet */, - C2E680322152809F0013F575 /* genet */, - C2E680352152809F0013F575 /* mobilenet_ssd_hand */, - C2E680382152809F0013F575 /* yolo */, - C2E6803D2152809F0013F575 /* mobilenet_combine */, - C2E680402152809F0013F575 /* mobilenetssd */, - C2E68109215280A00013F575 /* fluid_fssd_new_ar */, - ); - path = models; - sourceTree = ""; - }; - C2E6802F2152809F0013F575 /* mobilenet */ = { - isa = PBXGroup; - children = ( - C2E680302152809F0013F575 /* params */, - C2E680312152809F0013F575 /* model */, - ); - path = mobilenet; - sourceTree = ""; - }; - C2E680322152809F0013F575 /* genet */ = { - isa = PBXGroup; - children = ( - C2E680332152809F0013F575 /* genet_params */, - C2E680342152809F0013F575 /* genet_model */, - ); - path = genet; - sourceTree = ""; - }; - C2E680352152809F0013F575 /* mobilenet_ssd_hand */ = { - isa = PBXGroup; - children = ( - C2E680362152809F0013F575 /* ssd_hand_params */, - C2E680372152809F0013F575 /* ssd_hand_model */, - ); - path = mobilenet_ssd_hand; - sourceTree = ""; - }; - C2E680382152809F0013F575 /* yolo */ = { - isa = PBXGroup; - children = ( - C2E680392152809F0013F575 /* mobilenet */, - C2E6803A2152809F0013F575 /* params */, - C2E6803B2152809F0013F575 /* model */, - C2E6803C2152809F0013F575 /* yolo */, - ); - path = yolo; - sourceTree = ""; - }; - C2E6803D2152809F0013F575 /* mobilenet_combine */ = { - isa = PBXGroup; - children = ( - C2E6803E2152809F0013F575 /* params */, - C2E6803F2152809F0013F575 /* model */, - ); - path = mobilenet_combine; - sourceTree = ""; - }; - C2E680402152809F0013F575 /* mobilenetssd */ = { - isa = PBXGroup; - children = ( - C2E680412152809F0013F575 /* batch_norm_7.w_0 */, - C2E680422152809F0013F575 /* batch_norm_26.b_0 */, - C2E680432152809F0013F575 /* batch_norm_32.b_0 */, - C2E680442152809F0013F575 /* conv2d_16.w_0 */, - C2E680452152809F0013F575 /* batch_norm_15.w_2 */, - C2E680462152809F0013F575 /* batch_norm_29.w_2 */, - C2E680472152809F0013F575 /* batch_norm_4.w_1 */, - C2E680482152809F0013F575 /* batch_norm_5.w_1 */, - C2E680492152809F0013F575 /* batch_norm_28.w_2 */, - C2E6804A2152809F0013F575 /* batch_norm_14.w_2 */, - C2E6804B2152809F0013F575 /* conv2d_17.w_0 */, - C2E6804C2152809F0013F575 /* batch_norm_33.b_0 */, - C2E6804D2152809F0013F575 /* batch_norm_27.b_0 */, - C2E6804E2152809F0013F575 /* batch_norm_6.w_0 */, - C2E6804F2152809F0013F575 /* batch_norm_4.w_0 */, - C2E680502152809F0013F575 /* depthwise_conv2d_9.w_0 */, - C2E680512152809F0013F575 /* batch_norm_31.b_0 */, - C2E680522152809F0013F575 /* conv2d_29.w_0 */, - C2E680532152809F0013F575 /* batch_norm_25.b_0 */, - C2E680542152809F0013F575 /* conv2d_15.w_0 */, - C2E680552152809F0013F575 /* batch_norm_19.b_0 */, - C2E680562152809F0013F575 /* batch_norm_16.w_2 */, - C2E680572152809F0013F575 /* __model__ */, - C2E680582152809F0013F575 /* batch_norm_7.w_1 */, - C2E680592152809F0013F575 /* batch_norm_6.w_1 */, - C2E6805A2152809F0013F575 /* batch_norm_17.w_2 */, - C2E6805B2152809F0013F575 /* conv2d_14.w_0 */, - C2E6805C2152809F0013F575 /* batch_norm_18.b_0 */, - C2E6805D2152809F0013F575 /* conv2d_28.w_0 */, - C2E6805E2152809F0013F575 /* batch_norm_24.b_0 */, - C2E6805F2152809F0013F575 /* batch_norm_30.b_0 */, - C2E680602152809F0013F575 /* depthwise_conv2d_8.w_0 */, - C2E680612152809F0013F575 /* batch_norm_5.w_0 */, - C2E680622152809F0013F575 /* batch_norm_1.w_0 */, - C2E680632152809F0013F575 /* conv2d_10.w_0 */, - C2E680642152809F0013F575 /* batch_norm_34.b_0 */, - C2E680652152809F0013F575 /* batch_norm_20.b_0 */, - C2E680662152809F0013F575 /* batch_norm_13.w_2 */, - C2E680672152809F0013F575 /* batch_norm_2.w_1 */, - C2E680682152809F0013F575 /* batch_norm_3.w_1 */, - C2E680692152809F0013F575 /* batch_norm_12.w_2 */, - C2E6806A2152809F0013F575 /* batch_norm_21.b_0 */, - C2E6806B2152809F0013F575 /* conv2d_11.w_0 */, - C2E6806C2152809F0013F575 /* batch_norm_0.w_0 */, - C2E6806D2152809F0013F575 /* batch_norm_2.w_0 */, - C2E6806E2152809F0013F575 /* conv2d_13.w_0 */, - C2E6806F2152809F0013F575 /* batch_norm_23.b_0 */, - C2E680702152809F0013F575 /* batch_norm_10.w_2 */, - C2E680712152809F0013F575 /* batch_norm_1.w_1 */, - C2E680722152809F0013F575 /* batch_norm_0.w_1 */, - C2E680732152809F0013F575 /* batch_norm_11.w_2 */, - C2E680742152809F0013F575 /* batch_norm_22.b_0 */, - C2E680752152809F0013F575 /* conv2d_12.w_0 */, - C2E680762152809F0013F575 /* batch_norm_3.w_0 */, - C2E680772152809F0013F575 /* batch_norm_21.w_1 */, - C2E680782152809F0013F575 /* batch_norm_3.b_0 */, - C2E680792152809F0013F575 /* batch_norm_22.w_0 */, - C2E6807A2152809F0013F575 /* batch_norm_23.w_0 */, - C2E6807B2152809F0013F575 /* batch_norm_2.b_0 */, - C2E6807C2152809F0013F575 /* batch_norm_20.w_1 */, - C2E6807D2152809F0013F575 /* batch_norm_34.w_1 */, - C2E6807E2152809F0013F575 /* batch_norm_22.w_1 */, - C2E6807F2152809F0013F575 /* batch_norm_0.b_0 */, - C2E680802152809F0013F575 /* batch_norm_21.w_0 */, - C2E680812152809F0013F575 /* batch_norm_20.w_0 */, - C2E680822152809F0013F575 /* batch_norm_34.w_0 */, - C2E680832152809F0013F575 /* batch_norm_1.b_0 */, - C2E680842152809F0013F575 /* batch_norm_23.w_1 */, - C2E680852152809F0013F575 /* batch_norm_27.w_1 */, - C2E680862152809F0013F575 /* batch_norm_33.w_1 */, - C2E680872152809F0013F575 /* batch_norm_5.b_0 */, - C2E680882152809F0013F575 /* batch_norm_18.w_0 */, - C2E680892152809F0013F575 /* batch_norm_30.w_0 */, - C2E6808A2152809F0013F575 /* batch_norm_24.w_0 */, - C2E6808B2152809F0013F575 /* conv2d_28.b_0 */, - C2E6808C2152809F0013F575 /* batch_norm_25.w_0 */, - C2E6808D2152809F0013F575 /* conv2d_29.b_0 */, - C2E6808E2152809F0013F575 /* batch_norm_31.w_0 */, - C2E6808F2152809F0013F575 /* batch_norm_19.w_0 */, - C2E680902152809F0013F575 /* batch_norm_4.b_0 */, - C2E680912152809F0013F575 /* batch_norm_32.w_1 */, - C2E680922152809F0013F575 /* batch_norm_26.w_1 */, - C2E680932152809F0013F575 /* batch_norm_30.w_1 */, - C2E680942152809F0013F575 /* batch_norm_24.w_1 */, - C2E680952152809F0013F575 /* batch_norm_18.w_1 */, - C2E680962152809F0013F575 /* batch_norm_6.b_0 */, - C2E680972152809F0013F575 /* batch_norm_9.w_2 */, - C2E680982152809F0013F575 /* conv2d_8.w_0 */, - C2E680992152809F0013F575 /* batch_norm_27.w_0 */, - C2E6809A2152809F0013F575 /* batch_norm_33.w_0 */, - C2E6809B2152809F0013F575 /* batch_norm_32.w_0 */, - C2E6809C2152809F0013F575 /* conv2d_9.w_0 */, - C2E6809D2152809F0013F575 /* batch_norm_26.w_0 */, - C2E6809E2152809F0013F575 /* batch_norm_8.w_2 */, - C2E6809F2152809F0013F575 /* batch_norm_7.b_0 */, - C2E680A02152809F0013F575 /* batch_norm_19.w_1 */, - C2E680A12152809F0013F575 /* batch_norm_25.w_1 */, - C2E680A22152809F0013F575 /* batch_norm_31.w_1 */, - C2E680A32152809F0013F575 /* batch_norm_28.w_1 */, - C2E680A42152809F0013F575 /* batch_norm_14.w_1 */, - C2E680A52152809F0013F575 /* batch_norm_5.w_2 */, - C2E680A62152809F0013F575 /* batch_norm_17.w_0 */, - C2E680A72152809F0013F575 /* conv2d_33.b_0 */, - C2E680A82152809F0013F575 /* conv2d_27.b_0 */, - C2E680A92152809F0013F575 /* conv2d_4.w_0 */, - C2E680AA2152809F0013F575 /* conv2d_5.w_0 */, - C2E680AB2152809F0013F575 /* conv2d_26.b_0 */, - C2E680AC2152809F0013F575 /* conv2d_32.b_0 */, - C2E680AD2152809F0013F575 /* batch_norm_16.w_0 */, - C2E680AE2152809F0013F575 /* batch_norm_4.w_2 */, - C2E680AF2152809F0013F575 /* batch_norm_15.w_1 */, - C2E680B02152809F0013F575 /* batch_norm_29.w_1 */, - C2E680B12152809F0013F575 /* batch_norm_17.w_1 */, - C2E680B22152809F0013F575 /* batch_norm_9.b_0 */, - C2E680B32152809F0013F575 /* batch_norm_6.w_2 */, - C2E680B42152809F0013F575 /* batch_norm_14.w_0 */, - C2E680B52152809F0013F575 /* batch_norm_28.w_0 */, - C2E680B62152809F0013F575 /* conv2d_24.b_0 */, - C2E680B72152809F0013F575 /* conv2d_7.w_0 */, - C2E680B82152809F0013F575 /* conv2d_30.b_0 */, - C2E680B92152809F0013F575 /* conv2d_31.b_0 */, - C2E680BA2152809F0013F575 /* batch_norm_29.w_0 */, - C2E680BB2152809F0013F575 /* conv2d_6.w_0 */, - C2E680BC2152809F0013F575 /* conv2d_25.b_0 */, - C2E680BD2152809F0013F575 /* batch_norm_15.w_0 */, - C2E680BE2152809F0013F575 /* batch_norm_7.w_2 */, - C2E680BF2152809F0013F575 /* batch_norm_8.b_0 */, - C2E680C02152809F0013F575 /* batch_norm_16.w_1 */, - C2E680C12152809F0013F575 /* batch_norm_12.w_1 */, - C2E680C22152809F0013F575 /* batch_norm_3.w_2 */, - C2E680C32152809F0013F575 /* conv2d_2.w_0 */, - C2E680C42152809F0013F575 /* batch_norm_11.w_0 */, - C2E680C52152809F0013F575 /* batch_norm_10.w_0 */, - C2E680C62152809F0013F575 /* conv2d_3.w_0 */, - C2E680C72152809F0013F575 /* batch_norm_2.w_2 */, - C2E680C82152809F0013F575 /* depthwise_conv2d_12.w_0 */, - C2E680C92152809F0013F575 /* batch_norm_13.w_1 */, - C2E680CA2152809F0013F575 /* batch_norm_11.w_1 */, - C2E680CB2152809F0013F575 /* depthwise_conv2d_10.w_0 */, - C2E680CC2152809F0013F575 /* batch_norm_0.w_2 */, - C2E680CD2152809F0013F575 /* conv2d_22.b_0 */, - C2E680CE2152809F0013F575 /* conv2d_1.w_0 */, - C2E680CF2152809F0013F575 /* batch_norm_12.w_0 */, - C2E680D02152809F0013F575 /* batch_norm_13.w_0 */, - C2E680D12152809F0013F575 /* conv2d_0.w_0 */, - C2E680D22152809F0013F575 /* conv2d_23.b_0 */, - C2E680D32152809F0013F575 /* batch_norm_1.w_2 */, - C2E680D42152809F0013F575 /* batch_norm_10.w_1 */, - C2E680D52152809F0013F575 /* depthwise_conv2d_11.w_0 */, - C2E680D62152809F0013F575 /* depthwise_conv2d_3.w_0 */, - C2E680D72152809F0013F575 /* batch_norm_13.b_0 */, - C2E680D82152809F0013F575 /* conv2d_23.w_0 */, - C2E680D92152809F0013F575 /* batch_norm_20.w_2 */, - C2E680DA2152809F0013F575 /* batch_norm_34.w_2 */, - C2E680DB2152809F0013F575 /* batch_norm_21.w_2 */, - C2E680DC2152809F0013F575 /* conv2d_22.w_0 */, - C2E680DD2152809F0013F575 /* batch_norm_12.b_0 */, - C2E680DE2152809F0013F575 /* depthwise_conv2d_2.w_0 */, - C2E680DF2152809F0013F575 /* depthwise_conv2d_0.w_0 */, - C2E680E02152809F0013F575 /* batch_norm_10.b_0 */, - C2E680E12152809F0013F575 /* conv2d_20.w_0 */, - C2E680E22152809F0013F575 /* batch_norm_23.w_2 */, - C2E680E32152809F0013F575 /* batch_norm_22.w_2 */, - C2E680E42152809F0013F575 /* conv2d_21.w_0 */, - C2E680E52152809F0013F575 /* batch_norm_11.b_0 */, - C2E680E62152809F0013F575 /* depthwise_conv2d_1.w_0 */, - C2E680E72152809F0013F575 /* depthwise_conv2d_5.w_0 */, - C2E680E82152809F0013F575 /* batch_norm_8.w_0 */, - C2E680E92152809F0013F575 /* conv2d_25.w_0 */, - C2E680EA2152809F0013F575 /* batch_norm_29.b_0 */, - C2E680EB215280A00013F575 /* conv2d_31.w_0 */, - C2E680EC215280A00013F575 /* conv2d_19.w_0 */, - C2E680ED215280A00013F575 /* batch_norm_15.b_0 */, - C2E680EE215280A00013F575 /* batch_norm_32.w_2 */, - C2E680EF215280A00013F575 /* batch_norm_26.w_2 */, - C2E680F0215280A00013F575 /* batch_norm_27.w_2 */, - C2E680F1215280A00013F575 /* batch_norm_33.w_2 */, - C2E680F2215280A00013F575 /* conv2d_18.w_0 */, - C2E680F3215280A00013F575 /* batch_norm_14.b_0 */, - C2E680F4215280A00013F575 /* conv2d_30.w_0 */, - C2E680F5215280A00013F575 /* conv2d_24.w_0 */, - C2E680F6215280A00013F575 /* batch_norm_28.b_0 */, - C2E680F7215280A00013F575 /* batch_norm_9.w_0 */, - C2E680F8215280A00013F575 /* depthwise_conv2d_4.w_0 */, - C2E680F9215280A00013F575 /* depthwise_conv2d_6.w_0 */, - C2E680FA215280A00013F575 /* conv2d_32.w_0 */, - C2E680FB215280A00013F575 /* conv2d_26.w_0 */, - C2E680FC215280A00013F575 /* batch_norm_16.b_0 */, - C2E680FD215280A00013F575 /* batch_norm_19.w_2 */, - C2E680FE215280A00013F575 /* batch_norm_25.w_2 */, - C2E680FF215280A00013F575 /* batch_norm_31.w_2 */, - C2E68100215280A00013F575 /* batch_norm_8.w_1 */, - C2E68101215280A00013F575 /* batch_norm_9.w_1 */, - C2E68102215280A00013F575 /* batch_norm_30.w_2 */, - C2E68103215280A00013F575 /* batch_norm_24.w_2 */, - C2E68104215280A00013F575 /* batch_norm_18.w_2 */, - C2E68105215280A00013F575 /* batch_norm_17.b_0 */, - C2E68106215280A00013F575 /* conv2d_27.w_0 */, - C2E68107215280A00013F575 /* conv2d_33.w_0 */, - C2E68108215280A00013F575 /* depthwise_conv2d_7.w_0 */, - ); - path = mobilenetssd; - sourceTree = ""; - }; - C2E68109215280A00013F575 /* fluid_fssd_new_ar */ = { - isa = PBXGroup; - children = ( - C2E6810A215280A00013F575 /* ar_model */, - C2E6810B215280A00013F575 /* ar_params */, - ); - path = fluid_fssd_new_ar; - sourceTree = ""; - }; FC039B7520E11C550081E9F8 = { isa = PBXGroup; children = ( @@ -840,8 +133,8 @@ FC039B8020E11C550081E9F8 /* paddle-mobile-demo */ = { isa = PBXGroup; children = ( - C2E6802E2152809F0013F575 /* models */, - C2E67C9D215248940013F575 /* images */, + FCFE9B6F2152859500DECA15 /* models */, + FCFE9B622152858600DECA15 /* images */, FC803BCA214D27920094B8E5 /* VideoCapture */, FC8CFED2213519540094D569 /* Net */, FC039B8120E11C550081E9F8 /* AppDelegate.swift */, @@ -876,6 +169,48 @@ path = Net; sourceTree = ""; }; + FCFE9B622152858600DECA15 /* images */ = { + isa = PBXGroup; + children = ( + FCFE9B632152858600DECA15 /* hand.jpg.zip */, + FCFE9B642152858600DECA15 /* synset.txt */, + FCFE9B652152858600DECA15 /* banana.jpeg */, + FCFE9B662152858600DECA15 /* hand.jpg */, + FCFE9B672152858600DECA15 /* iphone.JPG */, + FCFE9B682152858600DECA15 /* paddle-mobile.png */, + ); + name = images; + path = ../../images; + sourceTree = ""; + }; + FCFE9B6F2152859500DECA15 /* models */ = { + isa = PBXGroup; + children = ( + FCFE9B742152859500DECA15 /* genet */, + FCFE9C4B2152859500DECA15 /* fluid_fssd_new_ar */, + ); + name = models; + path = ../../models; + sourceTree = ""; + }; + FCFE9B742152859500DECA15 /* genet */ = { + isa = PBXGroup; + children = ( + FCFE9B752152859500DECA15 /* genet_params */, + FCFE9B762152859500DECA15 /* genet_model */, + ); + path = genet; + sourceTree = ""; + }; + FCFE9C4B2152859500DECA15 /* fluid_fssd_new_ar */ = { + isa = PBXGroup; + children = ( + FCFE9C4C2152859500DECA15 /* ar_model */, + FCFE9C4D2152859500DECA15 /* ar_params */, + ); + path = fluid_fssd_new_ar; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -938,228 +273,19 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + FCFE9D232152859600DECA15 /* ar_model in Resources */, FC039B8C20E11C560081E9F8 /* LaunchScreen.storyboard in Resources */, - C2E6813E215280A00013F575 /* batch_norm_2.w_1 in Resources */, - C2E6817E215280A00013F575 /* conv2d_33.b_0 in Resources */, - C2E6811E215280A00013F575 /* batch_norm_4.w_1 in Resources */, - C2E681A5215280A00013F575 /* conv2d_1.w_0 in Resources */, - C2E6812D215280A00013F575 /* batch_norm_16.w_2 in Resources */, - C2E68148215280A00013F575 /* batch_norm_1.w_1 in Resources */, - C2E681B2215280A00013F575 /* batch_norm_21.w_2 in Resources */, - C2E67D82215248950013F575 /* banana.jpeg in Resources */, - C2E68175215280A00013F575 /* batch_norm_8.w_2 in Resources */, - C2E68174215280A00013F575 /* batch_norm_26.w_0 in Resources */, - C2E681A8215280A00013F575 /* conv2d_0.w_0 in Resources */, - C2E6818A215280A00013F575 /* batch_norm_6.w_2 in Resources */, - C2E68116215280A00013F575 /* params in Resources */, - C2E681AF215280A00013F575 /* conv2d_23.w_0 in Resources */, - C2E681B1215280A00013F575 /* batch_norm_34.w_2 in Resources */, - C2E68133215280A00013F575 /* batch_norm_18.b_0 in Resources */, - C2E68163215280A00013F575 /* batch_norm_25.w_0 in Resources */, - C2E6810F215280A00013F575 /* genet_model in Resources */, - C2E681C8215280A00013F575 /* batch_norm_33.w_2 in Resources */, - C2E68193215280A00013F575 /* conv2d_25.b_0 in Resources */, - C2E68182215280A00013F575 /* conv2d_26.b_0 in Resources */, - C2E681D8215280A00013F575 /* batch_norm_9.w_1 in Resources */, - C2E6812A215280A00013F575 /* batch_norm_25.b_0 in Resources */, - C2E6814F215280A00013F575 /* batch_norm_3.b_0 in Resources */, - C2E681A0215280A00013F575 /* batch_norm_13.w_1 in Resources */, - C2E68190215280A00013F575 /* conv2d_31.b_0 in Resources */, - C2E68124215280A00013F575 /* batch_norm_27.b_0 in Resources */, - C2E68110215280A00013F575 /* ssd_hand_params in Resources */, - C2E68122215280A00013F575 /* conv2d_17.w_0 in Resources */, - C2E6815A215280A00013F575 /* batch_norm_1.b_0 in Resources */, - C2E681A1215280A00013F575 /* batch_norm_11.w_1 in Resources */, - C2E681D0215280A00013F575 /* depthwise_conv2d_6.w_0 in Resources */, - C2E68156215280A00013F575 /* batch_norm_0.b_0 in Resources */, - C2E6816A215280A00013F575 /* batch_norm_30.w_1 in Resources */, - C2E681C7215280A00013F575 /* batch_norm_27.w_2 in Resources */, - C2E68154215280A00013F575 /* batch_norm_34.w_1 in Resources */, - C2E68138215280A00013F575 /* batch_norm_5.w_0 in Resources */, - C2E6811F215280A00013F575 /* batch_norm_5.w_1 in Resources */, - C2E6817B215280A00013F575 /* batch_norm_14.w_1 in Resources */, - C2E681D4215280A00013F575 /* batch_norm_19.w_2 in Resources */, - C2E68169215280A00013F575 /* batch_norm_26.w_1 in Resources */, - C2E681B8215280A00013F575 /* conv2d_20.w_0 in Resources */, - C2E68158215280A00013F575 /* batch_norm_20.w_0 in Resources */, - C2E681BB215280A00013F575 /* conv2d_21.w_0 in Resources */, - C2E681AB215280A00013F575 /* batch_norm_10.w_1 in Resources */, - C2E68189215280A00013F575 /* batch_norm_9.b_0 in Resources */, - C2E68131215280A00013F575 /* batch_norm_17.w_2 in Resources */, - C2E6815C215280A00013F575 /* batch_norm_27.w_1 in Resources */, - C2E681DD215280A00013F575 /* conv2d_27.w_0 in Resources */, - C2E68176215280A00013F575 /* batch_norm_7.b_0 in Resources */, - C2E68118215280A00013F575 /* batch_norm_7.w_0 in Resources */, - C2E6810C215280A00013F575 /* params in Resources */, - C2E68132215280A00013F575 /* conv2d_14.w_0 in Resources */, - C2E68117215280A00013F575 /* model in Resources */, - C2E681CA215280A00013F575 /* batch_norm_14.b_0 in Resources */, - C2E68199215280A00013F575 /* batch_norm_3.w_2 in Resources */, - C2E68167215280A00013F575 /* batch_norm_4.b_0 in Resources */, - C2E68150215280A00013F575 /* batch_norm_22.w_0 in Resources */, - C2E6817F215280A00013F575 /* conv2d_27.b_0 in Resources */, - C2E6816F215280A00013F575 /* conv2d_8.w_0 in Resources */, - C2E68172215280A00013F575 /* batch_norm_32.w_0 in Resources */, - C2E68137215280A00013F575 /* depthwise_conv2d_8.w_0 in Resources */, - C2E6813B215280A00013F575 /* batch_norm_34.b_0 in Resources */, - C2E6819C215280A00013F575 /* batch_norm_10.w_0 in Resources */, - C2E681B4215280A00013F575 /* batch_norm_12.b_0 in Resources */, - C2E6812C215280A00013F575 /* batch_norm_19.b_0 in Resources */, - C2E68165215280A00013F575 /* batch_norm_31.w_0 in Resources */, - C2E6815F215280A00013F575 /* batch_norm_18.w_0 in Resources */, - C2E681AC215280A00013F575 /* depthwise_conv2d_11.w_0 in Resources */, + FCFE9C522152859600DECA15 /* genet_model in Resources */, + FCFE9D242152859600DECA15 /* ar_params in Resources */, + FCFE9B6E2152858600DECA15 /* paddle-mobile.png in Resources */, + FCFE9C512152859600DECA15 /* genet_params in Resources */, + FCFE9B692152858600DECA15 /* hand.jpg.zip in Resources */, FC039B8920E11C560081E9F8 /* Assets.xcassets in Resources */, - C2E6811A215280A00013F575 /* batch_norm_32.b_0 in Resources */, - C2E681B5215280A00013F575 /* depthwise_conv2d_2.w_0 in Resources */, - C2E68195215280A00013F575 /* batch_norm_7.w_2 in Resources */, - C2E6815B215280A00013F575 /* batch_norm_23.w_1 in Resources */, - C2E67D85215248950013F575 /* paddle-mobile.png in Resources */, - C2E6816B215280A00013F575 /* batch_norm_24.w_1 in Resources */, - C2E6811B215280A00013F575 /* conv2d_16.w_0 in Resources */, - C2E68145215280A00013F575 /* conv2d_13.w_0 in Resources */, - C2E68186215280A00013F575 /* batch_norm_15.w_1 in Resources */, - C2E6819B215280A00013F575 /* batch_norm_11.w_0 in Resources */, - C2E681BC215280A00013F575 /* batch_norm_11.b_0 in Resources */, - C2E68157215280A00013F575 /* batch_norm_21.w_0 in Resources */, - C2E68140215280A00013F575 /* batch_norm_12.w_2 in Resources */, - C2E68115215280A00013F575 /* yolo in Resources */, - C2E67D84215248950013F575 /* iphone.JPG in Resources */, - C2E68142215280A00013F575 /* conv2d_11.w_0 in Resources */, - C2E681DC215280A00013F575 /* batch_norm_17.b_0 in Resources */, - C2E6814B215280A00013F575 /* batch_norm_22.b_0 in Resources */, - C2E6817D215280A00013F575 /* batch_norm_17.w_0 in Resources */, - C2E681BD215280A00013F575 /* depthwise_conv2d_1.w_0 in Resources */, - C2E68181215280A00013F575 /* conv2d_5.w_0 in Resources */, - C2E681BF215280A00013F575 /* batch_norm_8.w_0 in Resources */, - C2E68183215280A00013F575 /* conv2d_32.b_0 in Resources */, - C2E681C3215280A00013F575 /* conv2d_19.w_0 in Resources */, - C2E68144215280A00013F575 /* batch_norm_2.w_0 in Resources */, - C2E681C5215280A00013F575 /* batch_norm_32.w_2 in Resources */, - C2E68153215280A00013F575 /* batch_norm_20.w_1 in Resources */, - C2E68112215280A00013F575 /* mobilenet in Resources */, - C2E68187215280A00013F575 /* batch_norm_29.w_1 in Resources */, - C2E681B0215280A00013F575 /* batch_norm_20.w_2 in Resources */, - C2E681C9215280A00013F575 /* conv2d_18.w_0 in Resources */, - C2E68128215280A00013F575 /* batch_norm_31.b_0 in Resources */, - C2E681C4215280A00013F575 /* batch_norm_15.b_0 in Resources */, - C2E68164215280A00013F575 /* conv2d_29.b_0 in Resources */, - C2E681BA215280A00013F575 /* batch_norm_22.w_2 in Resources */, - C2E68151215280A00013F575 /* batch_norm_23.w_0 in Resources */, - C2E6816D215280A00013F575 /* batch_norm_6.b_0 in Resources */, - C2E68171215280A00013F575 /* batch_norm_33.w_0 in Resources */, - C2E68136215280A00013F575 /* batch_norm_30.b_0 in Resources */, - C2E68123215280A00013F575 /* batch_norm_33.b_0 in Resources */, - C2E68147215280A00013F575 /* batch_norm_10.w_2 in Resources */, - C2E6817A215280A00013F575 /* batch_norm_28.w_1 in Resources */, - C2E6816E215280A00013F575 /* batch_norm_9.w_2 in Resources */, - C2E681B6215280A00013F575 /* depthwise_conv2d_0.w_0 in Resources */, - C2E68184215280A00013F575 /* batch_norm_16.w_0 in Resources */, - C2E68129215280A00013F575 /* conv2d_29.w_0 in Resources */, - C2E68120215280A00013F575 /* batch_norm_28.w_2 in Resources */, - C2E681C2215280A00013F575 /* conv2d_31.w_0 in Resources */, - C2E68166215280A00013F575 /* batch_norm_19.w_0 in Resources */, - C2E681B7215280A00013F575 /* batch_norm_10.b_0 in Resources */, - C2E6818F215280A00013F575 /* conv2d_30.b_0 in Resources */, - C2E681B9215280A00013F575 /* batch_norm_23.w_2 in Resources */, - C2E68111215280A00013F575 /* ssd_hand_model in Resources */, - C2E681CE215280A00013F575 /* batch_norm_9.w_0 in Resources */, - C2E681AD215280A00013F575 /* depthwise_conv2d_3.w_0 in Resources */, - C2E6818E215280A00013F575 /* conv2d_7.w_0 in Resources */, - C2E6818D215280A00013F575 /* conv2d_24.b_0 in Resources */, - C2E68146215280A00013F575 /* batch_norm_23.b_0 in Resources */, - C2E68191215280A00013F575 /* batch_norm_29.w_0 in Resources */, - C2E6819D215280A00013F575 /* conv2d_3.w_0 in Resources */, - C2E68119215280A00013F575 /* batch_norm_26.b_0 in Resources */, - C2E681D7215280A00013F575 /* batch_norm_8.w_1 in Resources */, - C2E68192215280A00013F575 /* conv2d_6.w_0 in Resources */, - C2E681D6215280A00013F575 /* batch_norm_31.w_2 in Resources */, - C2E6813C215280A00013F575 /* batch_norm_20.b_0 in Resources */, - C2E6818B215280A00013F575 /* batch_norm_14.w_0 in Resources */, - C2E68114215280A00013F575 /* model in Resources */, - C2E68178215280A00013F575 /* batch_norm_25.w_1 in Resources */, - C2E68180215280A00013F575 /* conv2d_4.w_0 in Resources */, - C2E681CF215280A00013F575 /* depthwise_conv2d_4.w_0 in Resources */, - C2E6812E215280A00013F575 /* __model__ in Resources */, - C2E68113215280A00013F575 /* params in Resources */, - C2E6811C215280A00013F575 /* batch_norm_15.w_2 in Resources */, - C2E68197215280A00013F575 /* batch_norm_16.w_1 in Resources */, - C2E6812F215280A00013F575 /* batch_norm_7.w_1 in Resources */, - C2E68160215280A00013F575 /* batch_norm_30.w_0 in Resources */, - C2E68127215280A00013F575 /* depthwise_conv2d_9.w_0 in Resources */, - C2E68196215280A00013F575 /* batch_norm_8.b_0 in Resources */, - C2E681A7215280A00013F575 /* batch_norm_13.w_0 in Resources */, - C2E6810D215280A00013F575 /* model in Resources */, - C2E681E1215280A00013F575 /* ar_params in Resources */, - C2E681AE215280A00013F575 /* batch_norm_13.b_0 in Resources */, - C2E68161215280A00013F575 /* batch_norm_24.w_0 in Resources */, - C2E681D3215280A00013F575 /* batch_norm_16.b_0 in Resources */, - C2E681A3215280A00013F575 /* batch_norm_0.w_2 in Resources */, - C2E6814A215280A00013F575 /* batch_norm_11.w_2 in Resources */, - C2E68185215280A00013F575 /* batch_norm_4.w_2 in Resources */, - C2E681B3215280A00013F575 /* conv2d_22.w_0 in Resources */, - C2E6818C215280A00013F575 /* batch_norm_28.w_0 in Resources */, - C2E68194215280A00013F575 /* batch_norm_15.w_0 in Resources */, - C2E681CD215280A00013F575 /* batch_norm_28.b_0 in Resources */, - C2E68135215280A00013F575 /* batch_norm_24.b_0 in Resources */, - C2E67D81215248950013F575 /* synset.txt in Resources */, - C2E68155215280A00013F575 /* batch_norm_22.w_1 in Resources */, - C2E68143215280A00013F575 /* batch_norm_0.w_0 in Resources */, - C2E68173215280A00013F575 /* conv2d_9.w_0 in Resources */, - C2E68168215280A00013F575 /* batch_norm_32.w_1 in Resources */, - C2E6816C215280A00013F575 /* batch_norm_18.w_1 in Resources */, - C2E681DA215280A00013F575 /* batch_norm_24.w_2 in Resources */, - C2E681C0215280A00013F575 /* conv2d_25.w_0 in Resources */, - C2E68162215280A00013F575 /* conv2d_28.b_0 in Resources */, - C2E6819E215280A00013F575 /* batch_norm_2.w_2 in Resources */, - C2E681A2215280A00013F575 /* depthwise_conv2d_10.w_0 in Resources */, - C2E68188215280A00013F575 /* batch_norm_17.w_1 in Resources */, - C2E68152215280A00013F575 /* batch_norm_2.b_0 in Resources */, - C2E681BE215280A00013F575 /* depthwise_conv2d_5.w_0 in Resources */, - C2E6817C215280A00013F575 /* batch_norm_5.w_2 in Resources */, - C2E681E0215280A00013F575 /* ar_model in Resources */, - C2E6811D215280A00013F575 /* batch_norm_29.w_2 in Resources */, - C2E6813A215280A00013F575 /* conv2d_10.w_0 in Resources */, - C2E68159215280A00013F575 /* batch_norm_34.w_0 in Resources */, - C2E68130215280A00013F575 /* batch_norm_6.w_1 in Resources */, - C2E68177215280A00013F575 /* batch_norm_19.w_1 in Resources */, - C2E681CC215280A00013F575 /* conv2d_24.w_0 in Resources */, - C2E68179215280A00013F575 /* batch_norm_31.w_1 in Resources */, - C2E681C6215280A00013F575 /* batch_norm_26.w_2 in Resources */, - C2E681D9215280A00013F575 /* batch_norm_30.w_2 in Resources */, - C2E6815E215280A00013F575 /* batch_norm_5.b_0 in Resources */, - C2E6814E215280A00013F575 /* batch_norm_21.w_1 in Resources */, - C2E6819A215280A00013F575 /* conv2d_2.w_0 in Resources */, - C2E68149215280A00013F575 /* batch_norm_0.w_1 in Resources */, - C2E681DB215280A00013F575 /* batch_norm_18.w_2 in Resources */, - C2E68134215280A00013F575 /* conv2d_28.w_0 in Resources */, - C2E6814C215280A00013F575 /* conv2d_12.w_0 in Resources */, - C2E68141215280A00013F575 /* batch_norm_21.b_0 in Resources */, - C2E681A4215280A00013F575 /* conv2d_22.b_0 in Resources */, - C2E68121215280A00013F575 /* batch_norm_14.w_2 in Resources */, - C2E68139215280A00013F575 /* batch_norm_1.w_0 in Resources */, - C2E681C1215280A00013F575 /* batch_norm_29.b_0 in Resources */, - C2E6815D215280A00013F575 /* batch_norm_33.w_1 in Resources */, - C2E681D1215280A00013F575 /* conv2d_32.w_0 in Resources */, - C2E6813F215280A00013F575 /* batch_norm_3.w_1 in Resources */, - C2E6819F215280A00013F575 /* depthwise_conv2d_12.w_0 in Resources */, - C2E681D5215280A00013F575 /* batch_norm_25.w_2 in Resources */, - C2E6812B215280A00013F575 /* conv2d_15.w_0 in Resources */, - C2E68126215280A00013F575 /* batch_norm_4.w_0 in Resources */, - C2E681A9215280A00013F575 /* conv2d_23.b_0 in Resources */, - C2E6813D215280A00013F575 /* batch_norm_13.w_2 in Resources */, - C2E681AA215280A00013F575 /* batch_norm_1.w_2 in Resources */, - C2E681A6215280A00013F575 /* batch_norm_12.w_0 in Resources */, - C2E6814D215280A00013F575 /* batch_norm_3.w_0 in Resources */, - C2E68170215280A00013F575 /* batch_norm_27.w_0 in Resources */, - C2E68198215280A00013F575 /* batch_norm_12.w_1 in Resources */, - C2E68125215280A00013F575 /* batch_norm_6.w_0 in Resources */, - C2E67D83215248950013F575 /* hand.jpg in Resources */, - C2E6810E215280A00013F575 /* genet_params in Resources */, - C2E681DE215280A00013F575 /* conv2d_33.w_0 in Resources */, - C2E681DF215280A00013F575 /* depthwise_conv2d_7.w_0 in Resources */, + FCFE9B6A2152858600DECA15 /* synset.txt in Resources */, + FCFE9B6B2152858600DECA15 /* banana.jpeg in Resources */, + FCFE9B6D2152858600DECA15 /* iphone.JPG in Resources */, + FCFE9B6C2152858600DECA15 /* hand.jpg in Resources */, FC039B8720E11C550081E9F8 /* Main.storyboard in Resources */, - C2E681CB215280A00013F575 /* conv2d_30.w_0 in Resources */, - C2E681D2215280A00013F575 /* conv2d_26.w_0 in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1364,10 +490,10 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 6K8JTBT3MF; + DEVELOPMENT_TEAM = A798K58VVL; ENABLE_BITCODE = NO; INFOPLIST_FILE = "paddle-mobile-demo/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1391,10 +517,10 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 6K8JTBT3MF; + DEVELOPMENT_TEAM = A798K58VVL; ENABLE_BITCODE = NO; INFOPLIST_FILE = "paddle-mobile-demo/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/Base.lproj/Main.storyboard b/metal/paddle-mobile-demo/paddle-mobile-demo/Base.lproj/Main.storyboard index 99c502671b..d72694fdac 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/Base.lproj/Main.storyboard +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ - + @@ -303,7 +303,7 @@ - + diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/MultiPredictViewController.swift b/metal/paddle-mobile-demo/paddle-mobile-demo/MultiPredictViewController.swift index 6224322e33..e61faca1db 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/MultiPredictViewController.swift +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/MultiPredictViewController.swift @@ -20,12 +20,6 @@ class MultiPredictViewController: UIViewController { let queue2 = MetalHelper.shared.device.makeCommandQueue() runner2 = Runner.init(inNet: genet, commandQueue: MetalHelper.shared.queue, inPlatform: .GPU) - - - - - - } @IBAction func predictAct(_ sender: Any) { diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/VideoCapture/VideoCapture.swift b/metal/paddle-mobile-demo/paddle-mobile-demo/VideoCapture/VideoCapture.swift index 5bbd33927a..c235ed2f03 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/VideoCapture/VideoCapture.swift +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/VideoCapture/VideoCapture.swift @@ -169,6 +169,8 @@ public class VideoCapture: NSObject { } } + +@available(iOS 10.0, *) extension VideoCapture: AVCaptureVideoDataOutputSampleBufferDelegate { public func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) { // Because lowering the capture device's FPS looks ugly in the preview, @@ -191,6 +193,7 @@ extension VideoCapture: AVCaptureVideoDataOutputSampleBufferDelegate { } } +@available(iOS 10.0, *) extension VideoCapture: AVCapturePhotoCaptureDelegate { public func photoOutput(_ captureOutput: AVCapturePhotoOutput, didFinishProcessingPhoto photoSampleBuffer: CMSampleBuffer?, diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift b/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift index 006bfa7470..5c8d63c2de 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift @@ -50,7 +50,7 @@ class ViewController: UIViewController { @IBOutlet weak var modelPickerView: UIPickerView! @IBOutlet weak var threadPickerView: UIPickerView! @IBOutlet weak var videoView: UIView! - var videoCapture: VideoCapture! +// var videoCapture: VideoCapture! var selectImage: UIImage? var inputPointer: UnsafeMutablePointer? @@ -106,6 +106,12 @@ class ViewController: UIViewController { return } +// for _ in 0..<10{ +// runner.predict(texture: inTexture) { (success, resultHolder) in +// resultHolder?.releasePointer() +// } +// } + let startDate = Date.init() for i in 0.. originTexture.tensorDim = Dim.init(inDim: [originTexture.tensorDim[1] / 7, originTexture.tensorDim[0] * 7]) - + originTexture.dim = Dim.init(inDim: [1, 1, originTexture.dim[3] / 7, originTexture.dim[2] * 7]) - + originTexture.padToFourDim = Dim.init(inDim: [1, 1, originTexture.padToFourDim[3] / 7, originTexture.padToFourDim[2] * 7]) - + program.scope[output] = originTexture - + if i == 99 { opDesc.attrs["axis"] = 0 } else { opDesc.attrs["shape"] = originTexture.tensorDim.dims.map { Int32($0) } } } - + for i in [58, 59, 88, 89, 95, 96, 68, 69, 78, 79] { let opDesc = program.programDesc.blocks[0].ops[i] let output = opDesc.outputs["Out"]!.first! let v = program.scope[output]! - - + + let originTexture = v as! Texture originTexture.tensorDim = Dim.init(inDim: [originTexture.tensorDim[1], originTexture.tensorDim[2]]) opDesc.attrs["shape"] = originTexture.tensorDim.dims.map { Int32($0) } } - + for i in [60, 101, 90, 97, 70, 80] { let opDesc = program.programDesc.blocks[0].ops[i] let output = opDesc.outputs["Out"]!.first! @@ -124,7 +124,7 @@ public class MobileNet_ssd_AR: Net{ originTexture.tensorDim = Dim.init(inDim: [originTexture.tensorDim[1], originTexture.tensorDim[2]]) opDesc.attrs["axis"] = (opDesc.attrs["axis"]! as! Int) - 1 } - + for i in [102] { let opDesc = program.programDesc.blocks[0].ops[i] for output in opDesc.outputs["Out"]! { diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Base/OpCreator.swift b/metal/paddle-mobile/paddle-mobile/Operators/Base/OpCreator.swift index af7dc47df2..9806042e9e 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/Base/OpCreator.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/Base/OpCreator.swift @@ -65,7 +65,9 @@ class OpCreator { gSplit : SplitOp

.creat, gShape : ShapeOp

.creat, gFlatten : FlattenOp

.creat, - gConvAddPreluType : ConvAddPreluOp

.creat] + gConvAddPreluType : ConvAddPreluOp

.creat, + gConvAddAddPreluType : ConvAddAddPreluOp

.creat, + gElementwiseAddPreluType: ElementwiseAddPreluOp

.creat] private init(){} } diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift b/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift index 01b6692c6e..40698da5ec 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift @@ -157,6 +157,9 @@ let gSplit = "split" let gShape = "shape" let gFlatten = "flatten" let gConvAddPreluType = "conv_add_prelu" +let gConvAddAddPreluType = "conv_add_add_prelu" +let gElementwiseAddPreluType = "elementwise_add_prelu" + let opInfos = [gConvType : (inputs: ["Input"], outputs: ["Output"]), gBatchNormType : (inputs: ["X"], outputs: ["Y"]), @@ -183,6 +186,7 @@ let opInfos = [gConvType : (inputs: ["Input"], outputs: ["Out gSplit : (inputs: ["X"], outputs: ["Out"]), gShape : (inputs: ["Input"], outputs: ["Out"]), gFlatten : (inputs: ["X"], outputs: ["Out"]), - gConvAddPreluType : (inputs: ["Input"], outputs: ["Out"]) - + gConvAddPreluType : (inputs: ["Input"], outputs: ["Out"]), + gConvAddAddPreluType : (inputs: ["Input"], outputs: ["Out"]), + gElementwiseAddPreluType : (inputs: ["X"], outputs: ["Out"]) ] diff --git a/metal/paddle-mobile/paddle-mobile/Operators/ConvAddAddPreluOp.swift b/metal/paddle-mobile/paddle-mobile/Operators/ConvAddAddPreluOp.swift new file mode 100644 index 0000000000..e5bded65a1 --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Operators/ConvAddAddPreluOp.swift @@ -0,0 +1,108 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +import Foundation + +class ConvAddAddPreluParam: OpParam { + typealias ParamPrecisionType = P + required init(opDesc: OpDesc, inScope: Scope) throws { + do { + filter = try ConvAddAddPreluParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope) + input = try ConvAddAddPreluParam.input(inputs: opDesc.inputs, from: inScope) + output = try ConvAddAddPreluParam.outputOut(outputs: opDesc.outputs, from: inScope) + stride = try ConvAddAddPreluParam.getAttr(key: "strides", attrs: opDesc.attrs) + paddings = try ConvAddAddPreluParam.getAttr(key: "paddings", attrs: opDesc.attrs) + dilations = try ConvAddAddPreluParam.getAttr(key: "dilations", attrs: opDesc.attrs) + groups = try ConvAddAddPreluParam.getAttr(key: "groups", attrs: opDesc.attrs) + alpha = try ConvAddAddPreluParam.paramInputAlpha(inputs: opDesc.paraInputs, from: inScope) + mode = try ConvAddAddPreluParam.getAttr(key: "mode", attrs: opDesc.attrs) + y = try ConvAddAddPreluParam.inputY(inputs: opDesc.paraInputs, from: inScope) + } catch let error { + throw error + } + } + + let input: Texture

+ let y: Tensor + let filter: Tensor + let mode: String + let alpha: Tensor

+ var output: Texture

+ let stride: [Int32] + let paddings: [Int32] + let dilations: [Int32] + let groups: Int +} + +class ConvAddAddPreluOp: Operator, ConvAddAddPreluParam

>, Runable, Creator, InferShaperable, Fusion{ + typealias OpType = ConvAddAddPreluOp

+ + static func fusionNode() -> Node { + let beginNode = Node.init(inType: gConvType) + _ = beginNode + --> Node.init(inType: gElementwiseAddType) --> Node.init(inType: gElementwiseAddType) --> Node.init(inType: gPreluType) + return beginNode + } + + static func change() -> [String : [(from: String, to: String)]] { + return [:] + } + + static func fusionType() -> String { + return gConvAddAddPreluType + } + + static func needCheck() -> [(Int, String)] { + return [(2, "Y"), (2, "X")] + } + + + + func inferShape() { + let inDims = para.input.dim + let filterDim = para.filter.dim + let strides = para.stride + let paddings = para.paddings + let dilations = para.dilations + + var outDim = [inDims[0]] + for i in 0..: OpParam { + typealias ParamPrecisionType = P + required init(opDesc: OpDesc, inScope: Scope) throws { + do { + alpha = try ElementwiseAddPreluParam.paramInputAlpha(inputs: opDesc.paraInputs, from: inScope) + mode = try ElementwiseAddPreluParam.getAttr(key: "mode", attrs: opDesc.attrs) + inputX = try ElementwiseAddPreluParam.inputX(inputs: opDesc.inputs, from: inScope) + output = try ElementwiseAddPreluParam.outputOut(outputs: opDesc.outputs, from: inScope) + axis = try ElementwiseAddPreluParam.getAttr(key: "axis", attrs: opDesc.attrs) + } catch let error { + throw error + } + do { + inputY = try ElementwiseAddPreluParam.inputY(inputs: opDesc.paraInputs, from: inScope) + } catch _ { + let tensorY: Tensor

= try ElementwiseAddPreluParam.inputY(inputs: opDesc.paraInputs, from: inScope) + let device = inputX.metalTexture!.device + inputY = Texture.init(device: device, inDim: tensorY.dim) + let value: [P] = Array(UnsafeBufferPointer(start: tensorY.data.pointer, count: tensorY.dim.numel())) + inputY.metalTexture = device.tensor2texture(value: value, dim: tensorY.dim.dims, transpose: [0, 1, 2, 3], inComputePrecision: computePrecision) + } + + // required init(device: MTLDevice, param: ElementwiseAddParam

) { + // param.output.initTexture(device: device, inTranspose: param.inputX.transpose, computePrecision: computePrecision) + // if computePrecision == .Float32 { + // super.init(device: device, inFunctionName: "elementwise_add") + // } else if computePrecision == .Float16 { + // super.init(device: device, inFunctionName: "elementwise_add_half") + // } else { + // fatalError() + // } + // } + + var offset = axis + if axis == -1 { + offset = inputX.tensorDim.cout() - inputY.tensorDim.cout() + } + for i in 0..<(inputY.tensorDim.cout()) { + assert(inputX.tensorDim[offset + i] == inputY.tensorDim[i]) + } + } + + let mode: String + let alpha: Tensor

+ var inputX: Texture

+ var inputY: Texture

+ var output: Texture

+ var axis: Int +} + +class ElementwiseAddPreluOp: Operator, ElementwiseAddPreluParam

>, Runable, Creator, InferShaperable, Fusion{ + static func fusionNode() -> Node { + let beginNode = Node.init(inType: gElementwiseAddType) + _ = beginNode + --> Node.init(inType: gPreluType) + return beginNode + } + + static func change() -> [String : [(from: String, to: String)]] { + return [:] + } + + static func fusionType() -> String { + return gElementwiseAddPreluType + } + + typealias OpType = ElementwiseAddPreluOp

+ + func inferShape() { + // para.output.dim = para.input.dim + } + + func runImpl(device: MTLDevice, buffer: MTLCommandBuffer) throws { + do { + try kernel.compute(commandBuffer: buffer, param: para) + } catch let error { + throw error + } + } + + + + func delogOutput() { + print(" \(type) output: ") + print(para.output) + + let padToFourDim = para.output.padToFourDim + if para.output.transpose == [0, 1, 2, 3] { + let outputArray: [Float32] = para.output.metalTexture.realNHWC(dim: (n: padToFourDim[0], h: padToFourDim[1], w: padToFourDim[2], c: padToFourDim[3])) + print(outputArray.strideArray()) + } else if para.output.transpose == [0, 2, 3, 1] { + print(para.output.metalTexture.toTensor(dim: (n: para.output.tensorDim[0], c: para.output.tensorDim[1], h: para.output.tensorDim[2], w: para.output.tensorDim[3])).strideArray()) + } else { + print(" not implement") + } + } +} + + + + + + diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ConvAddAddPreluKernel.swift b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ConvAddAddPreluKernel.swift new file mode 100644 index 0000000000..dfd9a74291 --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ConvAddAddPreluKernel.swift @@ -0,0 +1,150 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +import Foundation + +class ConvAddAddPreluKernel: Kernel, Computable { + var metalParam: MetalConvParam! + required init(device: MTLDevice, param: ConvAddAddPreluParam

) { + param.output.initTexture(device: device, inTranspose: [0, 2, 3, 1], computePrecision: computePrecision) + param.filter.initBuffer(device: device, precision: computePrecision) + param.y.initBuffer(device: device, precision: computePrecision) + param.alpha.initBuffer(device: device, precision: computePrecision) + + if computePrecision == .Float16 { + if param.filter.width == 1 && param.filter.height == 1 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_1x1_prelu_channel_half") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_1x1_prelu_element_half") + } else { + super.init(device: device, inFunctionName: "conv_add_1x1_prelu_other_half") + } + + } else if param.filter.channel == 1 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "depthwise_conv_add_3x3_prelu_channel_half") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "depthwise_conv_add_3x3_prelu_element_half") + } else { + super.init(device: device, inFunctionName: "depthwise_conv_add_3x3_prelu_other_half") + } + } else if param.filter.width == 3 && param.filter.height == 3 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_3x3_prelu_channel_half") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_3x3_prelu_element_half") + } else { + super.init(device: device, inFunctionName: "conv_add_3x3_prelu_other_half") + } + + } else if param.filter.width == 1 && param.filter.height == 5 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_5x1_prelu_channel_half") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_5x1_prelu_element_half") + } else { + super.init(device: device, inFunctionName: "conv_add_5x1_prelu_other_half") + } + } else if param.filter.width == 5 && param.filter.height == 1 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_1x5_prelu_channel_half") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_1x5_prelu_element_half") + } else { + super.init(device: device, inFunctionName: "conv_add_1x5_prelu_other_half") + } + } else { + fatalError(" unsupport yet ") + } + } else if computePrecision == .Float32 { + if param.filter.width == 1 && param.filter.height == 1 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_1x1_prelu_channel_float") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_1x1_prelu_element_float") + } else { + super.init(device: device, inFunctionName: "conv_add_1x1_prelu_other_float") + } + } else if param.filter.channel == 1 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "depthwise_conv_add_3x3_prelu_channel_float") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "depthwise_conv_add_3x3_prelu_element_float") + } else { + super.init(device: device, inFunctionName: "depthwise_conv_add_3x3_prelu_other_float") + } + } else if param.filter.width == 3 && param.filter.height == 3 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_3x3_prelu_channel_float") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_3x3_prelu_element_float") + } else { + super.init(device: device, inFunctionName: "conv_add_3x3_prelu_other_float") + } + + } else if param.filter.width == 1 && param.filter.height == 5 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_5x1_prelu_channel_float") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_5x1_prelu_element_float") + } else { + super.init(device: device, inFunctionName: "conv_add_5x1_prelu_other_float") + } + } else if param.filter.width == 5 && param.filter.height == 1 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "conv_add_1x5_prelu_channel_float") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "conv_add_1x5_prelu_element_float") + } else { + super.init(device: device, inFunctionName: "conv_add_1x5_prelu_other_float") + } + } else { + fatalError(" unsupport yet ") + } + } else { + fatalError() + } + + let offsetY = (Int(param.dilations[1]) * (param.filter.height - 1) + 1)/2 - Int(param.paddings[1]) + + let offsetX = (Int(param.dilations[0]) * (param.filter.width - 1) + 1)/2 - Int(param.paddings[0]) + + // print(" function: \(functionName)") + // print("offset x: \(offsetX)") + // print("offset y: \(offsetY)") + + let offsetZ = 0.0 + let inMetalParam = MetalConvParam.init(offsetX: Int16(offsetX), offsetY: Int16(offsetY), offsetZ: Int16(offsetZ), strideX: UInt16(param.stride[0]), strideY: UInt16(param.stride[1]), dilationX: UInt16(param.dilations[0]), dilationY: UInt16(param.dilations[1])) + // print("metal param: ") + // print(inMetalParam) + + metalParam = inMetalParam + } + + func compute(commandBuffer: MTLCommandBuffer, param: ConvAddAddPreluParam

) throws { + guard let encoder = commandBuffer.makeComputeCommandEncoder() else { + throw PaddleMobileError.predictError(message: " encode is nil") + } + + encoder.setTexture(param.input.metalTexture, index: 0) + encoder.setTexture(param.output.metalTexture, index: 1) + encoder.setBytes(&metalParam, length: MemoryLayout.size, index: 0) + encoder.setBuffer(param.filter.buffer, offset: 0, index: 1) + encoder.setBuffer(param.y.buffer, offset: 0, index: 2) + encoder.setBuffer(param.alpha.buffer, offset: 0, index: 3) + encoder.dispatch(computePipline: pipline, outTexture: param.output.metalTexture) + encoder.endEncoding() + } +} diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ElementwiseAddPreluKernel.swift b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ElementwiseAddPreluKernel.swift new file mode 100644 index 0000000000..91589864b0 --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ElementwiseAddPreluKernel.swift @@ -0,0 +1,79 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +import Foundation + + +class ElementwiseAddPreluKernel: Kernel, Computable { + var metalParam: ElementwiseAddMetalParam + required init(device: MTLDevice, param: ElementwiseAddPreluParam

) { + param.output.initTexture(device: device, inTranspose: param.inputX.transpose, computePrecision: computePrecision) + param.alpha.initBuffer(device: device, precision: computePrecision) + + metalParam = ElementwiseAddMetalParam.init() + + let xdim: [Int32] = (0..<4).map { Int32(param.inputX.dim[$0]) } + let ydim: [Int32] = (0..<4).map { Int32(param.inputY.dim[$0]) } + let xtrans: [Int32] = (0..<4).map { Int32(param.inputX.transpose[$0]) } + let ytrans: [Int32] = (0..<4).map { Int32(param.inputY.transpose[$0]) } + + metalParam.xdim = (xdim[0], xdim[1], xdim[2], xdim[3]) + metalParam.ydim = (ydim[0], ydim[1], ydim[2], ydim[3]) + metalParam.xtrans = (xtrans[0], xtrans[1], xtrans[2], xtrans[3]) + metalParam.ytrans = (ytrans[0], ytrans[1], ytrans[2], ytrans[3]) + if param.axis == -1 { + metalParam.axis = 4 - Int32(param.inputY.tensorDim.cout()) + } else { + metalParam.axis = 4 - Int32(param.inputX.tensorDim.cout()) + Int32(param.axis) + } + metalParam.ylen = Int32(param.inputY.tensorDim.cout()) + if (param.inputX.dim == param.inputY.dim) && (param.inputX.transpose == param.inputY.transpose) { + // print("===> elementwise_add fast!!!") + metalParam.fast = 1 + } + + if computePrecision == .Float32 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "elementwise_add_channel_float") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "elementwise_add_element_float") + } else { + super.init(device: device, inFunctionName: "elementwise_add_prelu_float") + } + } else if computePrecision == .Float16 { + if param.mode == "channel" { + super.init(device: device, inFunctionName: "elementwise_add_channel_half") + } else if param.mode == "element" { + super.init(device: device, inFunctionName: "elementwise_add_channel_half") + } else { + super.init(device: device, inFunctionName: "elementwise_add_channel_half") + } + } else { + fatalError() + } + } + + func compute(commandBuffer: MTLCommandBuffer, param: ElementwiseAddPreluParam

) throws { + guard let encoder = commandBuffer.makeComputeCommandEncoder() else { + throw PaddleMobileError.predictError(message: " encode is nil") + } + encoder.setTexture(param.inputX.metalTexture, index: 0) + encoder.setTexture(param.inputY.metalTexture, index: 1) + encoder.setTexture(param.output.metalTexture, index: 2) + encoder.setBytes(&metalParam, length: MemoryLayout.size, index: 0) + encoder.setBuffer(param.alpha.buffer, offset: 0, index: 1) + encoder.dispatch(computePipline: pipline, outTexture: param.output.metalTexture) + encoder.endEncoding() + } +} diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddMetal.metal b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddMetal.metal index 0159dcf3e0..274e416576 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddMetal.metal +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddMetal.metal @@ -40,7 +40,7 @@ kernel void conv_add_1x1(texture2d_array inTexture [[text uint input_arr_size = inTexture.get_array_size(); uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + float4 output = biase[gid.z]; float4 input; for (uint i = 0; i < input_arr_size; ++i) { @@ -57,7 +57,7 @@ kernel void conv_add_1x1(texture2d_array inTexture [[text float4 weight_w = weights[weithTo + 3 * kernelHXW * input_arr_size + i]; output.w += dot(input, weight_w); } - output = output + biase[gid.z]; +// output = output + biase[gid.z]; outTexture.write(output, gid.xy, gid.z); } @@ -85,7 +85,7 @@ kernel void conv_add_3x3(texture2d_array inTexture [[text uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + float4 output = biase[gid.z]; ushort dilation_x = param.dilationX; ushort dilation_y = param.dilationY; @@ -125,7 +125,7 @@ kernel void conv_add_3x3(texture2d_array inTexture [[text output.w += dot(input[j], weight_w); } } - output = output + biase[gid.z]; +// output = output + biase[gid.z]; outTexture.write(output, gid.xy, gid.z); } @@ -153,7 +153,7 @@ kernel void conv_add_5x1(texture2d_array inTexture [[text uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + float4 output = biase[gid.z]; ushort dilation_y = param.dilationY; float4 input[5]; @@ -183,7 +183,7 @@ kernel void conv_add_5x1(texture2d_array inTexture [[text output.w += dot(input[j], weight_w); } } - output = output + biase[gid.z]; +// output = output + biase[gid.z]; outTexture.write(output, gid.xy, gid.z); } @@ -212,7 +212,7 @@ kernel void conv_add_1x5(texture2d_array inTexture [[text uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + float4 output = biase[gid.z]; ushort dilation_x = param.dilationX; float4 input[5]; @@ -242,7 +242,7 @@ kernel void conv_add_1x5(texture2d_array inTexture [[text output.w += dot(input[j], weight_w); } } - output = output + biase[gid.z]; +// output = output + biase[gid.z]; outTexture.write(output, gid.xy, gid.z); } @@ -265,7 +265,7 @@ kernel void depthwise_conv_add_3x3(texture2d_array inText constexpr sampler sample(coord::pixel, filter::nearest, address::clamp_to_zero); const uint kernelHXW = 9; uint weithTo = gid.z * kernelHXW * 4; - float4 output = float4(0.0); + float4 output = biase[gid.z]; float4 inputs[9]; inputs[0] = inTexture.sample(sample, float2(posInInput.x - 1, posInInput.y - 1), output_slice); inputs[1] = inTexture.sample(sample, float2(posInInput.x, posInInput.y - 1), output_slice); @@ -283,7 +283,7 @@ kernel void depthwise_conv_add_3x3(texture2d_array inText output.z += input.z * weights[weithTo + 2 * kernelHXW + j]; output.w += input.w * weights[weithTo + 3 * kernelHXW + j]; } - output = output + biase[gid.z]; +// output = output + biase[gid.z]; outTexture.write(output, gid.xy, gid.z); } @@ -312,7 +312,7 @@ kernel void conv_add_1x1_half(texture2d_array inTexture [[ uint input_arr_size = inTexture.get_array_size(); uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + half4 output = biase[gid.z]; half4 input; for (uint i = 0; i < input_arr_size; ++i) { @@ -329,8 +329,8 @@ kernel void conv_add_1x1_half(texture2d_array inTexture [[ half4 weight_w = weights[weithTo + 3 * kernelHXW * input_arr_size + i]; output.w += dot(input, weight_w); } - output = output + float4(biase[gid.z]); - outTexture.write(half4(output), gid.xy, gid.z); +// output = output + float4(biase[gid.z]); + outTexture.write(output, gid.xy, gid.z); } kernel void conv_add_3x3_half(texture2d_array inTexture [[texture(0)]], @@ -354,7 +354,7 @@ kernel void conv_add_3x3_half(texture2d_array inTexture [[ uint input_arr_size = inTexture.get_array_size(); uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + half4 output = biase[gid.z]; ushort dilation_x = param.dilationX; ushort dilation_y = param.dilationY; @@ -384,8 +384,8 @@ kernel void conv_add_3x3_half(texture2d_array inTexture [[ output.w += dot(float4(input[j]), float4(weight_w)); } } - output = output + float4(biase[gid.z]); - outTexture.write(half4(output), gid.xy, gid.z); +// output = output + float4(biase[gid.z]); + outTexture.write(output, gid.xy, gid.z); } kernel void depthwise_conv_add_3x3_half(texture2d_array inTexture [[texture(0)]], @@ -406,7 +406,7 @@ kernel void depthwise_conv_add_3x3_half(texture2d_array in constexpr sampler sample(coord::pixel, filter::nearest, address::clamp_to_zero); const uint kernelHXW = 9; uint weithTo = gid.z * kernelHXW * 4; - float4 output = float4(0.0); + half4 output = biase[gid.z]; half4 inputs[9]; inputs[0] = inTexture.sample(sample, float2(posInInput.x - 1, posInInput.y - 1), output_slice); inputs[1] = inTexture.sample(sample, float2(posInInput.x, posInInput.y - 1), output_slice); @@ -419,13 +419,13 @@ kernel void depthwise_conv_add_3x3_half(texture2d_array in inputs[8] = inTexture.sample(sample, float2(posInInput.x + 1, posInInput.y + 1), output_slice); for (int j = 0; j < 9; ++j) { half4 input = inputs[j]; - output.x += float(input.x) * float(weights[weithTo + 0 * kernelHXW + j]); - output.y += float(input.y) * float(weights[weithTo + 1 * kernelHXW + j]); - output.z += float(input.z) * float(weights[weithTo + 2 * kernelHXW + j]); + output.x += input.x * weights[weithTo + 0 * kernelHXW + j]; + output.y += input.y * weights[weithTo + 1 * kernelHXW + j]; + output.z += input.z * weights[weithTo + 2 * kernelHXW + j]; output.w += input.w * weights[weithTo + 3 * kernelHXW + j]; } - output = output + float4(biase[gid.z]); - outTexture.write(half4(output), gid.xy, gid.z); +// output = output + float4(biase[gid.z]); + outTexture.write(output, gid.xy, gid.z); } @@ -453,7 +453,7 @@ kernel void conv_add_5x1_half(texture2d_array inTexture [[ uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + half4 output = biase[gid.z]; ushort dilation_y = param.dilationY; half4 input[5]; @@ -480,11 +480,11 @@ kernel void conv_add_5x1_half(texture2d_array inTexture [[ output.z += dot(input[j], weight_z); half4 weight_w = weights[weithTo + 3 * kernelHXW * input_arr_size + j * input_arr_size + i]; - output.w += dot(float4(input[j]), float4(weight_w)); + output.w += dot(input[j], weight_w); } } - output = output + float4(biase[gid.z]); - outTexture.write(half4(output), gid.xy, gid.z); +// output = output + float4(biase[gid.z]); + outTexture.write(output, gid.xy, gid.z); } @@ -512,7 +512,7 @@ kernel void conv_add_1x5_half(texture2d_array inTexture [[ uint weithTo = gid.z * kernelHXW * input_arr_size * 4; - float4 output = float4(0.0); + half4 output = biase[gid.z]; ushort dilation_x = param.dilationX; half4 input[5]; @@ -542,8 +542,8 @@ kernel void conv_add_1x5_half(texture2d_array inTexture [[ output.w += dot(input[j], weight_w); } } - output = output + float4(biase[gid.z]); - outTexture.write(half4(output), gid.xy, gid.z); +// output = output + float4(biase[gid.z]); + outTexture.write(output, gid.xy, gid.z); } diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddPrelu.inc.metal b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddPrelu.inc.metal index 2461d350bd..069daa20e8 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddPrelu.inc.metal +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ConvAddPrelu.inc.metal @@ -49,7 +49,7 @@ kernel void FUNC3_(conv_add_1x1, PRELU_TYPE, P)(texture2d_array +#include "Macro.metal" + +using namespace metal; + +kernel void FUNC3_(elementwise_add, PRELU_TYPE, P)(texture2d_array inputX [[texture(0)]], + texture2d_array inputY [[texture(1)]], + texture2d_array outTexture [[texture(2)]], + constant ElementwiseAddParam &pm [[buffer(0)]], +#ifdef PRELU_CHANNEL + const device VECTOR(P, 4) *alpha [[buffer(1)]], +#endif +#ifdef PRELU_ELEMENT + const device VECTOR(P, 4) *alpha [[buffer(1)]], +#endif +#ifdef PRELU_OTHER + const device P *alpha [[buffer(1)]], +#endif + uint3 gid [[thread_position_in_grid]]) { + if (gid.x >= outTexture.get_width() || + gid.y >= outTexture.get_height() || + gid.z >= outTexture.get_array_size()) return; + VECTOR(P, 4) rx, ry; + + if (pm.fast == 1) { + rx = inputX.read(gid.xy, gid.z); + ry = inputY.read(gid.xy, gid.z); + } else { + rx = inputX.read(gid.xy, gid.z); + int32_t x_xyzn[4] = {int32_t(gid.x), int32_t(gid.y), int32_t(gid.z), 0}, x_abcd[4], t_abcd[4]; + int32_t y_abcd[4] = {0, 0, 0, 0}, y_xyzn[4]; + int32_t xtrans[4] = {pm.xtrans[0], pm.xtrans[1], pm.xtrans[2], pm.xtrans[3]}; + int32_t ytrans[4] = {pm.ytrans[0], pm.ytrans[1], pm.ytrans[2], pm.ytrans[3]}; + int32_t yshift = 4 - pm.ylen - pm.axis; + for (int n = 0; n < 4; n++) { + x_xyzn[3] = n; + xyzn2abcd(pm.xdim[3], x_xyzn, x_abcd); + invtrans(xtrans, x_abcd, t_abcd); + for (int k = pm.axis; k < (pm.axis + pm.ylen); k++) { + y_abcd[yshift+k] = t_abcd[k]; + } + trans(ytrans, y_abcd, t_abcd); + abcd2xyzn(pm.ydim[3], t_abcd, y_xyzn); + ry[n] = inputY.read(uint2(y_xyzn[0], y_xyzn[1]), y_xyzn[2])[y_xyzn[3]]; + } + } + VECTOR(P, 4) output = rx + ry; + +#ifdef PRELU_CHANNEL + VECTOR(P, 4) alpha_value = alpha[gid.z]; + output.x = output.x > 0 ? output.x : (alpha_value.x * output.x); + output.y = output.y > 0 ? output.y : (alpha_value.y * output.y); + output.z = output.z > 0 ? output.z : (alpha_value.z * output.z); + output.w = output.w > 0 ? output.w : (alpha_value.w * output.w); +#endif +#ifdef PRELU_ELEMENT + int alpha_to = (gid.y * outTexture.get_width() + gid.x) * outTexture.get_array_size(); + VECTOR(P, 4) alpha_value = alpha[alpha_to + gid.z]; + output.x = output.x > 0 ? output.x : (alpha_value.x * output.x); + output.y = output.y > 0 ? output.y : (alpha_value.y * output.y); + output.z = output.z > 0 ? output.z : (alpha_value.z * output.z); + output.w = output.w > 0 ? output.w : (alpha_value.w * output.w); +#endif +#ifdef PRELU_OTHER + P alpha_value = alpha[0]; + output.x = output.x > 0 ? output.x : (alpha_value * output.x); + output.y = output.y > 0 ? output.y : (alpha_value * output.y); + output.z = output.z > 0 ? output.z : (alpha_value * output.z); + output.w = output.w > 0 ? output.w : (alpha_value * output.w); +#endif + + outTexture.write(output, gid.xy, gid.z); +} + +#endif diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ElementwiseAddPreluKernel.metal b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ElementwiseAddPreluKernel.metal new file mode 100644 index 0000000000..8fd1a9fdab --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/metal/ElementwiseAddPreluKernel.metal @@ -0,0 +1,75 @@ +/* Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#include +#include "Common.metal" +using namespace metal; + +struct ElementwiseAddParam { + int32_t fast; + int32_t axis; + int32_t ylen; + int32_t xdim[4]; + int32_t xtrans[4]; + int32_t ydim[4]; + int32_t ytrans[4]; +}; + +#define P float + +#define PRELU_CHANNEL prelu_channel +#define PRELU_TYPE channel +#include "ElementwiseAddPreluKernel.inc.metal" +#undef PRELU_TYPE +#undef PRELU_CHANNEL + +#define PRELU_ELEMENT element +#define PRELU_TYPE prelu_element +#include "ElementwiseAddPreluKernel.inc.metal" +#undef PRELU_TYPE +#undef PRELU_ELEMENT + +#define PRELU_OTHER other +#define PRELU_TYPE prelu_other +#include "ElementwiseAddPreluKernel.inc.metal" +#undef PRELU_TYPE +#undef PRELU_OTHER + +#undef P + +#define P half + +#define PRELU_CHANNEL channel +#define PRELU_TYPE channel +#include "ElementwiseAddPreluKernel.inc.metal" +#undef PRELU_TYPE +#undef PRELU_CHANNEL + +#define PRELU_ELEMENT element +#define PRELU_TYPE prelu_element +#include "ElementwiseAddPreluKernel.inc.metal" +#undef PRELU_TYPE +#undef PRELU_ELEMENT + +#define PRELU_OTHER other +#define PRELU_TYPE prelu_other +#include "ElementwiseAddPreluKernel.inc.metal" +#undef PRELU_TYPE +#undef PRELU_OTHER + +#undef P + + + + diff --git a/metal/paddle-mobile/paddle-mobile/Program/ProgramOptimize.swift b/metal/paddle-mobile/paddle-mobile/Program/ProgramOptimize.swift index f6320be4ce..b5952fdc05 100644 --- a/metal/paddle-mobile/paddle-mobile/Program/ProgramOptimize.swift +++ b/metal/paddle-mobile/paddle-mobile/Program/ProgramOptimize.swift @@ -69,6 +69,7 @@ class Node { func to(depth: UInt) -> Node { let beginNode = Node.init(inType: type) + beginNode.opDesc = opDesc to(depth: depth - 1, withNode: beginNode) return beginNode } @@ -130,6 +131,7 @@ class Node { for output in outputs { let node = Node.init(inType: output.type) + node.opDesc = output.opDesc withNode.outputs.append(node) output.to(depth: depth - 1, withNode: node) } @@ -182,10 +184,12 @@ extension Node: Equatable { class ProgramOptimize { // register fusion let fusionOps: [Fusion.Type] = [ConvAddBatchNormReluOp

.self, +// ConvAddAddPreluOp

.self, ConvAddPreluOp

.self, ConvAddOp

.self, ConvBNReluOp

.self, - DwConvBNReluOp

.self + DwConvBNReluOp

.self, +// ElementwiseAddPreluOp

.self ] func optimize(originProgramDesc: ProgramDesc) -> ProgramDesc { @@ -256,6 +260,15 @@ class ProgramOptimize { } } } + + let paramInputToChecks = checkNode.opDesc?.paraInputs[toCheck.1] ?? [] + for paramInputToCheck in paramInputToChecks { + if node.output[paramInputToCheck] == nil { + if relationshipMap[paramInputToCheck] == nil { + canFolder = false + } + } + } } } diff --git a/metal/paddle-mobile/paddle-mobile/framework/Executor.swift b/metal/paddle-mobile/paddle-mobile/framework/Executor.swift index 2d11530d4b..bdaf8d0973 100644 --- a/metal/paddle-mobile/paddle-mobile/framework/Executor.swift +++ b/metal/paddle-mobile/paddle-mobile/framework/Executor.swift @@ -83,7 +83,7 @@ public class Executor { for block in inProgram.programDesc.blocks { //block.ops.count for i in 0.. { // // } - let op = try OpCreator

.shared.creat(device: inDevice, opDesc: op, scope: inProgram.scope) + let op = try OpCreator

.shared.creat(device: inDevice, opDesc: opDesc, scope: inProgram.scope) ops.append(op) } catch let error { throw error diff --git a/metal/paddle-mobile/paddle-mobile/paddle_mobile.h b/metal/paddle-mobile/paddle-mobile/paddle_mobile.h index ae22b1854f..50b60e9fe6 100644 --- a/metal/paddle-mobile/paddle-mobile/paddle_mobile.h +++ b/metal/paddle-mobile/paddle-mobile/paddle_mobile.h @@ -14,7 +14,7 @@ #pragma once -#import "PaddleMobile.h" +#import "PaddleMobileCPU.h" #import "CPUCompute.h" #import "PaddleMobileGPU.h" #import -- GitLab