diff --git a/.gitignore b/.gitignore index 6575f4e9b755d899982f79748ded99b6d8b61a35..7ea986bd04538cf36023aa51a5468ca963c513fe 100644 --- a/.gitignore +++ b/.gitignore @@ -77,6 +77,7 @@ metal/Pods/ SwiftProtobuf.framework paddle-mobile.xcworkspace metal/models/ +metal/images/ 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 48462c65522327df357ccd9fef0dd6c56703c4aa..73d35ab5adc33a46d5ec104ffca8171b5c4f62ee 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/project.pbxproj +++ b/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/project.pbxproj @@ -13,8 +13,209 @@ FC039B8720E11C550081E9F8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FC039B8520E11C550081E9F8 /* Main.storyboard */; }; FC039B8920E11C560081E9F8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FC039B8820E11C560081E9F8 /* Assets.xcassets */; }; FC039B8C20E11C560081E9F8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FC039B8A20E11C560081E9F8 /* LaunchScreen.storyboard */; }; - FC9D037D20E22E4E000F735A /* params in Resources */ = {isa = PBXBuildFile; fileRef = FC9D037B20E22E4E000F735A /* params */; }; - FC9D037E20E22E4E000F735A /* model in Resources */ = {isa = PBXBuildFile; fileRef = FC9D037C20E22E4E000F735A /* model */; }; + FC0E2C1F20EDC030009C1FAC /* apple.jpg in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C1E20EDC030009C1FAC /* apple.jpg */; }; + FC0E2CED20EDC03B009C1FAC /* params in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2220EDC03B009C1FAC /* params */; }; + FC0E2CEE20EDC03B009C1FAC /* model in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2320EDC03B009C1FAC /* model */; }; + FC0E2CEF20EDC03B009C1FAC /* batch_norm_7.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2520EDC03B009C1FAC /* batch_norm_7.w_0 */; }; + FC0E2CF020EDC03B009C1FAC /* batch_norm_26.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2620EDC03B009C1FAC /* batch_norm_26.b_0 */; }; + FC0E2CF120EDC03B009C1FAC /* batch_norm_32.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2720EDC03B009C1FAC /* batch_norm_32.b_0 */; }; + FC0E2CF220EDC03B009C1FAC /* conv2d_16.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2820EDC03B009C1FAC /* conv2d_16.w_0 */; }; + FC0E2CF320EDC03B009C1FAC /* batch_norm_15.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2920EDC03B009C1FAC /* batch_norm_15.w_2 */; }; + FC0E2CF420EDC03B009C1FAC /* batch_norm_29.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2A20EDC03B009C1FAC /* batch_norm_29.w_2 */; }; + FC0E2CF520EDC03B009C1FAC /* batch_norm_4.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2B20EDC03B009C1FAC /* batch_norm_4.w_1 */; }; + FC0E2CF620EDC03B009C1FAC /* batch_norm_5.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2C20EDC03B009C1FAC /* batch_norm_5.w_1 */; }; + FC0E2CF720EDC03B009C1FAC /* batch_norm_28.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2D20EDC03B009C1FAC /* batch_norm_28.w_2 */; }; + FC0E2CF820EDC03B009C1FAC /* batch_norm_14.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2E20EDC03B009C1FAC /* batch_norm_14.w_2 */; }; + FC0E2CF920EDC03B009C1FAC /* conv2d_17.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C2F20EDC03B009C1FAC /* conv2d_17.w_0 */; }; + FC0E2CFA20EDC03B009C1FAC /* batch_norm_33.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3020EDC03B009C1FAC /* batch_norm_33.b_0 */; }; + FC0E2CFB20EDC03B009C1FAC /* batch_norm_27.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3120EDC03B009C1FAC /* batch_norm_27.b_0 */; }; + FC0E2CFC20EDC03B009C1FAC /* batch_norm_6.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3220EDC03B009C1FAC /* batch_norm_6.w_0 */; }; + FC0E2CFD20EDC03B009C1FAC /* batch_norm_4.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3320EDC03B009C1FAC /* batch_norm_4.w_0 */; }; + FC0E2CFE20EDC03B009C1FAC /* depthwise_conv2d_9.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3420EDC03B009C1FAC /* depthwise_conv2d_9.w_0 */; }; + FC0E2CFF20EDC03B009C1FAC /* batch_norm_31.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3520EDC03B009C1FAC /* batch_norm_31.b_0 */; }; + FC0E2D0020EDC03B009C1FAC /* conv2d_29.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3620EDC03B009C1FAC /* conv2d_29.w_0 */; }; + FC0E2D0120EDC03B009C1FAC /* batch_norm_25.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3720EDC03B009C1FAC /* batch_norm_25.b_0 */; }; + FC0E2D0220EDC03B009C1FAC /* conv2d_15.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3820EDC03B009C1FAC /* conv2d_15.w_0 */; }; + FC0E2D0320EDC03B009C1FAC /* batch_norm_19.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3920EDC03B009C1FAC /* batch_norm_19.b_0 */; }; + FC0E2D0420EDC03B009C1FAC /* batch_norm_16.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3A20EDC03B009C1FAC /* batch_norm_16.w_2 */; }; + FC0E2D0520EDC03B009C1FAC /* __model__ in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3B20EDC03B009C1FAC /* __model__ */; }; + FC0E2D0620EDC03B009C1FAC /* batch_norm_7.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3C20EDC03B009C1FAC /* batch_norm_7.w_1 */; }; + FC0E2D0720EDC03B009C1FAC /* batch_norm_6.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3D20EDC03B009C1FAC /* batch_norm_6.w_1 */; }; + FC0E2D0820EDC03B009C1FAC /* batch_norm_17.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3E20EDC03B009C1FAC /* batch_norm_17.w_2 */; }; + FC0E2D0920EDC03B009C1FAC /* conv2d_14.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C3F20EDC03B009C1FAC /* conv2d_14.w_0 */; }; + FC0E2D0A20EDC03B009C1FAC /* batch_norm_18.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4020EDC03B009C1FAC /* batch_norm_18.b_0 */; }; + FC0E2D0B20EDC03B009C1FAC /* conv2d_28.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4120EDC03B009C1FAC /* conv2d_28.w_0 */; }; + FC0E2D0C20EDC03B009C1FAC /* batch_norm_24.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4220EDC03B009C1FAC /* batch_norm_24.b_0 */; }; + FC0E2D0D20EDC03B009C1FAC /* batch_norm_30.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4320EDC03B009C1FAC /* batch_norm_30.b_0 */; }; + FC0E2D0E20EDC03B009C1FAC /* depthwise_conv2d_8.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4420EDC03B009C1FAC /* depthwise_conv2d_8.w_0 */; }; + FC0E2D0F20EDC03B009C1FAC /* batch_norm_5.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4520EDC03B009C1FAC /* batch_norm_5.w_0 */; }; + FC0E2D1020EDC03B009C1FAC /* batch_norm_1.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4620EDC03B009C1FAC /* batch_norm_1.w_0 */; }; + FC0E2D1120EDC03B009C1FAC /* conv2d_10.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4720EDC03B009C1FAC /* conv2d_10.w_0 */; }; + FC0E2D1220EDC03B009C1FAC /* batch_norm_34.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4820EDC03B009C1FAC /* batch_norm_34.b_0 */; }; + FC0E2D1320EDC03B009C1FAC /* batch_norm_20.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4920EDC03B009C1FAC /* batch_norm_20.b_0 */; }; + FC0E2D1420EDC03B009C1FAC /* batch_norm_13.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4A20EDC03B009C1FAC /* batch_norm_13.w_2 */; }; + FC0E2D1520EDC03B009C1FAC /* batch_norm_2.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4B20EDC03B009C1FAC /* batch_norm_2.w_1 */; }; + FC0E2D1620EDC03B009C1FAC /* batch_norm_3.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4C20EDC03B009C1FAC /* batch_norm_3.w_1 */; }; + FC0E2D1720EDC03B009C1FAC /* batch_norm_12.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4D20EDC03B009C1FAC /* batch_norm_12.w_2 */; }; + FC0E2D1820EDC03B009C1FAC /* batch_norm_21.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4E20EDC03B009C1FAC /* batch_norm_21.b_0 */; }; + FC0E2D1920EDC03B009C1FAC /* conv2d_11.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C4F20EDC03B009C1FAC /* conv2d_11.w_0 */; }; + FC0E2D1A20EDC03B009C1FAC /* batch_norm_0.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5020EDC03B009C1FAC /* batch_norm_0.w_0 */; }; + FC0E2D1B20EDC03B009C1FAC /* batch_norm_2.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5120EDC03B009C1FAC /* batch_norm_2.w_0 */; }; + FC0E2D1C20EDC03B009C1FAC /* conv2d_13.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5220EDC03B009C1FAC /* conv2d_13.w_0 */; }; + FC0E2D1D20EDC03B009C1FAC /* batch_norm_23.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5320EDC03B009C1FAC /* batch_norm_23.b_0 */; }; + FC0E2D1E20EDC03B009C1FAC /* batch_norm_10.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5420EDC03B009C1FAC /* batch_norm_10.w_2 */; }; + FC0E2D1F20EDC03B009C1FAC /* batch_norm_1.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5520EDC03B009C1FAC /* batch_norm_1.w_1 */; }; + FC0E2D2020EDC03B009C1FAC /* batch_norm_0.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5620EDC03B009C1FAC /* batch_norm_0.w_1 */; }; + FC0E2D2120EDC03B009C1FAC /* batch_norm_11.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5720EDC03B009C1FAC /* batch_norm_11.w_2 */; }; + FC0E2D2220EDC03B009C1FAC /* batch_norm_22.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5820EDC03B009C1FAC /* batch_norm_22.b_0 */; }; + FC0E2D2320EDC03B009C1FAC /* conv2d_12.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5920EDC03B009C1FAC /* conv2d_12.w_0 */; }; + FC0E2D2420EDC03B009C1FAC /* batch_norm_3.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5A20EDC03B009C1FAC /* batch_norm_3.w_0 */; }; + FC0E2D2520EDC03B009C1FAC /* batch_norm_21.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5B20EDC03B009C1FAC /* batch_norm_21.w_1 */; }; + FC0E2D2620EDC03B009C1FAC /* batch_norm_3.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5C20EDC03B009C1FAC /* batch_norm_3.b_0 */; }; + FC0E2D2720EDC03B009C1FAC /* batch_norm_22.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5D20EDC03B009C1FAC /* batch_norm_22.w_0 */; }; + FC0E2D2820EDC03B009C1FAC /* batch_norm_23.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5E20EDC03B009C1FAC /* batch_norm_23.w_0 */; }; + FC0E2D2920EDC03B009C1FAC /* batch_norm_2.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C5F20EDC03B009C1FAC /* batch_norm_2.b_0 */; }; + FC0E2D2A20EDC03B009C1FAC /* batch_norm_20.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6020EDC03B009C1FAC /* batch_norm_20.w_1 */; }; + FC0E2D2B20EDC03B009C1FAC /* batch_norm_34.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6120EDC03B009C1FAC /* batch_norm_34.w_1 */; }; + FC0E2D2C20EDC03B009C1FAC /* batch_norm_22.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6220EDC03B009C1FAC /* batch_norm_22.w_1 */; }; + FC0E2D2D20EDC03B009C1FAC /* batch_norm_0.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6320EDC03B009C1FAC /* batch_norm_0.b_0 */; }; + FC0E2D2E20EDC03B009C1FAC /* batch_norm_21.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6420EDC03B009C1FAC /* batch_norm_21.w_0 */; }; + FC0E2D2F20EDC03B009C1FAC /* batch_norm_20.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6520EDC03B009C1FAC /* batch_norm_20.w_0 */; }; + FC0E2D3020EDC03B009C1FAC /* batch_norm_34.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6620EDC03B009C1FAC /* batch_norm_34.w_0 */; }; + FC0E2D3120EDC03C009C1FAC /* batch_norm_1.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6720EDC03B009C1FAC /* batch_norm_1.b_0 */; }; + FC0E2D3220EDC03C009C1FAC /* batch_norm_23.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6820EDC03B009C1FAC /* batch_norm_23.w_1 */; }; + FC0E2D3320EDC03C009C1FAC /* batch_norm_27.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6920EDC03B009C1FAC /* batch_norm_27.w_1 */; }; + FC0E2D3420EDC03C009C1FAC /* batch_norm_33.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6A20EDC03B009C1FAC /* batch_norm_33.w_1 */; }; + FC0E2D3520EDC03C009C1FAC /* batch_norm_5.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6B20EDC03B009C1FAC /* batch_norm_5.b_0 */; }; + FC0E2D3620EDC03C009C1FAC /* batch_norm_18.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6C20EDC03B009C1FAC /* batch_norm_18.w_0 */; }; + FC0E2D3720EDC03C009C1FAC /* batch_norm_30.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6D20EDC03B009C1FAC /* batch_norm_30.w_0 */; }; + FC0E2D3820EDC03C009C1FAC /* batch_norm_24.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6E20EDC03B009C1FAC /* batch_norm_24.w_0 */; }; + FC0E2D3920EDC03C009C1FAC /* conv2d_28.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C6F20EDC03B009C1FAC /* conv2d_28.b_0 */; }; + FC0E2D3A20EDC03C009C1FAC /* batch_norm_25.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7020EDC03B009C1FAC /* batch_norm_25.w_0 */; }; + FC0E2D3B20EDC03C009C1FAC /* conv2d_29.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7120EDC03B009C1FAC /* conv2d_29.b_0 */; }; + FC0E2D3C20EDC03C009C1FAC /* batch_norm_31.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7220EDC03B009C1FAC /* batch_norm_31.w_0 */; }; + FC0E2D3D20EDC03C009C1FAC /* batch_norm_19.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7320EDC03B009C1FAC /* batch_norm_19.w_0 */; }; + FC0E2D3E20EDC03C009C1FAC /* batch_norm_4.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7420EDC03B009C1FAC /* batch_norm_4.b_0 */; }; + FC0E2D3F20EDC03C009C1FAC /* batch_norm_32.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7520EDC03B009C1FAC /* batch_norm_32.w_1 */; }; + FC0E2D4020EDC03C009C1FAC /* batch_norm_26.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7620EDC03B009C1FAC /* batch_norm_26.w_1 */; }; + FC0E2D4120EDC03C009C1FAC /* batch_norm_30.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7720EDC03B009C1FAC /* batch_norm_30.w_1 */; }; + FC0E2D4220EDC03C009C1FAC /* batch_norm_24.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7820EDC03B009C1FAC /* batch_norm_24.w_1 */; }; + FC0E2D4320EDC03C009C1FAC /* batch_norm_18.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7920EDC03B009C1FAC /* batch_norm_18.w_1 */; }; + FC0E2D4420EDC03C009C1FAC /* batch_norm_6.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7A20EDC03B009C1FAC /* batch_norm_6.b_0 */; }; + FC0E2D4520EDC03C009C1FAC /* batch_norm_9.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7B20EDC03B009C1FAC /* batch_norm_9.w_2 */; }; + FC0E2D4620EDC03C009C1FAC /* conv2d_8.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7C20EDC03B009C1FAC /* conv2d_8.w_0 */; }; + FC0E2D4720EDC03C009C1FAC /* batch_norm_27.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7D20EDC03B009C1FAC /* batch_norm_27.w_0 */; }; + FC0E2D4820EDC03C009C1FAC /* batch_norm_33.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7E20EDC03B009C1FAC /* batch_norm_33.w_0 */; }; + FC0E2D4920EDC03C009C1FAC /* batch_norm_32.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C7F20EDC03B009C1FAC /* batch_norm_32.w_0 */; }; + FC0E2D4A20EDC03C009C1FAC /* conv2d_9.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8020EDC03B009C1FAC /* conv2d_9.w_0 */; }; + FC0E2D4B20EDC03C009C1FAC /* batch_norm_26.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8120EDC03B009C1FAC /* batch_norm_26.w_0 */; }; + FC0E2D4C20EDC03C009C1FAC /* batch_norm_8.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8220EDC03B009C1FAC /* batch_norm_8.w_2 */; }; + FC0E2D4D20EDC03C009C1FAC /* batch_norm_7.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8320EDC03B009C1FAC /* batch_norm_7.b_0 */; }; + FC0E2D4E20EDC03C009C1FAC /* batch_norm_19.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8420EDC03B009C1FAC /* batch_norm_19.w_1 */; }; + FC0E2D4F20EDC03C009C1FAC /* batch_norm_25.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8520EDC03B009C1FAC /* batch_norm_25.w_1 */; }; + FC0E2D5020EDC03C009C1FAC /* batch_norm_31.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8620EDC03B009C1FAC /* batch_norm_31.w_1 */; }; + FC0E2D5120EDC03C009C1FAC /* batch_norm_28.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8720EDC03B009C1FAC /* batch_norm_28.w_1 */; }; + FC0E2D5220EDC03C009C1FAC /* batch_norm_14.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8820EDC03B009C1FAC /* batch_norm_14.w_1 */; }; + FC0E2D5320EDC03C009C1FAC /* batch_norm_5.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8920EDC03B009C1FAC /* batch_norm_5.w_2 */; }; + FC0E2D5420EDC03C009C1FAC /* batch_norm_17.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8A20EDC03B009C1FAC /* batch_norm_17.w_0 */; }; + FC0E2D5520EDC03C009C1FAC /* conv2d_33.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8B20EDC03B009C1FAC /* conv2d_33.b_0 */; }; + FC0E2D5620EDC03C009C1FAC /* conv2d_27.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8C20EDC03B009C1FAC /* conv2d_27.b_0 */; }; + FC0E2D5720EDC03C009C1FAC /* conv2d_4.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8D20EDC03B009C1FAC /* conv2d_4.w_0 */; }; + FC0E2D5820EDC03C009C1FAC /* conv2d_5.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8E20EDC03B009C1FAC /* conv2d_5.w_0 */; }; + FC0E2D5920EDC03C009C1FAC /* conv2d_26.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C8F20EDC03B009C1FAC /* conv2d_26.b_0 */; }; + FC0E2D5A20EDC03C009C1FAC /* conv2d_32.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9020EDC03B009C1FAC /* conv2d_32.b_0 */; }; + FC0E2D5B20EDC03C009C1FAC /* batch_norm_16.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9120EDC03B009C1FAC /* batch_norm_16.w_0 */; }; + FC0E2D5C20EDC03C009C1FAC /* batch_norm_4.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9220EDC03B009C1FAC /* batch_norm_4.w_2 */; }; + FC0E2D5D20EDC03C009C1FAC /* batch_norm_15.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9320EDC03B009C1FAC /* batch_norm_15.w_1 */; }; + FC0E2D5E20EDC03C009C1FAC /* batch_norm_29.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9420EDC03B009C1FAC /* batch_norm_29.w_1 */; }; + FC0E2D5F20EDC03C009C1FAC /* batch_norm_17.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9520EDC03B009C1FAC /* batch_norm_17.w_1 */; }; + FC0E2D6020EDC03C009C1FAC /* batch_norm_9.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9620EDC03B009C1FAC /* batch_norm_9.b_0 */; }; + FC0E2D6120EDC03C009C1FAC /* batch_norm_6.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9720EDC03B009C1FAC /* batch_norm_6.w_2 */; }; + FC0E2D6220EDC03C009C1FAC /* batch_norm_14.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9820EDC03B009C1FAC /* batch_norm_14.w_0 */; }; + FC0E2D6320EDC03C009C1FAC /* batch_norm_28.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9920EDC03B009C1FAC /* batch_norm_28.w_0 */; }; + FC0E2D6420EDC03C009C1FAC /* conv2d_24.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9A20EDC03B009C1FAC /* conv2d_24.b_0 */; }; + FC0E2D6520EDC03C009C1FAC /* conv2d_7.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9B20EDC03B009C1FAC /* conv2d_7.w_0 */; }; + FC0E2D6620EDC03C009C1FAC /* conv2d_30.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9C20EDC03B009C1FAC /* conv2d_30.b_0 */; }; + FC0E2D6720EDC03C009C1FAC /* conv2d_31.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9D20EDC03B009C1FAC /* conv2d_31.b_0 */; }; + FC0E2D6820EDC03C009C1FAC /* batch_norm_29.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9E20EDC03B009C1FAC /* batch_norm_29.w_0 */; }; + FC0E2D6920EDC03C009C1FAC /* conv2d_6.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2C9F20EDC03B009C1FAC /* conv2d_6.w_0 */; }; + FC0E2D6A20EDC03C009C1FAC /* conv2d_25.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA020EDC03B009C1FAC /* conv2d_25.b_0 */; }; + FC0E2D6B20EDC03C009C1FAC /* batch_norm_15.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA120EDC03B009C1FAC /* batch_norm_15.w_0 */; }; + FC0E2D6C20EDC03C009C1FAC /* batch_norm_7.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA220EDC03B009C1FAC /* batch_norm_7.w_2 */; }; + FC0E2D6D20EDC03C009C1FAC /* batch_norm_8.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA320EDC03B009C1FAC /* batch_norm_8.b_0 */; }; + FC0E2D6E20EDC03C009C1FAC /* batch_norm_16.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA420EDC03B009C1FAC /* batch_norm_16.w_1 */; }; + FC0E2D6F20EDC03C009C1FAC /* batch_norm_12.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA520EDC03B009C1FAC /* batch_norm_12.w_1 */; }; + FC0E2D7020EDC03C009C1FAC /* batch_norm_3.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA620EDC03B009C1FAC /* batch_norm_3.w_2 */; }; + FC0E2D7120EDC03C009C1FAC /* conv2d_2.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA720EDC03B009C1FAC /* conv2d_2.w_0 */; }; + FC0E2D7220EDC03C009C1FAC /* batch_norm_11.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA820EDC03B009C1FAC /* batch_norm_11.w_0 */; }; + FC0E2D7320EDC03C009C1FAC /* batch_norm_10.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CA920EDC03B009C1FAC /* batch_norm_10.w_0 */; }; + FC0E2D7420EDC03C009C1FAC /* conv2d_3.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CAA20EDC03B009C1FAC /* conv2d_3.w_0 */; }; + FC0E2D7520EDC03C009C1FAC /* batch_norm_2.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CAB20EDC03B009C1FAC /* batch_norm_2.w_2 */; }; + FC0E2D7620EDC03C009C1FAC /* depthwise_conv2d_12.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CAC20EDC03B009C1FAC /* depthwise_conv2d_12.w_0 */; }; + FC0E2D7720EDC03C009C1FAC /* batch_norm_13.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CAD20EDC03B009C1FAC /* batch_norm_13.w_1 */; }; + FC0E2D7820EDC03C009C1FAC /* batch_norm_11.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CAE20EDC03B009C1FAC /* batch_norm_11.w_1 */; }; + FC0E2D7920EDC03C009C1FAC /* depthwise_conv2d_10.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CAF20EDC03B009C1FAC /* depthwise_conv2d_10.w_0 */; }; + FC0E2D7A20EDC03C009C1FAC /* batch_norm_0.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB020EDC03B009C1FAC /* batch_norm_0.w_2 */; }; + FC0E2D7B20EDC03C009C1FAC /* conv2d_22.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB120EDC03B009C1FAC /* conv2d_22.b_0 */; }; + FC0E2D7C20EDC03C009C1FAC /* conv2d_1.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB220EDC03B009C1FAC /* conv2d_1.w_0 */; }; + FC0E2D7D20EDC03C009C1FAC /* batch_norm_12.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB320EDC03B009C1FAC /* batch_norm_12.w_0 */; }; + FC0E2D7E20EDC03C009C1FAC /* batch_norm_13.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB420EDC03B009C1FAC /* batch_norm_13.w_0 */; }; + FC0E2D7F20EDC03C009C1FAC /* conv2d_0.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB520EDC03B009C1FAC /* conv2d_0.w_0 */; }; + FC0E2D8020EDC03C009C1FAC /* conv2d_23.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB620EDC03B009C1FAC /* conv2d_23.b_0 */; }; + FC0E2D8120EDC03C009C1FAC /* batch_norm_1.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB720EDC03B009C1FAC /* batch_norm_1.w_2 */; }; + FC0E2D8220EDC03C009C1FAC /* batch_norm_10.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB820EDC03B009C1FAC /* batch_norm_10.w_1 */; }; + FC0E2D8320EDC03C009C1FAC /* depthwise_conv2d_11.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CB920EDC03B009C1FAC /* depthwise_conv2d_11.w_0 */; }; + FC0E2D8420EDC03C009C1FAC /* depthwise_conv2d_3.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CBA20EDC03B009C1FAC /* depthwise_conv2d_3.w_0 */; }; + FC0E2D8520EDC03C009C1FAC /* batch_norm_13.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CBB20EDC03B009C1FAC /* batch_norm_13.b_0 */; }; + FC0E2D8620EDC03C009C1FAC /* conv2d_23.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CBC20EDC03B009C1FAC /* conv2d_23.w_0 */; }; + FC0E2D8720EDC03C009C1FAC /* batch_norm_20.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CBD20EDC03B009C1FAC /* batch_norm_20.w_2 */; }; + FC0E2D8820EDC03C009C1FAC /* batch_norm_34.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CBE20EDC03B009C1FAC /* batch_norm_34.w_2 */; }; + FC0E2D8920EDC03C009C1FAC /* batch_norm_21.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CBF20EDC03B009C1FAC /* batch_norm_21.w_2 */; }; + FC0E2D8A20EDC03C009C1FAC /* conv2d_22.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC020EDC03B009C1FAC /* conv2d_22.w_0 */; }; + FC0E2D8B20EDC03C009C1FAC /* batch_norm_12.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC120EDC03B009C1FAC /* batch_norm_12.b_0 */; }; + FC0E2D8C20EDC03C009C1FAC /* depthwise_conv2d_2.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC220EDC03B009C1FAC /* depthwise_conv2d_2.w_0 */; }; + FC0E2D8D20EDC03C009C1FAC /* depthwise_conv2d_0.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC320EDC03B009C1FAC /* depthwise_conv2d_0.w_0 */; }; + FC0E2D8E20EDC03C009C1FAC /* batch_norm_10.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC420EDC03B009C1FAC /* batch_norm_10.b_0 */; }; + FC0E2D8F20EDC03C009C1FAC /* conv2d_20.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC520EDC03B009C1FAC /* conv2d_20.w_0 */; }; + FC0E2D9020EDC03C009C1FAC /* batch_norm_23.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC620EDC03B009C1FAC /* batch_norm_23.w_2 */; }; + FC0E2D9120EDC03C009C1FAC /* batch_norm_22.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC720EDC03B009C1FAC /* batch_norm_22.w_2 */; }; + FC0E2D9220EDC03C009C1FAC /* conv2d_21.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC820EDC03B009C1FAC /* conv2d_21.w_0 */; }; + FC0E2D9320EDC03C009C1FAC /* batch_norm_11.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CC920EDC03B009C1FAC /* batch_norm_11.b_0 */; }; + FC0E2D9420EDC03C009C1FAC /* depthwise_conv2d_1.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CCA20EDC03B009C1FAC /* depthwise_conv2d_1.w_0 */; }; + FC0E2D9520EDC03C009C1FAC /* depthwise_conv2d_5.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CCB20EDC03B009C1FAC /* depthwise_conv2d_5.w_0 */; }; + FC0E2D9620EDC03C009C1FAC /* batch_norm_8.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CCC20EDC03B009C1FAC /* batch_norm_8.w_0 */; }; + FC0E2D9720EDC03C009C1FAC /* conv2d_25.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CCD20EDC03B009C1FAC /* conv2d_25.w_0 */; }; + FC0E2D9820EDC03C009C1FAC /* batch_norm_29.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CCE20EDC03B009C1FAC /* batch_norm_29.b_0 */; }; + FC0E2D9920EDC03C009C1FAC /* conv2d_31.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CCF20EDC03B009C1FAC /* conv2d_31.w_0 */; }; + FC0E2D9A20EDC03C009C1FAC /* conv2d_19.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD020EDC03B009C1FAC /* conv2d_19.w_0 */; }; + FC0E2D9B20EDC03C009C1FAC /* batch_norm_15.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD120EDC03B009C1FAC /* batch_norm_15.b_0 */; }; + FC0E2D9C20EDC03C009C1FAC /* batch_norm_32.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD220EDC03B009C1FAC /* batch_norm_32.w_2 */; }; + FC0E2D9D20EDC03C009C1FAC /* batch_norm_26.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD320EDC03B009C1FAC /* batch_norm_26.w_2 */; }; + FC0E2D9E20EDC03C009C1FAC /* batch_norm_27.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD420EDC03B009C1FAC /* batch_norm_27.w_2 */; }; + FC0E2D9F20EDC03C009C1FAC /* batch_norm_33.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD520EDC03B009C1FAC /* batch_norm_33.w_2 */; }; + FC0E2DA020EDC03C009C1FAC /* conv2d_18.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD620EDC03B009C1FAC /* conv2d_18.w_0 */; }; + FC0E2DA120EDC03C009C1FAC /* batch_norm_14.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD720EDC03B009C1FAC /* batch_norm_14.b_0 */; }; + FC0E2DA220EDC03C009C1FAC /* conv2d_30.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD820EDC03B009C1FAC /* conv2d_30.w_0 */; }; + FC0E2DA320EDC03C009C1FAC /* conv2d_24.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CD920EDC03B009C1FAC /* conv2d_24.w_0 */; }; + FC0E2DA420EDC03C009C1FAC /* batch_norm_28.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CDA20EDC03B009C1FAC /* batch_norm_28.b_0 */; }; + FC0E2DA520EDC03C009C1FAC /* batch_norm_9.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CDB20EDC03B009C1FAC /* batch_norm_9.w_0 */; }; + FC0E2DA620EDC03C009C1FAC /* depthwise_conv2d_4.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CDC20EDC03B009C1FAC /* depthwise_conv2d_4.w_0 */; }; + FC0E2DA720EDC03C009C1FAC /* depthwise_conv2d_6.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CDD20EDC03B009C1FAC /* depthwise_conv2d_6.w_0 */; }; + FC0E2DA820EDC03C009C1FAC /* conv2d_32.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CDE20EDC03B009C1FAC /* conv2d_32.w_0 */; }; + FC0E2DA920EDC03C009C1FAC /* conv2d_26.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CDF20EDC03B009C1FAC /* conv2d_26.w_0 */; }; + FC0E2DAA20EDC03C009C1FAC /* batch_norm_16.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE020EDC03B009C1FAC /* batch_norm_16.b_0 */; }; + FC0E2DAB20EDC03C009C1FAC /* batch_norm_19.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE120EDC03B009C1FAC /* batch_norm_19.w_2 */; }; + FC0E2DAC20EDC03C009C1FAC /* batch_norm_25.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE220EDC03B009C1FAC /* batch_norm_25.w_2 */; }; + FC0E2DAD20EDC03C009C1FAC /* batch_norm_31.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE320EDC03B009C1FAC /* batch_norm_31.w_2 */; }; + FC0E2DAE20EDC03C009C1FAC /* batch_norm_8.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE420EDC03B009C1FAC /* batch_norm_8.w_1 */; }; + FC0E2DAF20EDC03C009C1FAC /* batch_norm_9.w_1 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE520EDC03B009C1FAC /* batch_norm_9.w_1 */; }; + FC0E2DB020EDC03C009C1FAC /* batch_norm_30.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE620EDC03B009C1FAC /* batch_norm_30.w_2 */; }; + FC0E2DB120EDC03C009C1FAC /* batch_norm_24.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE720EDC03B009C1FAC /* batch_norm_24.w_2 */; }; + FC0E2DB220EDC03C009C1FAC /* batch_norm_18.w_2 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE820EDC03B009C1FAC /* batch_norm_18.w_2 */; }; + FC0E2DB320EDC03C009C1FAC /* batch_norm_17.b_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CE920EDC03B009C1FAC /* batch_norm_17.b_0 */; }; + FC0E2DB420EDC03C009C1FAC /* conv2d_27.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CEA20EDC03B009C1FAC /* conv2d_27.w_0 */; }; + FC0E2DB520EDC03C009C1FAC /* conv2d_33.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CEB20EDC03B009C1FAC /* conv2d_33.w_0 */; }; + FC0E2DB620EDC03C009C1FAC /* depthwise_conv2d_7.w_0 in Resources */ = {isa = PBXBuildFile; fileRef = FC0E2CEC20EDC03B009C1FAC /* depthwise_conv2d_7.w_0 */; }; 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, ); }; }; /* End PBXBuildFile section */ @@ -44,8 +245,209 @@ FC039B8820E11C560081E9F8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; FC039B8B20E11C560081E9F8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; FC039B8D20E11C560081E9F8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FC9D037B20E22E4E000F735A /* params */ = {isa = PBXFileReference; lastKnownFileType = file; path = params; sourceTree = ""; }; - FC9D037C20E22E4E000F735A /* model */ = {isa = PBXFileReference; lastKnownFileType = file; path = model; sourceTree = ""; }; + FC0E2C1E20EDC030009C1FAC /* apple.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = apple.jpg; sourceTree = ""; }; + FC0E2C2220EDC03B009C1FAC /* params */ = {isa = PBXFileReference; lastKnownFileType = file; path = params; sourceTree = ""; }; + FC0E2C2320EDC03B009C1FAC /* model */ = {isa = PBXFileReference; lastKnownFileType = file; path = model; sourceTree = ""; }; + FC0E2C2520EDC03B009C1FAC /* batch_norm_7.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.w_0; sourceTree = ""; }; + FC0E2C2620EDC03B009C1FAC /* batch_norm_26.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.b_0; sourceTree = ""; }; + FC0E2C2720EDC03B009C1FAC /* batch_norm_32.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.b_0; sourceTree = ""; }; + FC0E2C2820EDC03B009C1FAC /* conv2d_16.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_16.w_0; sourceTree = ""; }; + FC0E2C2920EDC03B009C1FAC /* batch_norm_15.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.w_2; sourceTree = ""; }; + FC0E2C2A20EDC03B009C1FAC /* batch_norm_29.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.w_2; sourceTree = ""; }; + FC0E2C2B20EDC03B009C1FAC /* batch_norm_4.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.w_1; sourceTree = ""; }; + FC0E2C2C20EDC03B009C1FAC /* batch_norm_5.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.w_1; sourceTree = ""; }; + FC0E2C2D20EDC03B009C1FAC /* batch_norm_28.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.w_2; sourceTree = ""; }; + FC0E2C2E20EDC03B009C1FAC /* batch_norm_14.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.w_2; sourceTree = ""; }; + FC0E2C2F20EDC03B009C1FAC /* conv2d_17.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_17.w_0; sourceTree = ""; }; + FC0E2C3020EDC03B009C1FAC /* batch_norm_33.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.b_0; sourceTree = ""; }; + FC0E2C3120EDC03B009C1FAC /* batch_norm_27.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.b_0; sourceTree = ""; }; + FC0E2C3220EDC03B009C1FAC /* batch_norm_6.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.w_0; sourceTree = ""; }; + FC0E2C3320EDC03B009C1FAC /* batch_norm_4.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.w_0; sourceTree = ""; }; + FC0E2C3420EDC03B009C1FAC /* depthwise_conv2d_9.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_9.w_0; sourceTree = ""; }; + FC0E2C3520EDC03B009C1FAC /* batch_norm_31.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.b_0; sourceTree = ""; }; + FC0E2C3620EDC03B009C1FAC /* conv2d_29.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_29.w_0; sourceTree = ""; }; + FC0E2C3720EDC03B009C1FAC /* batch_norm_25.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.b_0; sourceTree = ""; }; + FC0E2C3820EDC03B009C1FAC /* conv2d_15.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_15.w_0; sourceTree = ""; }; + FC0E2C3920EDC03B009C1FAC /* batch_norm_19.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.b_0; sourceTree = ""; }; + FC0E2C3A20EDC03B009C1FAC /* batch_norm_16.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.w_2; sourceTree = ""; }; + FC0E2C3B20EDC03B009C1FAC /* __model__ */ = {isa = PBXFileReference; lastKnownFileType = file; path = __model__; sourceTree = ""; }; + FC0E2C3C20EDC03B009C1FAC /* batch_norm_7.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.w_1; sourceTree = ""; }; + FC0E2C3D20EDC03B009C1FAC /* batch_norm_6.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.w_1; sourceTree = ""; }; + FC0E2C3E20EDC03B009C1FAC /* batch_norm_17.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.w_2; sourceTree = ""; }; + FC0E2C3F20EDC03B009C1FAC /* conv2d_14.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_14.w_0; sourceTree = ""; }; + FC0E2C4020EDC03B009C1FAC /* batch_norm_18.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.b_0; sourceTree = ""; }; + FC0E2C4120EDC03B009C1FAC /* conv2d_28.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_28.w_0; sourceTree = ""; }; + FC0E2C4220EDC03B009C1FAC /* batch_norm_24.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.b_0; sourceTree = ""; }; + FC0E2C4320EDC03B009C1FAC /* batch_norm_30.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.b_0; sourceTree = ""; }; + FC0E2C4420EDC03B009C1FAC /* depthwise_conv2d_8.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_8.w_0; sourceTree = ""; }; + FC0E2C4520EDC03B009C1FAC /* batch_norm_5.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.w_0; sourceTree = ""; }; + FC0E2C4620EDC03B009C1FAC /* batch_norm_1.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.w_0; sourceTree = ""; }; + FC0E2C4720EDC03B009C1FAC /* conv2d_10.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_10.w_0; sourceTree = ""; }; + FC0E2C4820EDC03B009C1FAC /* batch_norm_34.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.b_0; sourceTree = ""; }; + FC0E2C4920EDC03B009C1FAC /* batch_norm_20.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.b_0; sourceTree = ""; }; + FC0E2C4A20EDC03B009C1FAC /* batch_norm_13.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.w_2; sourceTree = ""; }; + FC0E2C4B20EDC03B009C1FAC /* batch_norm_2.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.w_1; sourceTree = ""; }; + FC0E2C4C20EDC03B009C1FAC /* batch_norm_3.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.w_1; sourceTree = ""; }; + FC0E2C4D20EDC03B009C1FAC /* batch_norm_12.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.w_2; sourceTree = ""; }; + FC0E2C4E20EDC03B009C1FAC /* batch_norm_21.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.b_0; sourceTree = ""; }; + FC0E2C4F20EDC03B009C1FAC /* conv2d_11.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_11.w_0; sourceTree = ""; }; + FC0E2C5020EDC03B009C1FAC /* batch_norm_0.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.w_0; sourceTree = ""; }; + FC0E2C5120EDC03B009C1FAC /* batch_norm_2.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.w_0; sourceTree = ""; }; + FC0E2C5220EDC03B009C1FAC /* conv2d_13.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_13.w_0; sourceTree = ""; }; + FC0E2C5320EDC03B009C1FAC /* batch_norm_23.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.b_0; sourceTree = ""; }; + FC0E2C5420EDC03B009C1FAC /* batch_norm_10.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.w_2; sourceTree = ""; }; + FC0E2C5520EDC03B009C1FAC /* batch_norm_1.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.w_1; sourceTree = ""; }; + FC0E2C5620EDC03B009C1FAC /* batch_norm_0.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.w_1; sourceTree = ""; }; + FC0E2C5720EDC03B009C1FAC /* batch_norm_11.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.w_2; sourceTree = ""; }; + FC0E2C5820EDC03B009C1FAC /* batch_norm_22.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.b_0; sourceTree = ""; }; + FC0E2C5920EDC03B009C1FAC /* conv2d_12.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_12.w_0; sourceTree = ""; }; + FC0E2C5A20EDC03B009C1FAC /* batch_norm_3.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.w_0; sourceTree = ""; }; + FC0E2C5B20EDC03B009C1FAC /* batch_norm_21.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.w_1; sourceTree = ""; }; + FC0E2C5C20EDC03B009C1FAC /* batch_norm_3.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.b_0; sourceTree = ""; }; + FC0E2C5D20EDC03B009C1FAC /* batch_norm_22.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.w_0; sourceTree = ""; }; + FC0E2C5E20EDC03B009C1FAC /* batch_norm_23.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.w_0; sourceTree = ""; }; + FC0E2C5F20EDC03B009C1FAC /* batch_norm_2.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.b_0; sourceTree = ""; }; + FC0E2C6020EDC03B009C1FAC /* batch_norm_20.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.w_1; sourceTree = ""; }; + FC0E2C6120EDC03B009C1FAC /* batch_norm_34.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.w_1; sourceTree = ""; }; + FC0E2C6220EDC03B009C1FAC /* batch_norm_22.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.w_1; sourceTree = ""; }; + FC0E2C6320EDC03B009C1FAC /* batch_norm_0.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.b_0; sourceTree = ""; }; + FC0E2C6420EDC03B009C1FAC /* batch_norm_21.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.w_0; sourceTree = ""; }; + FC0E2C6520EDC03B009C1FAC /* batch_norm_20.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.w_0; sourceTree = ""; }; + FC0E2C6620EDC03B009C1FAC /* batch_norm_34.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.w_0; sourceTree = ""; }; + FC0E2C6720EDC03B009C1FAC /* batch_norm_1.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.b_0; sourceTree = ""; }; + FC0E2C6820EDC03B009C1FAC /* batch_norm_23.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.w_1; sourceTree = ""; }; + FC0E2C6920EDC03B009C1FAC /* batch_norm_27.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.w_1; sourceTree = ""; }; + FC0E2C6A20EDC03B009C1FAC /* batch_norm_33.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.w_1; sourceTree = ""; }; + FC0E2C6B20EDC03B009C1FAC /* batch_norm_5.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.b_0; sourceTree = ""; }; + FC0E2C6C20EDC03B009C1FAC /* batch_norm_18.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.w_0; sourceTree = ""; }; + FC0E2C6D20EDC03B009C1FAC /* batch_norm_30.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.w_0; sourceTree = ""; }; + FC0E2C6E20EDC03B009C1FAC /* batch_norm_24.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.w_0; sourceTree = ""; }; + FC0E2C6F20EDC03B009C1FAC /* conv2d_28.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_28.b_0; sourceTree = ""; }; + FC0E2C7020EDC03B009C1FAC /* batch_norm_25.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.w_0; sourceTree = ""; }; + FC0E2C7120EDC03B009C1FAC /* conv2d_29.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_29.b_0; sourceTree = ""; }; + FC0E2C7220EDC03B009C1FAC /* batch_norm_31.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.w_0; sourceTree = ""; }; + FC0E2C7320EDC03B009C1FAC /* batch_norm_19.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.w_0; sourceTree = ""; }; + FC0E2C7420EDC03B009C1FAC /* batch_norm_4.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.b_0; sourceTree = ""; }; + FC0E2C7520EDC03B009C1FAC /* batch_norm_32.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.w_1; sourceTree = ""; }; + FC0E2C7620EDC03B009C1FAC /* batch_norm_26.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.w_1; sourceTree = ""; }; + FC0E2C7720EDC03B009C1FAC /* batch_norm_30.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.w_1; sourceTree = ""; }; + FC0E2C7820EDC03B009C1FAC /* batch_norm_24.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.w_1; sourceTree = ""; }; + FC0E2C7920EDC03B009C1FAC /* batch_norm_18.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.w_1; sourceTree = ""; }; + FC0E2C7A20EDC03B009C1FAC /* batch_norm_6.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.b_0; sourceTree = ""; }; + FC0E2C7B20EDC03B009C1FAC /* batch_norm_9.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.w_2; sourceTree = ""; }; + FC0E2C7C20EDC03B009C1FAC /* conv2d_8.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_8.w_0; sourceTree = ""; }; + FC0E2C7D20EDC03B009C1FAC /* batch_norm_27.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.w_0; sourceTree = ""; }; + FC0E2C7E20EDC03B009C1FAC /* batch_norm_33.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.w_0; sourceTree = ""; }; + FC0E2C7F20EDC03B009C1FAC /* batch_norm_32.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.w_0; sourceTree = ""; }; + FC0E2C8020EDC03B009C1FAC /* conv2d_9.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_9.w_0; sourceTree = ""; }; + FC0E2C8120EDC03B009C1FAC /* batch_norm_26.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.w_0; sourceTree = ""; }; + FC0E2C8220EDC03B009C1FAC /* batch_norm_8.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.w_2; sourceTree = ""; }; + FC0E2C8320EDC03B009C1FAC /* batch_norm_7.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.b_0; sourceTree = ""; }; + FC0E2C8420EDC03B009C1FAC /* batch_norm_19.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.w_1; sourceTree = ""; }; + FC0E2C8520EDC03B009C1FAC /* batch_norm_25.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.w_1; sourceTree = ""; }; + FC0E2C8620EDC03B009C1FAC /* batch_norm_31.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.w_1; sourceTree = ""; }; + FC0E2C8720EDC03B009C1FAC /* batch_norm_28.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.w_1; sourceTree = ""; }; + FC0E2C8820EDC03B009C1FAC /* batch_norm_14.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.w_1; sourceTree = ""; }; + FC0E2C8920EDC03B009C1FAC /* batch_norm_5.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_5.w_2; sourceTree = ""; }; + FC0E2C8A20EDC03B009C1FAC /* batch_norm_17.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.w_0; sourceTree = ""; }; + FC0E2C8B20EDC03B009C1FAC /* conv2d_33.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_33.b_0; sourceTree = ""; }; + FC0E2C8C20EDC03B009C1FAC /* conv2d_27.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_27.b_0; sourceTree = ""; }; + FC0E2C8D20EDC03B009C1FAC /* conv2d_4.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_4.w_0; sourceTree = ""; }; + FC0E2C8E20EDC03B009C1FAC /* conv2d_5.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_5.w_0; sourceTree = ""; }; + FC0E2C8F20EDC03B009C1FAC /* conv2d_26.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_26.b_0; sourceTree = ""; }; + FC0E2C9020EDC03B009C1FAC /* conv2d_32.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_32.b_0; sourceTree = ""; }; + FC0E2C9120EDC03B009C1FAC /* batch_norm_16.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.w_0; sourceTree = ""; }; + FC0E2C9220EDC03B009C1FAC /* batch_norm_4.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_4.w_2; sourceTree = ""; }; + FC0E2C9320EDC03B009C1FAC /* batch_norm_15.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.w_1; sourceTree = ""; }; + FC0E2C9420EDC03B009C1FAC /* batch_norm_29.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.w_1; sourceTree = ""; }; + FC0E2C9520EDC03B009C1FAC /* batch_norm_17.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.w_1; sourceTree = ""; }; + FC0E2C9620EDC03B009C1FAC /* batch_norm_9.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.b_0; sourceTree = ""; }; + FC0E2C9720EDC03B009C1FAC /* batch_norm_6.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_6.w_2; sourceTree = ""; }; + FC0E2C9820EDC03B009C1FAC /* batch_norm_14.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.w_0; sourceTree = ""; }; + FC0E2C9920EDC03B009C1FAC /* batch_norm_28.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.w_0; sourceTree = ""; }; + FC0E2C9A20EDC03B009C1FAC /* conv2d_24.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_24.b_0; sourceTree = ""; }; + FC0E2C9B20EDC03B009C1FAC /* conv2d_7.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_7.w_0; sourceTree = ""; }; + FC0E2C9C20EDC03B009C1FAC /* conv2d_30.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_30.b_0; sourceTree = ""; }; + FC0E2C9D20EDC03B009C1FAC /* conv2d_31.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_31.b_0; sourceTree = ""; }; + FC0E2C9E20EDC03B009C1FAC /* batch_norm_29.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.w_0; sourceTree = ""; }; + FC0E2C9F20EDC03B009C1FAC /* conv2d_6.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_6.w_0; sourceTree = ""; }; + FC0E2CA020EDC03B009C1FAC /* conv2d_25.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_25.b_0; sourceTree = ""; }; + FC0E2CA120EDC03B009C1FAC /* batch_norm_15.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.w_0; sourceTree = ""; }; + FC0E2CA220EDC03B009C1FAC /* batch_norm_7.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_7.w_2; sourceTree = ""; }; + FC0E2CA320EDC03B009C1FAC /* batch_norm_8.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.b_0; sourceTree = ""; }; + FC0E2CA420EDC03B009C1FAC /* batch_norm_16.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.w_1; sourceTree = ""; }; + FC0E2CA520EDC03B009C1FAC /* batch_norm_12.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.w_1; sourceTree = ""; }; + FC0E2CA620EDC03B009C1FAC /* batch_norm_3.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_3.w_2; sourceTree = ""; }; + FC0E2CA720EDC03B009C1FAC /* conv2d_2.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_2.w_0; sourceTree = ""; }; + FC0E2CA820EDC03B009C1FAC /* batch_norm_11.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.w_0; sourceTree = ""; }; + FC0E2CA920EDC03B009C1FAC /* batch_norm_10.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.w_0; sourceTree = ""; }; + FC0E2CAA20EDC03B009C1FAC /* conv2d_3.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_3.w_0; sourceTree = ""; }; + FC0E2CAB20EDC03B009C1FAC /* batch_norm_2.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_2.w_2; sourceTree = ""; }; + FC0E2CAC20EDC03B009C1FAC /* depthwise_conv2d_12.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_12.w_0; sourceTree = ""; }; + FC0E2CAD20EDC03B009C1FAC /* batch_norm_13.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.w_1; sourceTree = ""; }; + FC0E2CAE20EDC03B009C1FAC /* batch_norm_11.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.w_1; sourceTree = ""; }; + FC0E2CAF20EDC03B009C1FAC /* depthwise_conv2d_10.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_10.w_0; sourceTree = ""; }; + FC0E2CB020EDC03B009C1FAC /* batch_norm_0.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_0.w_2; sourceTree = ""; }; + FC0E2CB120EDC03B009C1FAC /* conv2d_22.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_22.b_0; sourceTree = ""; }; + FC0E2CB220EDC03B009C1FAC /* conv2d_1.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_1.w_0; sourceTree = ""; }; + FC0E2CB320EDC03B009C1FAC /* batch_norm_12.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.w_0; sourceTree = ""; }; + FC0E2CB420EDC03B009C1FAC /* batch_norm_13.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.w_0; sourceTree = ""; }; + FC0E2CB520EDC03B009C1FAC /* conv2d_0.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_0.w_0; sourceTree = ""; }; + FC0E2CB620EDC03B009C1FAC /* conv2d_23.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_23.b_0; sourceTree = ""; }; + FC0E2CB720EDC03B009C1FAC /* batch_norm_1.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_1.w_2; sourceTree = ""; }; + FC0E2CB820EDC03B009C1FAC /* batch_norm_10.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.w_1; sourceTree = ""; }; + FC0E2CB920EDC03B009C1FAC /* depthwise_conv2d_11.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_11.w_0; sourceTree = ""; }; + FC0E2CBA20EDC03B009C1FAC /* depthwise_conv2d_3.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_3.w_0; sourceTree = ""; }; + FC0E2CBB20EDC03B009C1FAC /* batch_norm_13.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_13.b_0; sourceTree = ""; }; + FC0E2CBC20EDC03B009C1FAC /* conv2d_23.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_23.w_0; sourceTree = ""; }; + FC0E2CBD20EDC03B009C1FAC /* batch_norm_20.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_20.w_2; sourceTree = ""; }; + FC0E2CBE20EDC03B009C1FAC /* batch_norm_34.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_34.w_2; sourceTree = ""; }; + FC0E2CBF20EDC03B009C1FAC /* batch_norm_21.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_21.w_2; sourceTree = ""; }; + FC0E2CC020EDC03B009C1FAC /* conv2d_22.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_22.w_0; sourceTree = ""; }; + FC0E2CC120EDC03B009C1FAC /* batch_norm_12.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_12.b_0; sourceTree = ""; }; + FC0E2CC220EDC03B009C1FAC /* depthwise_conv2d_2.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_2.w_0; sourceTree = ""; }; + FC0E2CC320EDC03B009C1FAC /* depthwise_conv2d_0.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_0.w_0; sourceTree = ""; }; + FC0E2CC420EDC03B009C1FAC /* batch_norm_10.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_10.b_0; sourceTree = ""; }; + FC0E2CC520EDC03B009C1FAC /* conv2d_20.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_20.w_0; sourceTree = ""; }; + FC0E2CC620EDC03B009C1FAC /* batch_norm_23.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_23.w_2; sourceTree = ""; }; + FC0E2CC720EDC03B009C1FAC /* batch_norm_22.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_22.w_2; sourceTree = ""; }; + FC0E2CC820EDC03B009C1FAC /* conv2d_21.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_21.w_0; sourceTree = ""; }; + FC0E2CC920EDC03B009C1FAC /* batch_norm_11.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_11.b_0; sourceTree = ""; }; + FC0E2CCA20EDC03B009C1FAC /* depthwise_conv2d_1.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_1.w_0; sourceTree = ""; }; + FC0E2CCB20EDC03B009C1FAC /* depthwise_conv2d_5.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_5.w_0; sourceTree = ""; }; + FC0E2CCC20EDC03B009C1FAC /* batch_norm_8.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.w_0; sourceTree = ""; }; + FC0E2CCD20EDC03B009C1FAC /* conv2d_25.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_25.w_0; sourceTree = ""; }; + FC0E2CCE20EDC03B009C1FAC /* batch_norm_29.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_29.b_0; sourceTree = ""; }; + FC0E2CCF20EDC03B009C1FAC /* conv2d_31.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_31.w_0; sourceTree = ""; }; + FC0E2CD020EDC03B009C1FAC /* conv2d_19.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_19.w_0; sourceTree = ""; }; + FC0E2CD120EDC03B009C1FAC /* batch_norm_15.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_15.b_0; sourceTree = ""; }; + FC0E2CD220EDC03B009C1FAC /* batch_norm_32.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_32.w_2; sourceTree = ""; }; + FC0E2CD320EDC03B009C1FAC /* batch_norm_26.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_26.w_2; sourceTree = ""; }; + FC0E2CD420EDC03B009C1FAC /* batch_norm_27.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_27.w_2; sourceTree = ""; }; + FC0E2CD520EDC03B009C1FAC /* batch_norm_33.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_33.w_2; sourceTree = ""; }; + FC0E2CD620EDC03B009C1FAC /* conv2d_18.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_18.w_0; sourceTree = ""; }; + FC0E2CD720EDC03B009C1FAC /* batch_norm_14.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_14.b_0; sourceTree = ""; }; + FC0E2CD820EDC03B009C1FAC /* conv2d_30.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_30.w_0; sourceTree = ""; }; + FC0E2CD920EDC03B009C1FAC /* conv2d_24.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_24.w_0; sourceTree = ""; }; + FC0E2CDA20EDC03B009C1FAC /* batch_norm_28.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_28.b_0; sourceTree = ""; }; + FC0E2CDB20EDC03B009C1FAC /* batch_norm_9.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.w_0; sourceTree = ""; }; + FC0E2CDC20EDC03B009C1FAC /* depthwise_conv2d_4.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_4.w_0; sourceTree = ""; }; + FC0E2CDD20EDC03B009C1FAC /* depthwise_conv2d_6.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_6.w_0; sourceTree = ""; }; + FC0E2CDE20EDC03B009C1FAC /* conv2d_32.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_32.w_0; sourceTree = ""; }; + FC0E2CDF20EDC03B009C1FAC /* conv2d_26.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_26.w_0; sourceTree = ""; }; + FC0E2CE020EDC03B009C1FAC /* batch_norm_16.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_16.b_0; sourceTree = ""; }; + FC0E2CE120EDC03B009C1FAC /* batch_norm_19.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_19.w_2; sourceTree = ""; }; + FC0E2CE220EDC03B009C1FAC /* batch_norm_25.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_25.w_2; sourceTree = ""; }; + FC0E2CE320EDC03B009C1FAC /* batch_norm_31.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_31.w_2; sourceTree = ""; }; + FC0E2CE420EDC03B009C1FAC /* batch_norm_8.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_8.w_1; sourceTree = ""; }; + FC0E2CE520EDC03B009C1FAC /* batch_norm_9.w_1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_9.w_1; sourceTree = ""; }; + FC0E2CE620EDC03B009C1FAC /* batch_norm_30.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_30.w_2; sourceTree = ""; }; + FC0E2CE720EDC03B009C1FAC /* batch_norm_24.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_24.w_2; sourceTree = ""; }; + FC0E2CE820EDC03B009C1FAC /* batch_norm_18.w_2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_18.w_2; sourceTree = ""; }; + FC0E2CE920EDC03B009C1FAC /* batch_norm_17.b_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = batch_norm_17.b_0; sourceTree = ""; }; + FC0E2CEA20EDC03B009C1FAC /* conv2d_27.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_27.w_0; sourceTree = ""; }; + FC0E2CEB20EDC03B009C1FAC /* conv2d_33.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = conv2d_33.w_0; sourceTree = ""; }; + FC0E2CEC20EDC03B009C1FAC /* depthwise_conv2d_7.w_0 */ = {isa = PBXFileReference; lastKnownFileType = file; path = depthwise_conv2d_7.w_0; sourceTree = ""; }; FCEBEC2B20E1391F00C0B14D /* paddle_mobile.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = paddle_mobile.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -101,7 +503,8 @@ FC039B8020E11C550081E9F8 /* paddle-mobile-demo */ = { isa = PBXGroup; children = ( - FC9D037A20E22E4E000F735A /* yolo */, + FC0E2C2020EDC03B009C1FAC /* models */, + FC0E2C1D20EDC030009C1FAC /* images */, FC039B8120E11C550081E9F8 /* AppDelegate.swift */, FC039B8320E11C550081E9F8 /* ViewController.swift */, FC039B8520E11C550081E9F8 /* Main.storyboard */, @@ -112,14 +515,239 @@ path = "paddle-mobile-demo"; sourceTree = ""; }; - FC9D037A20E22E4E000F735A /* yolo */ = { + FC0E2C1D20EDC030009C1FAC /* images */ = { isa = PBXGroup; children = ( - FC9D037B20E22E4E000F735A /* params */, - FC9D037C20E22E4E000F735A /* model */, + FC0E2C1E20EDC030009C1FAC /* apple.jpg */, ); - name = yolo; - path = ../../models/yolo; + name = images; + path = ../../images; + sourceTree = ""; + }; + FC0E2C2020EDC03B009C1FAC /* models */ = { + isa = PBXGroup; + children = ( + FC0E2C2120EDC03B009C1FAC /* yolo */, + FC0E2C2420EDC03B009C1FAC /* mobilenetssd */, + ); + name = models; + path = ../../models; + sourceTree = ""; + }; + FC0E2C2120EDC03B009C1FAC /* yolo */ = { + isa = PBXGroup; + children = ( + FC0E2C2220EDC03B009C1FAC /* params */, + FC0E2C2320EDC03B009C1FAC /* model */, + ); + path = yolo; + sourceTree = ""; + }; + FC0E2C2420EDC03B009C1FAC /* mobilenetssd */ = { + isa = PBXGroup; + children = ( + FC0E2C2520EDC03B009C1FAC /* batch_norm_7.w_0 */, + FC0E2C2620EDC03B009C1FAC /* batch_norm_26.b_0 */, + FC0E2C2720EDC03B009C1FAC /* batch_norm_32.b_0 */, + FC0E2C2820EDC03B009C1FAC /* conv2d_16.w_0 */, + FC0E2C2920EDC03B009C1FAC /* batch_norm_15.w_2 */, + FC0E2C2A20EDC03B009C1FAC /* batch_norm_29.w_2 */, + FC0E2C2B20EDC03B009C1FAC /* batch_norm_4.w_1 */, + FC0E2C2C20EDC03B009C1FAC /* batch_norm_5.w_1 */, + FC0E2C2D20EDC03B009C1FAC /* batch_norm_28.w_2 */, + FC0E2C2E20EDC03B009C1FAC /* batch_norm_14.w_2 */, + FC0E2C2F20EDC03B009C1FAC /* conv2d_17.w_0 */, + FC0E2C3020EDC03B009C1FAC /* batch_norm_33.b_0 */, + FC0E2C3120EDC03B009C1FAC /* batch_norm_27.b_0 */, + FC0E2C3220EDC03B009C1FAC /* batch_norm_6.w_0 */, + FC0E2C3320EDC03B009C1FAC /* batch_norm_4.w_0 */, + FC0E2C3420EDC03B009C1FAC /* depthwise_conv2d_9.w_0 */, + FC0E2C3520EDC03B009C1FAC /* batch_norm_31.b_0 */, + FC0E2C3620EDC03B009C1FAC /* conv2d_29.w_0 */, + FC0E2C3720EDC03B009C1FAC /* batch_norm_25.b_0 */, + FC0E2C3820EDC03B009C1FAC /* conv2d_15.w_0 */, + FC0E2C3920EDC03B009C1FAC /* batch_norm_19.b_0 */, + FC0E2C3A20EDC03B009C1FAC /* batch_norm_16.w_2 */, + FC0E2C3B20EDC03B009C1FAC /* __model__ */, + FC0E2C3C20EDC03B009C1FAC /* batch_norm_7.w_1 */, + FC0E2C3D20EDC03B009C1FAC /* batch_norm_6.w_1 */, + FC0E2C3E20EDC03B009C1FAC /* batch_norm_17.w_2 */, + FC0E2C3F20EDC03B009C1FAC /* conv2d_14.w_0 */, + FC0E2C4020EDC03B009C1FAC /* batch_norm_18.b_0 */, + FC0E2C4120EDC03B009C1FAC /* conv2d_28.w_0 */, + FC0E2C4220EDC03B009C1FAC /* batch_norm_24.b_0 */, + FC0E2C4320EDC03B009C1FAC /* batch_norm_30.b_0 */, + FC0E2C4420EDC03B009C1FAC /* depthwise_conv2d_8.w_0 */, + FC0E2C4520EDC03B009C1FAC /* batch_norm_5.w_0 */, + FC0E2C4620EDC03B009C1FAC /* batch_norm_1.w_0 */, + FC0E2C4720EDC03B009C1FAC /* conv2d_10.w_0 */, + FC0E2C4820EDC03B009C1FAC /* batch_norm_34.b_0 */, + FC0E2C4920EDC03B009C1FAC /* batch_norm_20.b_0 */, + FC0E2C4A20EDC03B009C1FAC /* batch_norm_13.w_2 */, + FC0E2C4B20EDC03B009C1FAC /* batch_norm_2.w_1 */, + FC0E2C4C20EDC03B009C1FAC /* batch_norm_3.w_1 */, + FC0E2C4D20EDC03B009C1FAC /* batch_norm_12.w_2 */, + FC0E2C4E20EDC03B009C1FAC /* batch_norm_21.b_0 */, + FC0E2C4F20EDC03B009C1FAC /* conv2d_11.w_0 */, + FC0E2C5020EDC03B009C1FAC /* batch_norm_0.w_0 */, + FC0E2C5120EDC03B009C1FAC /* batch_norm_2.w_0 */, + FC0E2C5220EDC03B009C1FAC /* conv2d_13.w_0 */, + FC0E2C5320EDC03B009C1FAC /* batch_norm_23.b_0 */, + FC0E2C5420EDC03B009C1FAC /* batch_norm_10.w_2 */, + FC0E2C5520EDC03B009C1FAC /* batch_norm_1.w_1 */, + FC0E2C5620EDC03B009C1FAC /* batch_norm_0.w_1 */, + FC0E2C5720EDC03B009C1FAC /* batch_norm_11.w_2 */, + FC0E2C5820EDC03B009C1FAC /* batch_norm_22.b_0 */, + FC0E2C5920EDC03B009C1FAC /* conv2d_12.w_0 */, + FC0E2C5A20EDC03B009C1FAC /* batch_norm_3.w_0 */, + FC0E2C5B20EDC03B009C1FAC /* batch_norm_21.w_1 */, + FC0E2C5C20EDC03B009C1FAC /* batch_norm_3.b_0 */, + FC0E2C5D20EDC03B009C1FAC /* batch_norm_22.w_0 */, + FC0E2C5E20EDC03B009C1FAC /* batch_norm_23.w_0 */, + FC0E2C5F20EDC03B009C1FAC /* batch_norm_2.b_0 */, + FC0E2C6020EDC03B009C1FAC /* batch_norm_20.w_1 */, + FC0E2C6120EDC03B009C1FAC /* batch_norm_34.w_1 */, + FC0E2C6220EDC03B009C1FAC /* batch_norm_22.w_1 */, + FC0E2C6320EDC03B009C1FAC /* batch_norm_0.b_0 */, + FC0E2C6420EDC03B009C1FAC /* batch_norm_21.w_0 */, + FC0E2C6520EDC03B009C1FAC /* batch_norm_20.w_0 */, + FC0E2C6620EDC03B009C1FAC /* batch_norm_34.w_0 */, + FC0E2C6720EDC03B009C1FAC /* batch_norm_1.b_0 */, + FC0E2C6820EDC03B009C1FAC /* batch_norm_23.w_1 */, + FC0E2C6920EDC03B009C1FAC /* batch_norm_27.w_1 */, + FC0E2C6A20EDC03B009C1FAC /* batch_norm_33.w_1 */, + FC0E2C6B20EDC03B009C1FAC /* batch_norm_5.b_0 */, + FC0E2C6C20EDC03B009C1FAC /* batch_norm_18.w_0 */, + FC0E2C6D20EDC03B009C1FAC /* batch_norm_30.w_0 */, + FC0E2C6E20EDC03B009C1FAC /* batch_norm_24.w_0 */, + FC0E2C6F20EDC03B009C1FAC /* conv2d_28.b_0 */, + FC0E2C7020EDC03B009C1FAC /* batch_norm_25.w_0 */, + FC0E2C7120EDC03B009C1FAC /* conv2d_29.b_0 */, + FC0E2C7220EDC03B009C1FAC /* batch_norm_31.w_0 */, + FC0E2C7320EDC03B009C1FAC /* batch_norm_19.w_0 */, + FC0E2C7420EDC03B009C1FAC /* batch_norm_4.b_0 */, + FC0E2C7520EDC03B009C1FAC /* batch_norm_32.w_1 */, + FC0E2C7620EDC03B009C1FAC /* batch_norm_26.w_1 */, + FC0E2C7720EDC03B009C1FAC /* batch_norm_30.w_1 */, + FC0E2C7820EDC03B009C1FAC /* batch_norm_24.w_1 */, + FC0E2C7920EDC03B009C1FAC /* batch_norm_18.w_1 */, + FC0E2C7A20EDC03B009C1FAC /* batch_norm_6.b_0 */, + FC0E2C7B20EDC03B009C1FAC /* batch_norm_9.w_2 */, + FC0E2C7C20EDC03B009C1FAC /* conv2d_8.w_0 */, + FC0E2C7D20EDC03B009C1FAC /* batch_norm_27.w_0 */, + FC0E2C7E20EDC03B009C1FAC /* batch_norm_33.w_0 */, + FC0E2C7F20EDC03B009C1FAC /* batch_norm_32.w_0 */, + FC0E2C8020EDC03B009C1FAC /* conv2d_9.w_0 */, + FC0E2C8120EDC03B009C1FAC /* batch_norm_26.w_0 */, + FC0E2C8220EDC03B009C1FAC /* batch_norm_8.w_2 */, + FC0E2C8320EDC03B009C1FAC /* batch_norm_7.b_0 */, + FC0E2C8420EDC03B009C1FAC /* batch_norm_19.w_1 */, + FC0E2C8520EDC03B009C1FAC /* batch_norm_25.w_1 */, + FC0E2C8620EDC03B009C1FAC /* batch_norm_31.w_1 */, + FC0E2C8720EDC03B009C1FAC /* batch_norm_28.w_1 */, + FC0E2C8820EDC03B009C1FAC /* batch_norm_14.w_1 */, + FC0E2C8920EDC03B009C1FAC /* batch_norm_5.w_2 */, + FC0E2C8A20EDC03B009C1FAC /* batch_norm_17.w_0 */, + FC0E2C8B20EDC03B009C1FAC /* conv2d_33.b_0 */, + FC0E2C8C20EDC03B009C1FAC /* conv2d_27.b_0 */, + FC0E2C8D20EDC03B009C1FAC /* conv2d_4.w_0 */, + FC0E2C8E20EDC03B009C1FAC /* conv2d_5.w_0 */, + FC0E2C8F20EDC03B009C1FAC /* conv2d_26.b_0 */, + FC0E2C9020EDC03B009C1FAC /* conv2d_32.b_0 */, + FC0E2C9120EDC03B009C1FAC /* batch_norm_16.w_0 */, + FC0E2C9220EDC03B009C1FAC /* batch_norm_4.w_2 */, + FC0E2C9320EDC03B009C1FAC /* batch_norm_15.w_1 */, + FC0E2C9420EDC03B009C1FAC /* batch_norm_29.w_1 */, + FC0E2C9520EDC03B009C1FAC /* batch_norm_17.w_1 */, + FC0E2C9620EDC03B009C1FAC /* batch_norm_9.b_0 */, + FC0E2C9720EDC03B009C1FAC /* batch_norm_6.w_2 */, + FC0E2C9820EDC03B009C1FAC /* batch_norm_14.w_0 */, + FC0E2C9920EDC03B009C1FAC /* batch_norm_28.w_0 */, + FC0E2C9A20EDC03B009C1FAC /* conv2d_24.b_0 */, + FC0E2C9B20EDC03B009C1FAC /* conv2d_7.w_0 */, + FC0E2C9C20EDC03B009C1FAC /* conv2d_30.b_0 */, + FC0E2C9D20EDC03B009C1FAC /* conv2d_31.b_0 */, + FC0E2C9E20EDC03B009C1FAC /* batch_norm_29.w_0 */, + FC0E2C9F20EDC03B009C1FAC /* conv2d_6.w_0 */, + FC0E2CA020EDC03B009C1FAC /* conv2d_25.b_0 */, + FC0E2CA120EDC03B009C1FAC /* batch_norm_15.w_0 */, + FC0E2CA220EDC03B009C1FAC /* batch_norm_7.w_2 */, + FC0E2CA320EDC03B009C1FAC /* batch_norm_8.b_0 */, + FC0E2CA420EDC03B009C1FAC /* batch_norm_16.w_1 */, + FC0E2CA520EDC03B009C1FAC /* batch_norm_12.w_1 */, + FC0E2CA620EDC03B009C1FAC /* batch_norm_3.w_2 */, + FC0E2CA720EDC03B009C1FAC /* conv2d_2.w_0 */, + FC0E2CA820EDC03B009C1FAC /* batch_norm_11.w_0 */, + FC0E2CA920EDC03B009C1FAC /* batch_norm_10.w_0 */, + FC0E2CAA20EDC03B009C1FAC /* conv2d_3.w_0 */, + FC0E2CAB20EDC03B009C1FAC /* batch_norm_2.w_2 */, + FC0E2CAC20EDC03B009C1FAC /* depthwise_conv2d_12.w_0 */, + FC0E2CAD20EDC03B009C1FAC /* batch_norm_13.w_1 */, + FC0E2CAE20EDC03B009C1FAC /* batch_norm_11.w_1 */, + FC0E2CAF20EDC03B009C1FAC /* depthwise_conv2d_10.w_0 */, + FC0E2CB020EDC03B009C1FAC /* batch_norm_0.w_2 */, + FC0E2CB120EDC03B009C1FAC /* conv2d_22.b_0 */, + FC0E2CB220EDC03B009C1FAC /* conv2d_1.w_0 */, + FC0E2CB320EDC03B009C1FAC /* batch_norm_12.w_0 */, + FC0E2CB420EDC03B009C1FAC /* batch_norm_13.w_0 */, + FC0E2CB520EDC03B009C1FAC /* conv2d_0.w_0 */, + FC0E2CB620EDC03B009C1FAC /* conv2d_23.b_0 */, + FC0E2CB720EDC03B009C1FAC /* batch_norm_1.w_2 */, + FC0E2CB820EDC03B009C1FAC /* batch_norm_10.w_1 */, + FC0E2CB920EDC03B009C1FAC /* depthwise_conv2d_11.w_0 */, + FC0E2CBA20EDC03B009C1FAC /* depthwise_conv2d_3.w_0 */, + FC0E2CBB20EDC03B009C1FAC /* batch_norm_13.b_0 */, + FC0E2CBC20EDC03B009C1FAC /* conv2d_23.w_0 */, + FC0E2CBD20EDC03B009C1FAC /* batch_norm_20.w_2 */, + FC0E2CBE20EDC03B009C1FAC /* batch_norm_34.w_2 */, + FC0E2CBF20EDC03B009C1FAC /* batch_norm_21.w_2 */, + FC0E2CC020EDC03B009C1FAC /* conv2d_22.w_0 */, + FC0E2CC120EDC03B009C1FAC /* batch_norm_12.b_0 */, + FC0E2CC220EDC03B009C1FAC /* depthwise_conv2d_2.w_0 */, + FC0E2CC320EDC03B009C1FAC /* depthwise_conv2d_0.w_0 */, + FC0E2CC420EDC03B009C1FAC /* batch_norm_10.b_0 */, + FC0E2CC520EDC03B009C1FAC /* conv2d_20.w_0 */, + FC0E2CC620EDC03B009C1FAC /* batch_norm_23.w_2 */, + FC0E2CC720EDC03B009C1FAC /* batch_norm_22.w_2 */, + FC0E2CC820EDC03B009C1FAC /* conv2d_21.w_0 */, + FC0E2CC920EDC03B009C1FAC /* batch_norm_11.b_0 */, + FC0E2CCA20EDC03B009C1FAC /* depthwise_conv2d_1.w_0 */, + FC0E2CCB20EDC03B009C1FAC /* depthwise_conv2d_5.w_0 */, + FC0E2CCC20EDC03B009C1FAC /* batch_norm_8.w_0 */, + FC0E2CCD20EDC03B009C1FAC /* conv2d_25.w_0 */, + FC0E2CCE20EDC03B009C1FAC /* batch_norm_29.b_0 */, + FC0E2CCF20EDC03B009C1FAC /* conv2d_31.w_0 */, + FC0E2CD020EDC03B009C1FAC /* conv2d_19.w_0 */, + FC0E2CD120EDC03B009C1FAC /* batch_norm_15.b_0 */, + FC0E2CD220EDC03B009C1FAC /* batch_norm_32.w_2 */, + FC0E2CD320EDC03B009C1FAC /* batch_norm_26.w_2 */, + FC0E2CD420EDC03B009C1FAC /* batch_norm_27.w_2 */, + FC0E2CD520EDC03B009C1FAC /* batch_norm_33.w_2 */, + FC0E2CD620EDC03B009C1FAC /* conv2d_18.w_0 */, + FC0E2CD720EDC03B009C1FAC /* batch_norm_14.b_0 */, + FC0E2CD820EDC03B009C1FAC /* conv2d_30.w_0 */, + FC0E2CD920EDC03B009C1FAC /* conv2d_24.w_0 */, + FC0E2CDA20EDC03B009C1FAC /* batch_norm_28.b_0 */, + FC0E2CDB20EDC03B009C1FAC /* batch_norm_9.w_0 */, + FC0E2CDC20EDC03B009C1FAC /* depthwise_conv2d_4.w_0 */, + FC0E2CDD20EDC03B009C1FAC /* depthwise_conv2d_6.w_0 */, + FC0E2CDE20EDC03B009C1FAC /* conv2d_32.w_0 */, + FC0E2CDF20EDC03B009C1FAC /* conv2d_26.w_0 */, + FC0E2CE020EDC03B009C1FAC /* batch_norm_16.b_0 */, + FC0E2CE120EDC03B009C1FAC /* batch_norm_19.w_2 */, + FC0E2CE220EDC03B009C1FAC /* batch_norm_25.w_2 */, + FC0E2CE320EDC03B009C1FAC /* batch_norm_31.w_2 */, + FC0E2CE420EDC03B009C1FAC /* batch_norm_8.w_1 */, + FC0E2CE520EDC03B009C1FAC /* batch_norm_9.w_1 */, + FC0E2CE620EDC03B009C1FAC /* batch_norm_30.w_2 */, + FC0E2CE720EDC03B009C1FAC /* batch_norm_24.w_2 */, + FC0E2CE820EDC03B009C1FAC /* batch_norm_18.w_2 */, + FC0E2CE920EDC03B009C1FAC /* batch_norm_17.b_0 */, + FC0E2CEA20EDC03B009C1FAC /* conv2d_27.w_0 */, + FC0E2CEB20EDC03B009C1FAC /* conv2d_33.w_0 */, + FC0E2CEC20EDC03B009C1FAC /* depthwise_conv2d_7.w_0 */, + ); + path = mobilenetssd; sourceTree = ""; }; /* End PBXGroup section */ @@ -183,11 +811,212 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + FC0E2CEE20EDC03B009C1FAC /* model in Resources */, + FC0E2D8520EDC03C009C1FAC /* batch_norm_13.b_0 in Resources */, + FC0E2D2020EDC03B009C1FAC /* batch_norm_0.w_1 in Resources */, + FC0E2D6F20EDC03C009C1FAC /* batch_norm_12.w_1 in Resources */, + FC0E2DAD20EDC03C009C1FAC /* batch_norm_31.w_2 in Resources */, + FC0E2D7520EDC03C009C1FAC /* batch_norm_2.w_2 in Resources */, + FC0E2DA220EDC03C009C1FAC /* conv2d_30.w_0 in Resources */, + FC0E2DA420EDC03C009C1FAC /* batch_norm_28.b_0 in Resources */, + FC0E2D9F20EDC03C009C1FAC /* batch_norm_33.w_2 in Resources */, + FC0E2D2920EDC03B009C1FAC /* batch_norm_2.b_0 in Resources */, + FC0E2CED20EDC03B009C1FAC /* params in Resources */, + FC0E2DA920EDC03C009C1FAC /* conv2d_26.w_0 in Resources */, + FC0E2D0420EDC03B009C1FAC /* batch_norm_16.w_2 in Resources */, + FC0E2D0720EDC03B009C1FAC /* batch_norm_6.w_1 in Resources */, + FC0E2DB020EDC03C009C1FAC /* batch_norm_30.w_2 in Resources */, + FC0E2D9720EDC03C009C1FAC /* conv2d_25.w_0 in Resources */, + FC0E2D8420EDC03C009C1FAC /* depthwise_conv2d_3.w_0 in Resources */, + FC0E2D2120EDC03B009C1FAC /* batch_norm_11.w_2 in Resources */, + FC0E2D5920EDC03C009C1FAC /* conv2d_26.b_0 in Resources */, + FC0E2D6220EDC03C009C1FAC /* batch_norm_14.w_0 in Resources */, + FC0E2DA820EDC03C009C1FAC /* conv2d_32.w_0 in Resources */, + FC0E2D7420EDC03C009C1FAC /* conv2d_3.w_0 in Resources */, + FC0E2D6E20EDC03C009C1FAC /* batch_norm_16.w_1 in Resources */, + FC0E2D6C20EDC03C009C1FAC /* batch_norm_7.w_2 in Resources */, + FC0E2CFD20EDC03B009C1FAC /* batch_norm_4.w_0 in Resources */, + FC0E2DA620EDC03C009C1FAC /* depthwise_conv2d_4.w_0 in Resources */, + FC0E2D6920EDC03C009C1FAC /* conv2d_6.w_0 in Resources */, + FC0E2D6520EDC03C009C1FAC /* conv2d_7.w_0 in Resources */, + FC0E2DAB20EDC03C009C1FAC /* batch_norm_19.w_2 in Resources */, + FC0E2D9920EDC03C009C1FAC /* conv2d_31.w_0 in Resources */, + FC0E2D3020EDC03B009C1FAC /* batch_norm_34.w_0 in Resources */, + FC0E2D1220EDC03B009C1FAC /* batch_norm_34.b_0 in Resources */, + FC0E2D4D20EDC03C009C1FAC /* batch_norm_7.b_0 in Resources */, + FC0E2D2520EDC03B009C1FAC /* batch_norm_21.w_1 in Resources */, + FC0E2CFA20EDC03B009C1FAC /* batch_norm_33.b_0 in Resources */, + FC0E2D3420EDC03C009C1FAC /* batch_norm_33.w_1 in Resources */, + FC0E2D8620EDC03C009C1FAC /* conv2d_23.w_0 in Resources */, + FC0E2CFE20EDC03B009C1FAC /* depthwise_conv2d_9.w_0 in Resources */, + FC0E2D4C20EDC03C009C1FAC /* batch_norm_8.w_2 in Resources */, + FC0E2D5820EDC03C009C1FAC /* conv2d_5.w_0 in Resources */, + FC0E2D1620EDC03B009C1FAC /* batch_norm_3.w_1 in Resources */, + FC0E2DB120EDC03C009C1FAC /* batch_norm_24.w_2 in Resources */, + FC0E2D9E20EDC03C009C1FAC /* batch_norm_27.w_2 in Resources */, + FC0E2D5420EDC03C009C1FAC /* batch_norm_17.w_0 in Resources */, + FC0E2CFB20EDC03B009C1FAC /* batch_norm_27.b_0 in Resources */, + FC0E2D3A20EDC03C009C1FAC /* batch_norm_25.w_0 in Resources */, + FC0E2D3C20EDC03C009C1FAC /* batch_norm_31.w_0 in Resources */, + FC0E2D7020EDC03C009C1FAC /* batch_norm_3.w_2 in Resources */, + FC0E2D7C20EDC03C009C1FAC /* conv2d_1.w_0 in Resources */, + FC0E2D2A20EDC03B009C1FAC /* batch_norm_20.w_1 in Resources */, + FC0E2D9B20EDC03C009C1FAC /* batch_norm_15.b_0 in Resources */, + FC0E2D6620EDC03C009C1FAC /* conv2d_30.b_0 in Resources */, + FC0E2D8220EDC03C009C1FAC /* batch_norm_10.w_1 in Resources */, + FC0E2D1A20EDC03B009C1FAC /* batch_norm_0.w_0 in Resources */, + FC0E2D3D20EDC03C009C1FAC /* batch_norm_19.w_0 in Resources */, + FC0E2D2720EDC03B009C1FAC /* batch_norm_22.w_0 in Resources */, + FC0E2D1720EDC03B009C1FAC /* batch_norm_12.w_2 in Resources */, + FC0E2DAE20EDC03C009C1FAC /* batch_norm_8.w_1 in Resources */, + FC0E2DAF20EDC03C009C1FAC /* batch_norm_9.w_1 in Resources */, + FC0E2D1320EDC03B009C1FAC /* batch_norm_20.b_0 in Resources */, + FC0E2D9320EDC03C009C1FAC /* batch_norm_11.b_0 in Resources */, + FC0E2D5E20EDC03C009C1FAC /* batch_norm_29.w_1 in Resources */, + FC0E2D6120EDC03C009C1FAC /* batch_norm_6.w_2 in Resources */, + FC0E2D7D20EDC03C009C1FAC /* batch_norm_12.w_0 in Resources */, + FC0E2D4320EDC03C009C1FAC /* batch_norm_18.w_1 in Resources */, + FC0E2DB320EDC03C009C1FAC /* batch_norm_17.b_0 in Resources */, + FC0E2D5C20EDC03C009C1FAC /* batch_norm_4.w_2 in Resources */, + FC0E2D5520EDC03C009C1FAC /* conv2d_33.b_0 in Resources */, + FC0E2D5B20EDC03C009C1FAC /* batch_norm_16.w_0 in Resources */, + FC0E2D4420EDC03C009C1FAC /* batch_norm_6.b_0 in Resources */, + FC0E2CF420EDC03B009C1FAC /* batch_norm_29.w_2 in Resources */, + FC0E2D0A20EDC03B009C1FAC /* batch_norm_18.b_0 in Resources */, + FC0E2D4020EDC03C009C1FAC /* batch_norm_26.w_1 in Resources */, + FC0E2D9620EDC03C009C1FAC /* batch_norm_8.w_0 in Resources */, + FC0E2D4B20EDC03C009C1FAC /* batch_norm_26.w_0 in Resources */, + FC0E2D8D20EDC03C009C1FAC /* depthwise_conv2d_0.w_0 in Resources */, FC039B8C20E11C560081E9F8 /* LaunchScreen.storyboard in Resources */, - FC9D037E20E22E4E000F735A /* model in Resources */, + FC0E2D6820EDC03C009C1FAC /* batch_norm_29.w_0 in Resources */, + FC0E2D8120EDC03C009C1FAC /* batch_norm_1.w_2 in Resources */, + FC0E2D0E20EDC03B009C1FAC /* depthwise_conv2d_8.w_0 in Resources */, + FC0E2D6D20EDC03C009C1FAC /* batch_norm_8.b_0 in Resources */, + FC0E2D1D20EDC03B009C1FAC /* batch_norm_23.b_0 in Resources */, + FC0E2D5220EDC03C009C1FAC /* batch_norm_14.w_1 in Resources */, + FC0E2D0D20EDC03B009C1FAC /* batch_norm_30.b_0 in Resources */, + FC0E2D1120EDC03B009C1FAC /* conv2d_10.w_0 in Resources */, + FC0E2D7120EDC03C009C1FAC /* conv2d_2.w_0 in Resources */, FC039B8920E11C560081E9F8 /* Assets.xcassets in Resources */, - FC9D037D20E22E4E000F735A /* params in Resources */, + FC0E2D5020EDC03C009C1FAC /* batch_norm_31.w_1 in Resources */, + FC0E2D2B20EDC03B009C1FAC /* batch_norm_34.w_1 in Resources */, + FC0E2D8F20EDC03C009C1FAC /* conv2d_20.w_0 in Resources */, + FC0E2D7A20EDC03C009C1FAC /* batch_norm_0.w_2 in Resources */, + FC0E2D6320EDC03C009C1FAC /* batch_norm_28.w_0 in Resources */, + FC0E2D4920EDC03C009C1FAC /* batch_norm_32.w_0 in Resources */, + FC0E2D9D20EDC03C009C1FAC /* batch_norm_26.w_2 in Resources */, + FC0E2DA320EDC03C009C1FAC /* conv2d_24.w_0 in Resources */, + FC0E2DA720EDC03C009C1FAC /* depthwise_conv2d_6.w_0 in Resources */, + FC0E2D0820EDC03B009C1FAC /* batch_norm_17.w_2 in Resources */, + FC0E2D9C20EDC03C009C1FAC /* batch_norm_32.w_2 in Resources */, + FC0E2D2320EDC03B009C1FAC /* conv2d_12.w_0 in Resources */, + FC0E2D3220EDC03C009C1FAC /* batch_norm_23.w_1 in Resources */, + FC0E2D9420EDC03C009C1FAC /* depthwise_conv2d_1.w_0 in Resources */, + FC0E2D0B20EDC03B009C1FAC /* conv2d_28.w_0 in Resources */, + FC0E2D7820EDC03C009C1FAC /* batch_norm_11.w_1 in Resources */, + FC0E2CF020EDC03B009C1FAC /* batch_norm_26.b_0 in Resources */, + FC0E2D3F20EDC03C009C1FAC /* batch_norm_32.w_1 in Resources */, + FC0E2D1920EDC03B009C1FAC /* conv2d_11.w_0 in Resources */, + FC0E2D8720EDC03C009C1FAC /* batch_norm_20.w_2 in Resources */, + FC0E2D3720EDC03C009C1FAC /* batch_norm_30.w_0 in Resources */, + FC0E2CF620EDC03B009C1FAC /* batch_norm_5.w_1 in Resources */, + FC0E2D7E20EDC03C009C1FAC /* batch_norm_13.w_0 in Resources */, + FC0E2D0320EDC03B009C1FAC /* batch_norm_19.b_0 in Resources */, + FC0E2D0120EDC03B009C1FAC /* batch_norm_25.b_0 in Resources */, + FC0E2DA120EDC03C009C1FAC /* batch_norm_14.b_0 in Resources */, + FC0E2D8A20EDC03C009C1FAC /* conv2d_22.w_0 in Resources */, + FC0E2CF120EDC03B009C1FAC /* batch_norm_32.b_0 in Resources */, + FC0E2D0520EDC03B009C1FAC /* __model__ in Resources */, + FC0E2D1B20EDC03B009C1FAC /* batch_norm_2.w_0 in Resources */, + FC0E2D5F20EDC03C009C1FAC /* batch_norm_17.w_1 in Resources */, + FC0E2D8020EDC03C009C1FAC /* conv2d_23.b_0 in Resources */, + FC0E2D5720EDC03C009C1FAC /* conv2d_4.w_0 in Resources */, + FC0E2CFC20EDC03B009C1FAC /* batch_norm_6.w_0 in Resources */, + FC0E2D2420EDC03B009C1FAC /* batch_norm_3.w_0 in Resources */, + FC0E2D9220EDC03C009C1FAC /* conv2d_21.w_0 in Resources */, + FC0E2D5D20EDC03C009C1FAC /* batch_norm_15.w_1 in Resources */, + FC0E2D2820EDC03B009C1FAC /* batch_norm_23.w_0 in Resources */, + FC0E2D3B20EDC03C009C1FAC /* conv2d_29.b_0 in Resources */, + FC0E2D4120EDC03C009C1FAC /* batch_norm_30.w_1 in Resources */, + FC0E2D1E20EDC03B009C1FAC /* batch_norm_10.w_2 in Resources */, + FC0E2D0F20EDC03B009C1FAC /* batch_norm_5.w_0 in Resources */, + FC0E2D4520EDC03C009C1FAC /* batch_norm_9.w_2 in Resources */, + FC0E2D9020EDC03C009C1FAC /* batch_norm_23.w_2 in Resources */, + FC0E2D6720EDC03C009C1FAC /* conv2d_31.b_0 in Resources */, + FC0E2DA020EDC03C009C1FAC /* conv2d_18.w_0 in Resources */, + FC0E2D1C20EDC03B009C1FAC /* conv2d_13.w_0 in Resources */, + FC0E2D3320EDC03C009C1FAC /* batch_norm_27.w_1 in Resources */, + FC0E2D5120EDC03C009C1FAC /* batch_norm_28.w_1 in Resources */, + FC0E2D1420EDC03B009C1FAC /* batch_norm_13.w_2 in Resources */, + FC0E2DB420EDC03C009C1FAC /* conv2d_27.w_0 in Resources */, + FC0E2D8820EDC03C009C1FAC /* batch_norm_34.w_2 in Resources */, + FC0E2D7F20EDC03C009C1FAC /* conv2d_0.w_0 in Resources */, + FC0E2D2E20EDC03B009C1FAC /* batch_norm_21.w_0 in Resources */, + FC0E2CF820EDC03B009C1FAC /* batch_norm_14.w_2 in Resources */, + FC0E2D9820EDC03C009C1FAC /* batch_norm_29.b_0 in Resources */, + FC0E2D1F20EDC03B009C1FAC /* batch_norm_1.w_1 in Resources */, + FC0E2D1020EDC03B009C1FAC /* batch_norm_1.w_0 in Resources */, + FC0E2D8920EDC03C009C1FAC /* batch_norm_21.w_2 in Resources */, + FC0E2D6420EDC03C009C1FAC /* conv2d_24.b_0 in Resources */, + FC0E2D8C20EDC03C009C1FAC /* depthwise_conv2d_2.w_0 in Resources */, + FC0E2D3E20EDC03C009C1FAC /* batch_norm_4.b_0 in Resources */, + FC0E2D3820EDC03C009C1FAC /* batch_norm_24.w_0 in Resources */, + FC0E2D0920EDC03B009C1FAC /* conv2d_14.w_0 in Resources */, + FC0E2CF720EDC03B009C1FAC /* batch_norm_28.w_2 in Resources */, + FC0E2D9520EDC03C009C1FAC /* depthwise_conv2d_5.w_0 in Resources */, + FC0E2D4A20EDC03C009C1FAC /* conv2d_9.w_0 in Resources */, + FC0E2D4E20EDC03C009C1FAC /* batch_norm_19.w_1 in Resources */, + FC0E2D3620EDC03C009C1FAC /* batch_norm_18.w_0 in Resources */, + FC0E2C1F20EDC030009C1FAC /* apple.jpg in Resources */, + FC0E2D4820EDC03C009C1FAC /* batch_norm_33.w_0 in Resources */, + FC0E2D4220EDC03C009C1FAC /* batch_norm_24.w_1 in Resources */, + FC0E2D7620EDC03C009C1FAC /* depthwise_conv2d_12.w_0 in Resources */, + FC0E2D6020EDC03C009C1FAC /* batch_norm_9.b_0 in Resources */, + FC0E2D4F20EDC03C009C1FAC /* batch_norm_25.w_1 in Resources */, + FC0E2DB220EDC03C009C1FAC /* batch_norm_18.w_2 in Resources */, + FC0E2CF220EDC03B009C1FAC /* conv2d_16.w_0 in Resources */, + FC0E2DAA20EDC03C009C1FAC /* batch_norm_16.b_0 in Resources */, + FC0E2D7320EDC03C009C1FAC /* batch_norm_10.w_0 in Resources */, + FC0E2D0C20EDC03B009C1FAC /* batch_norm_24.b_0 in Resources */, + FC0E2D8320EDC03C009C1FAC /* depthwise_conv2d_11.w_0 in Resources */, + FC0E2D3520EDC03C009C1FAC /* batch_norm_5.b_0 in Resources */, + FC0E2D5620EDC03C009C1FAC /* conv2d_27.b_0 in Resources */, + FC0E2CEF20EDC03B009C1FAC /* batch_norm_7.w_0 in Resources */, + FC0E2D0620EDC03B009C1FAC /* batch_norm_7.w_1 in Resources */, + FC0E2DB620EDC03C009C1FAC /* depthwise_conv2d_7.w_0 in Resources */, + FC0E2D1520EDC03B009C1FAC /* batch_norm_2.w_1 in Resources */, + FC0E2DB520EDC03C009C1FAC /* conv2d_33.w_0 in Resources */, + FC0E2D6B20EDC03C009C1FAC /* batch_norm_15.w_0 in Resources */, + FC0E2DAC20EDC03C009C1FAC /* batch_norm_25.w_2 in Resources */, + FC0E2D5320EDC03C009C1FAC /* batch_norm_5.w_2 in Resources */, + FC0E2CF320EDC03B009C1FAC /* batch_norm_15.w_2 in Resources */, + FC0E2CF920EDC03B009C1FAC /* conv2d_17.w_0 in Resources */, + FC0E2D7920EDC03C009C1FAC /* depthwise_conv2d_10.w_0 in Resources */, + FC0E2D5A20EDC03C009C1FAC /* conv2d_32.b_0 in Resources */, + FC0E2D3920EDC03C009C1FAC /* conv2d_28.b_0 in Resources */, + FC0E2D2D20EDC03B009C1FAC /* batch_norm_0.b_0 in Resources */, + FC0E2D2620EDC03B009C1FAC /* batch_norm_3.b_0 in Resources */, + FC0E2D7B20EDC03C009C1FAC /* conv2d_22.b_0 in Resources */, FC039B8720E11C550081E9F8 /* Main.storyboard in Resources */, + FC0E2CFF20EDC03B009C1FAC /* batch_norm_31.b_0 in Resources */, + FC0E2D4620EDC03C009C1FAC /* conv2d_8.w_0 in Resources */, + FC0E2CF520EDC03B009C1FAC /* batch_norm_4.w_1 in Resources */, + FC0E2D3120EDC03C009C1FAC /* batch_norm_1.b_0 in Resources */, + FC0E2D6A20EDC03C009C1FAC /* conv2d_25.b_0 in Resources */, + FC0E2D2F20EDC03B009C1FAC /* batch_norm_20.w_0 in Resources */, + FC0E2D0220EDC03B009C1FAC /* conv2d_15.w_0 in Resources */, + FC0E2D0020EDC03B009C1FAC /* conv2d_29.w_0 in Resources */, + FC0E2D2220EDC03B009C1FAC /* batch_norm_22.b_0 in Resources */, + FC0E2D9120EDC03C009C1FAC /* batch_norm_22.w_2 in Resources */, + FC0E2D8B20EDC03C009C1FAC /* batch_norm_12.b_0 in Resources */, + FC0E2D2C20EDC03B009C1FAC /* batch_norm_22.w_1 in Resources */, + FC0E2DA520EDC03C009C1FAC /* batch_norm_9.w_0 in Resources */, + FC0E2D9A20EDC03C009C1FAC /* conv2d_19.w_0 in Resources */, + FC0E2D8E20EDC03C009C1FAC /* batch_norm_10.b_0 in Resources */, + FC0E2D1820EDC03B009C1FAC /* batch_norm_21.b_0 in Resources */, + FC0E2D7720EDC03C009C1FAC /* batch_norm_13.w_1 in Resources */, + FC0E2D4720EDC03C009C1FAC /* batch_norm_27.w_0 in Resources */, + FC0E2D7220EDC03C009C1FAC /* batch_norm_11.w_0 in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -384,8 +1213,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = Z5M2UUN5YV; + DEVELOPMENT_TEAM = A798K58VVL; INFOPLIST_FILE = "paddle-mobile-demo/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -403,8 +1233,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = Z5M2UUN5YV; + DEVELOPMENT_TEAM = A798K58VVL; INFOPLIST_FILE = "paddle-mobile-demo/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist b/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist index e2c6b20680bd2f1209dfea198f9f62f2171716cf..125fd5ec745f635929df2d4e29f8147ab9a6b83a 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/metal/paddle-mobile-demo/paddle-mobile-demo.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ paddle-mobile-demo.xcscheme orderHint - 3 + 4 diff --git a/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift b/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift index 2a8ee13525d4a511aef014638d142939bc0ed492..5edacc34578637b76e3a09f9cbce7213cbac3e54 100644 --- a/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift +++ b/metal/paddle-mobile-demo/paddle-mobile-demo/ViewController.swift @@ -13,19 +13,36 @@ limitations under the License. */ import UIKit +import MetalKit import paddle_mobile class ViewController: UIViewController { - + let device: MTLDevice! = MTLCreateSystemDefaultDevice() + var textureLoader: MTKTextureLoader! +// let queue: MTLCommandQueue override func viewDidLoad() { super.viewDidLoad() + + let queue = device.makeCommandQueue() + + textureLoader = MTKTextureLoader.init(device: device) + guard let appleImage = UIImage.init(named: "apple.jpg"), let cgImage = appleImage.cgImage else { + fatalError(" image nil !") + } + + let texture = try? textureLoader.newTexture(cgImage: cgImage, options: [:]) ?! " texture loader error" + + guard let inTexture = texture else { + fatalError(" texture is nil !") + } + let loader = Loader.init() do { let modelPath = Bundle.main.path(forResource: "model", ofType: nil) ?! "model null" let paraPath = Bundle.main.path(forResource: "params", ofType: nil) ?! "para null" - let program = try loader.load(modelPath: modelPath, paraPath: paraPath) + let program = try loader.load(device: device, modelPath: modelPath, paraPath: paraPath) let executor = try Executor.init(inProgram: program) - let output = try executor.predict(input: Texture.init()) + let output = try executor.predict(input: inTexture, expect: [1, 224, 224, 3]) print(output) } catch let error { print(error) diff --git a/metal/paddle-mobile/paddle-mobile.xcodeproj/project.pbxproj b/metal/paddle-mobile/paddle-mobile.xcodeproj/project.pbxproj index a7fb8b605d2d4c9fbe6429d78e4927beb1a457c0..c20bfa4f839b35f75f44d9393da9f80e1a8627b5 100644 --- a/metal/paddle-mobile/paddle-mobile.xcodeproj/project.pbxproj +++ b/metal/paddle-mobile/paddle-mobile.xcodeproj/project.pbxproj @@ -30,11 +30,15 @@ FC039BBE20E11CC20081E9F8 /* OpDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB520E11CC20081E9F8 /* OpDesc.swift */; }; FC039BBF20E11CC20081E9F8 /* Attribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB620E11CC20081E9F8 /* Attribute.swift */; }; FC039BC020E11CC20081E9F8 /* BlockDesc.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC039BB720E11CC20081E9F8 /* BlockDesc.swift */; }; + FC1B16B320EC9A4F00678B91 /* Kernels.metal in Sources */ = {isa = PBXBuildFile; fileRef = FC1B16B220EC9A4F00678B91 /* Kernels.metal */; }; + FC1B186620ECF1C600678B91 /* ResizeKernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC1B186520ECF1C600678B91 /* ResizeKernel.swift */; }; + FC60DB8920E9AAA500FF203F /* MetalExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC60DB8820E9AAA500FF203F /* MetalExtension.swift */; }; FC82735920E3C04200BE430A /* OpCreator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC82735820E3C04200BE430A /* OpCreator.swift */; }; FC9D037920E229E4000F735A /* OpParam.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC9D037820E229E4000F735A /* OpParam.swift */; }; FC9D038020E22FBB000F735A /* FeedOp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC9D037F20E22FBB000F735A /* FeedOp.swift */; }; FC9D038220E2312E000F735A /* FetchOp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC9D038120E2312E000F735A /* FetchOp.swift */; }; FC9D038420E23B01000F735A /* Texture.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC9D038320E23B01000F735A /* Texture.swift */; }; + FCF2D73820E64E70007AC5F5 /* Kernel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCF2D73720E64E70007AC5F5 /* Kernel.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -65,11 +69,15 @@ FC039BB520E11CC20081E9F8 /* OpDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpDesc.swift; sourceTree = ""; }; FC039BB620E11CC20081E9F8 /* Attribute.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Attribute.swift; sourceTree = ""; }; FC039BB720E11CC20081E9F8 /* BlockDesc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlockDesc.swift; sourceTree = ""; }; + FC1B16B220EC9A4F00678B91 /* Kernels.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = Kernels.metal; sourceTree = ""; }; + FC1B186520ECF1C600678B91 /* ResizeKernel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResizeKernel.swift; sourceTree = ""; }; + FC60DB8820E9AAA500FF203F /* MetalExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetalExtension.swift; sourceTree = ""; }; FC82735820E3C04200BE430A /* OpCreator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpCreator.swift; sourceTree = ""; }; FC9D037820E229E4000F735A /* OpParam.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpParam.swift; sourceTree = ""; }; FC9D037F20E22FBB000F735A /* FeedOp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedOp.swift; sourceTree = ""; }; FC9D038120E2312E000F735A /* FetchOp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchOp.swift; sourceTree = ""; }; FC9D038320E23B01000F735A /* Texture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Texture.swift; sourceTree = ""; }; + FCF2D73720E64E70007AC5F5 /* Kernel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Kernel.swift; path = "paddle-mobile/Operators/Kernels/Kernel.swift"; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -140,6 +148,7 @@ FC039B9420E11C9A0081E9F8 /* Extensions.swift */, FC039B9520E11C9A0081E9F8 /* Errors.swift */, FC039B9620E11C9A0081E9F8 /* Types.swift */, + FC60DB8820E9AAA500FF203F /* MetalExtension.swift */, ); path = Common; sourceTree = ""; @@ -157,8 +166,8 @@ FC039BA320E11CBC0081E9F8 /* Operators */ = { isa = PBXGroup; children = ( + FC086BA520E67E8500D85EF7 /* Kernels */, FCD592FA20E248EC00252966 /* Base */, - FCD592F920E248EC00252966 /* Kernels */, FC039BA420E11CBC0081E9F8 /* ConvOp.swift */, FC039BA520E11CBC0081E9F8 /* ElementwiseAddOp.swift */, FC039BA720E11CBC0081E9F8 /* BatchNormOp.swift */, @@ -185,9 +194,12 @@ path = Program; sourceTree = ""; }; - FCD592F920E248EC00252966 /* Kernels */ = { + FC086BA520E67E8500D85EF7 /* Kernels */ = { isa = PBXGroup; children = ( + FCF2D73720E64E70007AC5F5 /* Kernel.swift */, + FC1B16B220EC9A4F00678B91 /* Kernels.metal */, + FC1B186520ECF1C600678B91 /* ResizeKernel.swift */, ); path = Kernels; sourceTree = ""; @@ -308,6 +320,10 @@ FC039B9B20E11CA00081E9F8 /* Executor.swift in Sources */, FC039BBB20E11CC20081E9F8 /* ProgramDesc.swift in Sources */, FC9D037920E229E4000F735A /* OpParam.swift in Sources */, + FC1B186620ECF1C600678B91 /* ResizeKernel.swift in Sources */, + FCF2D73820E64E70007AC5F5 /* Kernel.swift in Sources */, + FC60DB8920E9AAA500FF203F /* MetalExtension.swift in Sources */, + FC1B16B320EC9A4F00678B91 /* Kernels.metal in Sources */, FC039BBA20E11CC20081E9F8 /* TensorDesc.swift in Sources */, FC039BA020E11CB20081E9F8 /* Dim.swift in Sources */, FC039BB820E11CC20081E9F8 /* framework.pb.swift in Sources */, @@ -461,17 +477,19 @@ CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = Z5M2UUN5YV; + DEVELOPMENT_TEAM = A798K58VVL; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "paddle-mobile/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MTL_LANGUAGE_REVISION = UseDeploymentTarget; PRODUCT_BUNDLE_IDENTIFIER = "orange.paddle-mobile"; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; @@ -487,17 +505,19 @@ CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = Z5M2UUN5YV; + DEVELOPMENT_TEAM = A798K58VVL; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "paddle-mobile/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MTL_LANGUAGE_REVISION = UseDeploymentTarget; PRODUCT_BUNDLE_IDENTIFIER = "orange.paddle-mobile"; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; diff --git a/metal/paddle-mobile/paddle-mobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist b/metal/paddle-mobile/paddle-mobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist index 50f16e4d7cfc755905c68ced31769d3ac1dd1049..52725213607bd68fccbd4aa63faa9294cb622962 100644 --- a/metal/paddle-mobile/paddle-mobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/metal/paddle-mobile/paddle-mobile.xcodeproj/xcuserdata/liuruilong.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ paddle-mobile.xcscheme orderHint - 4 + 3 diff --git a/metal/paddle-mobile/paddle-mobile/Common/Errors.swift b/metal/paddle-mobile/paddle-mobile/Common/Errors.swift index 0e37fd8c5125b8356afe500ead2050482c47a879..decb9509a613710232de9a006e5289662fe2cae5 100644 --- a/metal/paddle-mobile/paddle-mobile/Common/Errors.swift +++ b/metal/paddle-mobile/paddle-mobile/Common/Errors.swift @@ -20,4 +20,5 @@ public enum PaddleMobileError: Error{ case memoryError(message: String) case paramError(message: String) case opError(message: String) + case predictError(message: String) } diff --git a/metal/paddle-mobile/paddle-mobile/Common/MetalExtension.swift b/metal/paddle-mobile/paddle-mobile/Common/MetalExtension.swift new file mode 100644 index 0000000000000000000000000000000000000000..66166b8388ebab9d9196b5e78d0765bdc3a91877 --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Common/MetalExtension.swift @@ -0,0 +1,88 @@ +// +// MetalExtension.swift +// paddle-mobile +// +// Created by liuRuiLong on 2018/7/2. +// Copyright © 2018年 orange. All rights reserved. +// + +import Foundation + +fileprivate var defaultMetalLibrary: MTLLibrary? +fileprivate var paddleMobileMetalLibrary: MTLLibrary? + +extension MTLDevice { + func defaultLibrary() -> MTLLibrary { + if defaultMetalLibrary == nil { + defaultMetalLibrary = makeDefaultLibrary() + } + if let inDefaultLib = defaultMetalLibrary { + return inDefaultLib + } else { + fatalError(" default metal libary is nil") + } + } + + func paddleMobileLibrary() -> MTLLibrary { + if paddleMobileMetalLibrary == nil { + guard let path = Bundle.init(for: Kernel.self).path(forResource: "default", ofType: "metallib") else { + fatalError("Counld't find paddle mobile library") + } + do { + paddleMobileMetalLibrary = try makeLibrary(filepath: path) + } catch _ { + fatalError("Counld't load paddle mobile library") + } + paddleMobileMetalLibrary = makeDefaultLibrary() + } + + if let inPaddleMobileLib = paddleMobileMetalLibrary { + return inPaddleMobileLib + } else { + fatalError("PaddleMobile metal libary is nil") + } + } + + + func pipeLine(funcName: String, inPaddleMobileLib: Bool = true) -> MTLComputePipelineState { + let useLib = inPaddleMobileLib ? paddleMobileLibrary() : defaultLibrary() + guard let function = useLib.makeFunction(name: funcName) else { + fatalError(" function " + funcName + " not found") + } + do { + let pipLine = try makeComputePipelineState(function: function) + return pipLine + } catch _ { + fatalError("make pip line error occured") + } + + } +} + +extension MTLComputeCommandEncoder { + func dispatch(computePipline: MTLComputePipelineState, outTexture: MTLTexture) { + let slices = (outTexture.depth + 3)/4 + + let width = computePipline.threadExecutionWidth + let height = computePipline.maxTotalThreadsPerThreadgroup/width + let threadsPerGroup = MTLSize.init(width: width, height: height, depth: 1) + + let groupWidth = (outTexture.width + width - 1)/width + let groupHeight = (outTexture.height + height - 1)/height + let groupDepth = slices + let groups = MTLSize.init(width: groupWidth, height: groupHeight, depth: groupDepth) + + setComputePipelineState(computePipline) + dispatchThreadgroups(groups, threadsPerThreadgroup: threadsPerGroup) + } +} + + + + + + + + + + diff --git a/metal/paddle-mobile/paddle-mobile/Common/Types.swift b/metal/paddle-mobile/paddle-mobile/Common/Types.swift index 73169a5acc797c186b086b39fa30f3aa53e01236..f0d7c194d696942e03a3a991fe002a08899ee62f 100644 --- a/metal/paddle-mobile/paddle-mobile/Common/Types.swift +++ b/metal/paddle-mobile/paddle-mobile/Common/Types.swift @@ -40,3 +40,10 @@ extension Texture: Variant { extension ResultHolder: Variant { } + +extension InputTexture: Variant { +} + +extension MTLTexture where Self: Variant { + +} diff --git a/metal/paddle-mobile/paddle-mobile/Executor.swift b/metal/paddle-mobile/paddle-mobile/Executor.swift index 3f6a94a957c3af278fb6e29ad9dafb63eaa1b409..4baca148b118069e3a0f8c1479ca1507899d385e 100644 --- a/metal/paddle-mobile/paddle-mobile/Executor.swift +++ b/metal/paddle-mobile/paddle-mobile/Executor.swift @@ -64,17 +64,23 @@ public class Executor { } } - public func predict(input: Texture) throws -> ResultHolder

{ - program.scope[program.feedKey] = input + public func predict(input: MTLTexture, expect: [Int]) throws -> ResultHolder

{ + let inputTexture = InputTexture.init(inMTLTexture: input, inExpectDim: Dim.init(inDim: expect)) + program.scope.setInput(input: inputTexture) for op in ops { op.run() } - let outputVar = program.scope[program.fetchKey] + + guard let outputVar = program.scope.output() else { + throw PaddleMobileError.netError(message: "output nil") + } + guard let output = outputVar as? ResultHolder

else { throw PaddleMobileError.netError(message: "output var type error") } return output } + } //public let paddle_executor: Executor = Executor.init() diff --git a/metal/paddle-mobile/paddle-mobile/Loader.swift b/metal/paddle-mobile/paddle-mobile/Loader.swift index 21fd3e09378dc65ccb7157a107dd2e86a6177efd..8bec6f6ebc76587ff047768d782647d0f9ac51e1 100644 --- a/metal/paddle-mobile/paddle-mobile/Loader.swift +++ b/metal/paddle-mobile/paddle-mobile/Loader.swift @@ -81,7 +81,7 @@ public class Loader { } } public init(){} - public func load(modelPath: String, paraPath: String) throws -> Program{ + public func load(device: MTLDevice, modelPath: String, paraPath: String) throws -> Program{ guard let modelData = try? Data.init(contentsOf: URL.init(fileURLWithPath: modelPath)) else { throw PaddleMobileError.loaderError(message: "load " + modelPath + " failed !") } @@ -89,7 +89,6 @@ public class Loader { do { let protoProgram = try PaddleMobile_Framework_Proto_ProgramDesc.init( serializedData: modelData) - let scope = Scope.init() let programDesc = ProgramDesc.init(protoProgram: protoProgram) guard let paraLoader = try? ParaLoader.init(paramPath: paraPath) else { @@ -116,6 +115,8 @@ public class Loader { throw PaddleMobileError.loaderError(message: "feed key or fetch key not found") } + let scope = Scope.init(inFeedKey: feedKey, inFetchKey: fetchKey) + // to load memory for block in programDesc.blocks { for varDesc in block.vars { @@ -148,19 +149,18 @@ public class Loader { scope[varDesc.name] = tensor } else { let dim = Dim.init(inDim: tensorDesc.NHWCDim) - scope[varDesc.name] = Texture.init(inDim: dim, inLayout: .NHWC) + scope[varDesc.name] = Texture.init(device: device, inDim: dim) } } else { if varDesc.name == fetchKey { scope[varDesc.name] = ResultHolder

.init(inDim: [], inResult: []) } else if varDesc.name == feedKey { - scope[varDesc.name] = Texture.init() } } } } - let program = Program.init(protoProgramDesc: protoProgram, inParamPath: paraPath, inScope: scope, inFeedKey: feedKey, inFetchKey: fetchKey) + let program = Program.init(protoProgramDesc: protoProgram, inParamPath: paraPath, inScope: scope) return program } catch _ { diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Base/OpParam.swift b/metal/paddle-mobile/paddle-mobile/Operators/Base/OpParam.swift index 22e1baf9b09b7c6ed12d6bb1d92849c967ebf5e2..43f095d7008ad14ac71d610728e19ac6f6817800 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/Base/OpParam.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/Base/OpParam.swift @@ -23,11 +23,11 @@ import Foundation protocol OpParam { associatedtype OutputType: Variant - var output: OutputType { get } + var output: OutputType { get set } func outputDesc() -> String associatedtype ParamPrecisionType: PrecisionType - init(opDesc: OpDesc, scope: Scope) throws + init(opDesc: OpDesc, inScope: Scope) throws static func getFirstTensor(key: String, map: [String : [String]], from: Scope) throws -> VarType static func inputX(inputs: [String : [String]], from: Scope) throws -> VarType static func inputBiase(inputs: [String : [String]], from: Scope) throws -> VarType diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift b/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift index 259df421baa5a433ec0e852d861ecbe5b3aad493..d74d5ff93ce165313394b452679f1fb72593f898 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/Base/Operator.swift @@ -82,7 +82,7 @@ class Operator : OperatorProtocol{ attrs = opDesc.attrs paraInputs = opDesc.paraInputs do { - para = try ParamType.init(opDesc:opDesc, scope: inScope) + para = try ParamType.init(opDesc:opDesc, inScope: inScope) } catch let error { throw error } diff --git a/metal/paddle-mobile/paddle-mobile/Operators/BatchNormOp.swift b/metal/paddle-mobile/paddle-mobile/Operators/BatchNormOp.swift index 7a5733a70a854d972e477a0c5f57f3da517dcd22..9c6fb71fa17d799c11df6abbe9a9fee894e8865e 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/BatchNormOp.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/BatchNormOp.swift @@ -16,14 +16,14 @@ import Foundation struct BatchNormParam: OpParam { typealias ParamPrecisionType = P - init(opDesc: OpDesc, scope: Scope) throws { + init(opDesc: OpDesc, inScope: Scope) throws { do { - input = try BatchNormParam.inputX(inputs: opDesc.inputs, from: scope) - output = try BatchNormParam.outputY(outputs: opDesc.outputs, from: scope) - inputBias = try BatchNormParam.inputBiase(inputs: opDesc.paraInputs, from: scope) - inputMean = try BatchNormParam.inputMean(inputs: opDesc.paraInputs, from: scope) - inputScale = try BatchNormParam.inputScale(inputs: opDesc.paraInputs, from: scope) - inputVariance = try BatchNormParam.inputVariance(inputs: opDesc.paraInputs, from: scope) + input = try BatchNormParam.inputX(inputs: opDesc.inputs, from: inScope) + output = try BatchNormParam.outputY(outputs: opDesc.outputs, from: inScope) + inputBias = try BatchNormParam.inputBiase(inputs: opDesc.paraInputs, from: inScope) + inputMean = try BatchNormParam.inputMean(inputs: opDesc.paraInputs, from: inScope) + inputScale = try BatchNormParam.inputScale(inputs: opDesc.paraInputs, from: inScope) + inputVariance = try BatchNormParam.inputVariance(inputs: opDesc.paraInputs, from: inScope) epsilon = try BatchNormParam.getAttr(key: "epsilon", attrs: opDesc.attrs) momentum = try BatchNormParam.getAttr(key: "momentum", attrs: opDesc.attrs) is_test = try BatchNormParam.getAttr(key: "is_test", attrs: opDesc.attrs) @@ -32,7 +32,7 @@ struct BatchNormParam: OpParam { } } let input: Texture - let output: Texture + var output: Texture let inputBias: Tensor let inputMean: Tensor let inputScale: Tensor diff --git a/metal/paddle-mobile/paddle-mobile/Operators/ConvOp.swift b/metal/paddle-mobile/paddle-mobile/Operators/ConvOp.swift index bde8d537a1c98f237f546344df5791ad3b5b6ffa..3b1dcfc47050c79d6053bc0463272c0a88665c45 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/ConvOp.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/ConvOp.swift @@ -16,11 +16,11 @@ import Foundation struct ConvParam: OpParam { typealias ParamPrecisionType = P - init(opDesc: OpDesc, scope: Scope) throws { + init(opDesc: OpDesc, inScope: Scope) throws { do { - filter = try ConvParam.inputFilter(paraInputs: opDesc.paraInputs, from: scope) - input = try ConvParam.input(inputs: opDesc.inputs, from: scope) - output = try ConvParam.output(outputs: opDesc.outputs, from: scope) + filter = try ConvParam.inputFilter(paraInputs: opDesc.paraInputs, from: inScope) + input = try ConvParam.input(inputs: opDesc.inputs, from: inScope) + output = try ConvParam.output(outputs: opDesc.outputs, from: inScope) stride = try ConvParam.getAttr(key: "strides", attrs: opDesc.attrs) paddings = try ConvParam.getAttr(key: "paddings", attrs: opDesc.attrs) dilations = try ConvParam.getAttr(key: "dilations", attrs: opDesc.attrs) @@ -31,7 +31,7 @@ struct ConvParam: OpParam { } let input: Texture - let output: Texture + var output: Texture let filter: Tensor let stride: [Int32] let paddings: [Int32] diff --git a/metal/paddle-mobile/paddle-mobile/Operators/ElementwiseAddOp.swift b/metal/paddle-mobile/paddle-mobile/Operators/ElementwiseAddOp.swift index 8cae36254ec2bef687993ca086610cc1500be339..f0966c5b4d8ee358443fdbdf32d99d3e741aba1f 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/ElementwiseAddOp.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/ElementwiseAddOp.swift @@ -16,11 +16,11 @@ import Foundation struct ElementwiseAddParam: OpParam { typealias ParamPrecisionType = P - init(opDesc: OpDesc, scope: Scope) throws { + init(opDesc: OpDesc, inScope: Scope) throws { do { - input = try ElementwiseAddParam.inputX(inputs: opDesc.inputs, from: scope) - inputY = try ElementwiseAddParam.inputY(inputs: opDesc.inputs, from: scope) - output = try ElementwiseAddParam.outputOut(outputs: opDesc.outputs, from: scope) + input = try ElementwiseAddParam.inputX(inputs: opDesc.inputs, from: inScope) + inputY = try ElementwiseAddParam.inputY(inputs: opDesc.inputs, from: inScope) + output = try ElementwiseAddParam.outputOut(outputs: opDesc.outputs, from: inScope) axis = try ElementwiseAddParam.getAttr(key: "axis", attrs: opDesc.attrs) } catch let error { throw error @@ -28,7 +28,7 @@ struct ElementwiseAddParam: OpParam { } let input: Texture let inputY: Tensor

- let output: Texture + var output: Texture let axis: Int } diff --git a/metal/paddle-mobile/paddle-mobile/Operators/FeedOp.swift b/metal/paddle-mobile/paddle-mobile/Operators/FeedOp.swift index e0250780ac019aaaf01071f556256856d3e8f6f0..9055fcd7e7b6a97d6e291d5086e5fd10855e2d82 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/FeedOp.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/FeedOp.swift @@ -16,12 +16,15 @@ import Foundation struct FeedParam: OpParam{ var output: Texture - var input: Texture + var input: InputTexture { + return scope.input() as! InputTexture + } + let scope: Scope - init(opDesc: OpDesc, scope: Scope) throws { + init(opDesc: OpDesc, inScope: Scope) throws { + scope = inScope do { - input = try FeedParam.inputX(inputs: opDesc.inputs, from: scope) - output = try FeedParam.outputOut(outputs: opDesc.outputs, from: scope) + output = try FeedParam.outputOut(outputs: opDesc.outputs, from: inScope) } catch let error { throw error } @@ -34,10 +37,15 @@ class FeedOp: Operator>, Runable, Creator, InferS typealias OpType = FeedOp

func inferShape() { +// print("feed input: \(para.input.expectDim)") + print("feed output: \(para.output.dim)") + +// para.ou/tput.dim = para.input.expectDim } func runImpl() { print("feed op") +// let resizeKernel = ResizeKernel.init(device: <#T##MTLDevice#>) } } diff --git a/metal/paddle-mobile/paddle-mobile/Operators/FetchOp.swift b/metal/paddle-mobile/paddle-mobile/Operators/FetchOp.swift index d58cf945869a5d51da04524bdcec146bbe898361..6e7024909a65475fd1870d7bae01894dbe7f0395 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/FetchOp.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/FetchOp.swift @@ -15,13 +15,13 @@ import Foundation struct FetchParam: OpParam{ - let output: ResultHolder

+ var output: ResultHolder

= ResultHolder.init(inDim: [], inResult: []) let input: Texture - - init(opDesc: OpDesc, scope: Scope) throws { + let scope: Scope + init(opDesc: OpDesc, inScope: Scope) throws { + scope = inScope do { - input = try FetchParam.inputX(inputs: opDesc.inputs, from: scope) - output = try FetchParam.outputOut(outputs: opDesc.outputs, from: scope) + input = try FetchParam.inputX(inputs: opDesc.inputs, from: inScope) } catch let error { throw error } @@ -32,6 +32,7 @@ struct FetchParam: OpParam{ class FetchOp: Operator>, Runable, Creator, InferShaperable{ func inferShape() { + print(para.input.dim) } diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/Kernel.swift b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/Kernel.swift new file mode 100644 index 0000000000000000000000000000000000000000..1fa44c4b975ce543b2a5feafb4a5e19df419a043 --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/Kernel.swift @@ -0,0 +1,31 @@ +/* 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 Metal +import Foundation + +protocol Computable { + associatedtype ParamType + func compute(commandBuffer: MTLCommandBuffer, param: ParamType) throws +} + +class Kernel { + let pipline: MTLComputePipelineState + let functionName: String + init(device: MTLDevice, inFunctionName: String) { + pipline = device.pipeLine(funcName: inFunctionName) + functionName = inFunctionName + } +} + diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/Kernels.metal b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/Kernels.metal new file mode 100644 index 0000000000000000000000000000000000000000..0b23f5eb4e398ff787d45829db89a4cc3b3b2032 --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/Kernels.metal @@ -0,0 +1,34 @@ +// +// Kernels.metal +// paddle-mobile +// +// Created by liuRuiLong on 2018/7/4. +// Copyright © 2018年 orange. All rights reserved. +// + +#include +using namespace metal; + +struct OutputDim { + ushort width; + ushort height; + ushort strideX; + ushort strideY; +}; + +kernel void resize( + texture2d inTexture [[texture(0)]], + texture2d outTexture [[texture(1)]], + constant OutputDim ¶ms [[buffer(0)]], + uint2 gid [[thread_position_in_grid]]) { + if (gid.x >= outTexture.get_width() || + gid.y >= outTexture.get_height()) { + return; + } + + constexpr sampler s(coord::pixel, filter::nearest, address::clamp_to_zero); + const uint2 pos = gid.xy * uint2(params.strideX, params.strideY); + const half4 input = inTexture.read(pos); + outTexture.write(half4(input.x, input.y, input.z, 0.0h), gid); +} + diff --git a/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ResizeKernel.swift b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ResizeKernel.swift new file mode 100644 index 0000000000000000000000000000000000000000..edd79fb0c005c172a6d687f893be28b1319342ae --- /dev/null +++ b/metal/paddle-mobile/paddle-mobile/Operators/Kernels/ResizeKernel.swift @@ -0,0 +1,46 @@ +// +// ResizeKernel.swift +// paddle-mobile +// +// Created by liuRuiLong on 2018/7/4. +// Copyright © 2018年 orange. All rights reserved. +// + +import Foundation + + +struct ResizeParam { + let input: MTLTexture + let output: MTLTexture + let expectDim: Dim +} + +struct OutputDim { + let width: UInt16 + let height: UInt16 + let strideX: UInt16 + let strideY: UInt16 +} + +class ResizeKernel: Kernel, Computable{ + func compute(commandBuffer: MTLCommandBuffer, param: ResizeParam) throws { + guard let encoder = commandBuffer.makeComputeCommandEncoder() else { + throw PaddleMobileError.predictError(message: " encode is nil") + } + + encoder.setTexture(param.input, index: 0) + encoder.setTexture(param.output, index: 1) + + let strideX = param.input.width/param.expectDim[2] + let strideY = param.input.height/param.expectDim[1] + var outputDim = OutputDim.init(width: UInt16(param.expectDim[1]), height: UInt16(param.expectDim[2]), strideX: UInt16(strideX), strideY: UInt16(strideY)) + encoder.setBytes(&outputDim, length: MemoryLayout.size, index: 0) + encoder.dispatch(computePipline: pipline, outTexture: param.output) + encoder.endEncoding() + } + + init(device: MTLDevice) { + super.init(device: device, inFunctionName: "resize") + } +} + diff --git a/metal/paddle-mobile/paddle-mobile/Operators/ReluOp.swift b/metal/paddle-mobile/paddle-mobile/Operators/ReluOp.swift index d641d13ecbcf1f4e70a0ff056eab5c68b4fc30ae..e9a8d9557ef7d75a58d1a8f7f7e4208efc24a921 100644 --- a/metal/paddle-mobile/paddle-mobile/Operators/ReluOp.swift +++ b/metal/paddle-mobile/paddle-mobile/Operators/ReluOp.swift @@ -16,16 +16,16 @@ import Foundation struct ReluParam: OpParam { typealias ParamPrecisionType = P - init(opDesc: OpDesc, scope: Scope) throws { + init(opDesc: OpDesc, inScope: Scope) throws { do { - input = try ReluParam.inputX(inputs: opDesc.inputs, from: scope) - output = try ReluParam.outputOut(outputs: opDesc.outputs, from: scope) + input = try ReluParam.inputX(inputs: opDesc.inputs, from: inScope) + output = try ReluParam.outputOut(outputs: opDesc.outputs, from: inScope) } catch let error { throw error } } let input: Texture - let output: Texture + var output: Texture } class ReluOp: Operator>, Runable, Creator, InferShaperable{ diff --git a/metal/paddle-mobile/paddle-mobile/Program/Program.swift b/metal/paddle-mobile/paddle-mobile/Program/Program.swift index 5a93e79338b5d694178313064cf49cfbb0d969db..a346af8304688ba766928c6c6132dc7b840e683d 100644 --- a/metal/paddle-mobile/paddle-mobile/Program/Program.swift +++ b/metal/paddle-mobile/paddle-mobile/Program/Program.swift @@ -16,15 +16,11 @@ import Foundation public struct Program { let paramPath: String - let feedKey: String - let fetchKey: String let programDesc: ProgramDesc let scope: Scope - init(protoProgramDesc: PaddleMobile_Framework_Proto_ProgramDesc, inParamPath: String, inScope: Scope, inFeedKey: String, inFetchKey: String) { + init(protoProgramDesc: PaddleMobile_Framework_Proto_ProgramDesc, inParamPath: String, inScope: Scope) { programDesc = ProgramDesc.init(protoProgram: protoProgramDesc) paramPath = inParamPath scope = inScope - feedKey = inFeedKey - fetchKey = inFetchKey } } diff --git a/metal/paddle-mobile/paddle-mobile/Program/Scope.swift b/metal/paddle-mobile/paddle-mobile/Program/Scope.swift index 7ad95fa5357941c5c24163b37a7eaf6961e4be7e..026759df304ed470fc148b0ac2a29e061d6040d1 100644 --- a/metal/paddle-mobile/paddle-mobile/Program/Scope.swift +++ b/metal/paddle-mobile/paddle-mobile/Program/Scope.swift @@ -15,6 +15,29 @@ import Foundation class Scope { + let feedKey: String + let fetchKey: String + func setInput(input: Variant) { + vars[feedKey] = input + } + + func setOutput(output: Variant) { + vars[fetchKey] = output + } + + func input() -> Variant? { + return vars[feedKey]; + } + + func output() -> Variant? { + return vars[fetchKey]; + } + + init(inFeedKey: String, inFetchKey: String) { + feedKey = inFeedKey + fetchKey = inFetchKey + } + var vars: [String : Variant] = [:] subscript(key: String) -> Variant?{ get { diff --git a/metal/paddle-mobile/paddle-mobile/framework/Dim.swift b/metal/paddle-mobile/paddle-mobile/framework/Dim.swift index 633b2a32de8945f38f131ab875828b2a14ddc9eb..1a0e5b2536efdaf8de32378ede3f11dd58f43b25 100644 --- a/metal/paddle-mobile/paddle-mobile/framework/Dim.swift +++ b/metal/paddle-mobile/paddle-mobile/framework/Dim.swift @@ -15,7 +15,7 @@ import Foundation public struct Dim { - init(inDim: [Int]) { + public init(inDim: [Int]) { dims = inDim } diff --git a/metal/paddle-mobile/paddle-mobile/framework/Tensor.swift b/metal/paddle-mobile/paddle-mobile/framework/Tensor.swift index 19857280b37a6b428088964f3d7ff12bb6fee706..a7e4f8264fd5608056fc8265104cce3371bcbc4d 100644 --- a/metal/paddle-mobile/paddle-mobile/framework/Tensor.swift +++ b/metal/paddle-mobile/paddle-mobile/framework/Tensor.swift @@ -18,10 +18,8 @@ protocol Tensorial: CustomStringConvertible, CustomDebugStringConvertible{ var dim: Dim { get set } func numel() -> Int var layout: DataLayout { get } - init(inDim: Dim, inLayout: DataLayout) } - extension Tensorial { func numel() -> Int { return dim.numel() diff --git a/metal/paddle-mobile/paddle-mobile/framework/Texture.swift b/metal/paddle-mobile/paddle-mobile/framework/Texture.swift index 29888067dd0799493439dc6dd0e8f2129646d900..1e650c99e65c1333617f0213a9425b2ffe0eb817 100644 --- a/metal/paddle-mobile/paddle-mobile/framework/Texture.swift +++ b/metal/paddle-mobile/paddle-mobile/framework/Texture.swift @@ -15,29 +15,96 @@ import Metal import Foundation +class InputTexture { + let mtlTexture: MTLTexture + let expectDim: Dim + init(inMTLTexture: MTLTexture, inExpectDim: Dim) { + mtlTexture = inMTLTexture + expectDim = inExpectDim + } +} + +extension InputTexture { + var description: String { + get{ + return mtlTexture.description + } + } + + var debugDescription: String { + get { + return mtlTexture.debugDescription ?? " MetalTexture " + } + } +} + public class Texture: Tensorial { var dim: Dim + let textureDesc: MTLTextureDescriptor + var metalTexture: MTLTexture - required public init(inDim: Dim, inLayout: DataLayout = .NHWC) { + init(device: MTLDevice, inDim: Dim, inLayout: DataLayout = .NHWC) { dim = inDim layout = inLayout + let tmpTextureDes = MTLTextureDescriptor.init() + if inDim.cout() == 1 { + tmpTextureDes.width = inDim[0] + tmpTextureDes.textureType = .type1D + } else if inDim.cout() == 4 { + tmpTextureDes.height = inDim[1] + tmpTextureDes.width = inDim[2] +// print("n : \(inDim[0])") +// print(inDim[3] * inDim[0]) + tmpTextureDes.depth = 1 + tmpTextureDes.arrayLength = (inDim[3] * inDim[0] + 3)/4 + tmpTextureDes.textureType = .type2DArray + } else { + fatalError(" didn't support yet") + } + tmpTextureDes.pixelFormat = .r32Float + tmpTextureDes.storageMode = .shared + textureDesc = tmpTextureDes + metalTexture = device.makeTexture(descriptor: tmpTextureDes) ?! " texture nil " } - private(set) var layout: DataLayout - - // let texture: MTLTexture - - public init(inTexture: MTLTexture, inDim: Dim) { - // texture = inTexture - dim = inDim - layout = .NHWC - } +// required public init(inDim: Dim, inLayout: DataLayout = .NHWC, inTexture: MTLTexture) { +// dim = inDim +// layout = inLayout +// metalTexture = inTexture +// let tmpTextureDes = MTLTextureDescriptor.init() +// +// if inDim.cout() == 1 { +// tmpTextureDes.width = inDim[0] +// tmpTextureDes.textureType = .type1D +// } else if inDim.cout() == 2 { +// tmpTextureDes.height = inDim[0] +// tmpTextureDes.width = inDim[1] +// tmpTextureDes.textureType = .type2D +// } else if inDim.cout() == 3 { +// fatalError(" not support texture dim 3") +// } else if inDim.cout() == 4 { +// tmpTextureDes.height = inDim[1] +// tmpTextureDes.width = inDim[2] +// tmpTextureDes.depth = inDim[3] * inDim[1] +// tmpTextureDes.textureType = .type2DArray +// } +// +// tmpTextureDes.pixelFormat = .r32Float +// tmpTextureDes.storageMode = .shared +// textureDesc = tmpTextureDes +// let device = MTLCreateSystemDefaultDevice() +// metalTexture = device!.makeTexture(descriptor: tmpTextureDes)! +// } - public init(inLayout: DataLayout = .NHWC) { - dim = Dim.init(inDim: []) - layout = inLayout - } +// init() { +// dim = Dim.init(inDim: []) +// layout = .NCHW +// let device = MTLCreateSystemDefaultDevice() +// textureDesc = MTLTextureDescriptor.init() +// metalTexture = device!.makeTexture(descriptor: textureDesc)! +// } + private(set) var layout: DataLayout } extension Texture {