From d29e3c01a9d2e8299ea240cfa79b4dba795566b9 Mon Sep 17 00:00:00 2001 From: Mautisim Munir Date: Sat, 5 Nov 2022 22:28:00 +0500 Subject: [PATCH] working cocoa pod with framework --- WORKSPACE | 4 +- .../examples/ios/posetracking-lindera/Podfile | 4 +- .../UserInterfaceState.xcuserstate | Bin 90809 -> 140528 bytes .../objc/solutions/posetracking_gpu/BUILD | 39 +++- mediapipe/swift/solutions/lindera/BUILD | 3 + .../swift/solutions/lindera/Lindera.swift | 182 +++++++++--------- .../lindera/LinderaDetection.podspec | 43 +++-- mediapipe/swift/solutions/lindera/README.md | 13 ++ third_party/opencv_ios.BUILD | 6 + 9 files changed, 178 insertions(+), 116 deletions(-) create mode 100644 mediapipe/swift/solutions/lindera/README.md diff --git a/WORKSPACE b/WORKSPACE index a131001a1..19d988f0a 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -528,11 +528,11 @@ load("@build_bazel_rules_android//android:rules.bzl", "android_ndk_repository", android_sdk_repository( name = "androidsdk", build_tools_version = "30.0.3", - path = "/Users/tj/Library/Android/sdk", # Path to Android SDK, optional if $ANDROID_HOME is set + # path = "/Users/tj/Library/Android/sdk", # Path to Android SDK, optional if $ANDROID_HOME is set ) android_ndk_repository( name = "androidndk", # Required. Name *must* be "androidndk". api_level = 21, - path = "/Users/tj/Library/Android/sdk/ndk/21.4.7075529", # Optional. Can be omitted if `ANDROID_NDK_HOME` environment variable is set. + # path = "/Users/tj/Library/Android/sdk/ndk/21.4.7075529", # Optional. Can be omitted if `ANDROID_NDK_HOME` environment variable is set. ) diff --git a/mediapipe/examples/ios/posetracking-lindera/Podfile b/mediapipe/examples/ios/posetracking-lindera/Podfile index d680af3a4..d2309ed77 100644 --- a/mediapipe/examples/ios/posetracking-lindera/Podfile +++ b/mediapipe/examples/ios/posetracking-lindera/Podfile @@ -1,10 +1,12 @@ # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' +source 'https://github.com/copper-labs/CocoaSpecs.git' target 'PoseTrackingLindera' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! - pod 'LinderaDetection', :path => 'LinderaDetection' + + pod 'LinderaDetection' #, :path => 'LinderaDetection' # Pods for PoseTrackingLindera diff --git a/mediapipe/examples/ios/posetracking-lindera/PoseTrackingLindera.xcworkspace/xcuserdata/tj.xcuserdatad/UserInterfaceState.xcuserstate b/mediapipe/examples/ios/posetracking-lindera/PoseTrackingLindera.xcworkspace/xcuserdata/tj.xcuserdatad/UserInterfaceState.xcuserstate index c3034361703b92dbc12678547015a09d873214da..30d055d46da8cc56274d1d7f23b7c9d79cdc0714 100644 GIT binary patch literal 140528 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 diff --git a/mediapipe/objc/solutions/posetracking_gpu/BUILD b/mediapipe/objc/solutions/posetracking_gpu/BUILD index 43708389b..251c59767 100644 --- a/mediapipe/objc/solutions/posetracking_gpu/BUILD +++ b/mediapipe/objc/solutions/posetracking_gpu/BUILD @@ -6,6 +6,10 @@ load( "ios_static_framework", "ios_unit_test", ) +load( + "@build_bazel_rules_apple//apple:apple.bzl", + "apple_static_xcframework", +) load( "//mediapipe/examples/ios:bundle_id.bzl", "BUNDLE_ID_PREFIX", @@ -67,10 +71,22 @@ ios_static_framework( visibility = ["//visibility:public"], deps = [ "//mediapipe/objc/solutions/posetracking_gpu:posetracking_gpu_solution", - "//mediapipe/calculators/core:flow_limiter_calculator", # "//third_party:opencv", - "@ios_opencv//:OpencvFramework", + # "@ios_opencv//:OpencvFramework", + ], +) + +apple_static_xcframework( + name = "MPPoseTrackingXC", + bundle_name = "MPPoseTracking", + minimum_os_versions = {"ios": "12.0"}, + public_hdrs = MPP_HEADERS + MP_GEN_IOS_HEADERS, + deps = [ + "//mediapipe/objc/solutions/posetracking_gpu:posetracking_gpu_solution", + + # "//third_party:opencv", + # "@ios_opencv//:OpencvFramework", ], ) @@ -133,10 +149,15 @@ genrule( objc_library( name = "posetracking_gpu_solution", - srcs = glob([ - "*.h", - "*.mm", - ]), + srcs = [ + "PoseTrackingOptions.mm", + "PoseTrackingResults.mm", + "PoseTracking.mm", + ] + select({ + "//mediapipe:ios_i386": [], + "//mediapipe:ios_x86_64": [], + "//conditions:default": [], + }), hdrs = MPP_HEADERS + MP_GEN_IOS_HEADERS, copts = [ "-Wno-shorten-64-to-32", @@ -168,13 +189,13 @@ objc_library( "//mediapipe/objc:mediapipe_framework_ios", "//mediapipe/objc:mediapipe_input_sources_ios", "//mediapipe/objc:mediapipe_layer_renderer", + "//mediapipe/graphs/pose_tracking:pose_tracking_gpu_deps", + "//mediapipe/framework/formats:landmark_cc_proto", + "calculator_registry", ] + select({ "//mediapipe:ios_i386": [], "//mediapipe:ios_x86_64": [], "//conditions:default": [ - "//mediapipe/graphs/pose_tracking:pose_tracking_gpu_deps", - "//mediapipe/framework/formats:landmark_cc_proto", - "calculator_registry", ], }), alwayslink = True, diff --git a/mediapipe/swift/solutions/lindera/BUILD b/mediapipe/swift/solutions/lindera/BUILD index 9185b3750..962d19f29 100644 --- a/mediapipe/swift/solutions/lindera/BUILD +++ b/mediapipe/swift/solutions/lindera/BUILD @@ -20,10 +20,13 @@ genrule( srcs = [ "//mediapipe/objc/solutions/posetracking_gpu:MPPoseTrackingHeaderPatched", "LinderaDetection.podspec", + "@ios_opencv//:OpencvFrameworkContents", ] + glob(["*.swift"]), outs = ["LinderaDetection.zip"], cmd = """ + mkdir mediapipe/swift/solutions/lindera/frameworks + cp -r external/ios_opencv/opencv2.framework mediapipe/swift/solutions/lindera/frameworks unzip $(location //mediapipe/objc/solutions/posetracking_gpu:MPPoseTrackingHeaderPatched) -d mediapipe/swift/solutions/lindera/frameworks cd mediapipe/swift/solutions/lindera/ diff --git a/mediapipe/swift/solutions/lindera/Lindera.swift b/mediapipe/swift/solutions/lindera/Lindera.swift index 2943c2416..3a380c923 100644 --- a/mediapipe/swift/solutions/lindera/Lindera.swift +++ b/mediapipe/swift/solutions/lindera/Lindera.swift @@ -1,31 +1,32 @@ // This is the copperlabs posetracking api built in objective c -import MPPoseTracking import UIKit +#if arch(arm64) +import MPPoseTracking /// A helper class to run the Pose Tracking API /// TFLite models are also loaded when you initialize this class public final class Lindera{ - - + + //MARK: - Public Class API - - + + // A delegate to handle results public weak var delegate: LinderaDelegate? - + /// This function sets up your callback function to happen whenver there is an fps update public func setFpsDelegate(fpsDelegate: @escaping (_ fps:Double)->Void){ fpsHelper.onFpsUpdate = fpsDelegate; } - + // Get the camera UI View that may contain landmarks drawing public var cameraView: UIView { return self.linderaExerciseSession } - - + + // Show Landmarks - works instantaneously! public func showLandmarks(value:Bool){ self.poseTracking.showLandmarks(value) @@ -38,50 +39,50 @@ public final class Lindera{ public func getModelComplexity() -> Int { return Int(self.poseTracking.poseTrackingOptions.modelComplexity); } - + // Set the model complexity and restart detection to load new models public func setModelComplexityNow(complexity:Int){ let poseTrackingOptions = poseTracking.poseTrackingOptions - + poseTrackingOptions?.modelComplexity = Int32(complexity) - + poseTracking = PoseTracking(poseTrackingOptions: poseTrackingOptions) startPoseTracking() startCamera() - + } - + public required init(){ - + startPoseTracking() } - - + + public func startCamera(_ completion: ((Result) -> Void)? = nil) { // set our rendering layer frame according to cameraView boundry self.poseTracking.renderer.layer.frame = cameraView.layer.bounds // attach render CALayer on cameraView to render output to self.cameraView.layer.addSublayer(self.poseTracking.renderer.layer) - + self.cameraSource.requestCameraAccess( - completionHandler: {(granted:Bool)->Void in - if (granted){ - self.poseTracking.videoQueue.async(execute:{ [weak self] in - - self?.cameraSource.start() - - } ) - completion?(.success(Void())) - }else{ - - completion?(.failure(preconditionFailure("Camera Access Not Granted"))) - - } - }) - - - - + completionHandler: {(granted:Bool)->Void in + if (granted){ + self.poseTracking.videoQueue.async(execute:{ [weak self] in + + self?.cameraSource.start() + + } ) + completion?(.success(Void())) + }else{ + + completion?(.failure(preconditionFailure("Camera Access Not Granted"))) + + } + }) + + + + } /// Choose front or back camera. Must restart camera after use if already started public func selectCamera(_ position: AVCaptureDevice.Position, _ completion: ((Result) -> Void)? = nil) { @@ -89,23 +90,23 @@ public final class Lindera{ self?.cameraSource.cameraPosition = position completion?(.success(Void())) } - + } - - + + // MARK: - Private Class Functions - + // Set your custom view heree private lazy var linderaExerciseSession: UIView = { - + // this will be the main camera view; Change it to custom view class to get desired results let liveView = UIView() - + return liveView - + }() - - + + private func startPoseTracking(){ // set camera preferences self.cameraSource.sessionPreset = AVCaptureSession.Preset.high.rawValue @@ -116,43 +117,43 @@ public final class Lindera{ } // call LinderaDelegate on pose tracking results self.poseTracking.poseTrackingResultsListener = {[weak self] results in - - + + guard let self = self, let results = results else { return } - + self.delegate?.lindera(self, didDetect: .init(pose: Asensei3DPose.init(results), timestamp: CMTimeGetSeconds(self.poseTracking.timeStamp))) } self.poseTracking.graphOutputStreamListener = {[weak self] in self?.fpsHelper.logTime() } - + self.poseTracking.startGraph() // attach camera's output with poseTracking object and its videoQueue self.cameraSource.setDelegate(self.poseTracking, queue: self.poseTracking.videoQueue) } - - + + func stopCamera(){ if (self.cameraSource.isRunning){ self.poseTracking.videoQueue.async { [weak self] in self?.cameraSource.stop() } - + } } - + /// switches camera from front to back and vice versa func switchCamera(_ completion: ((Result) -> Void)? = nil) { self.poseTracking.videoQueue.async { [weak self] in if let self = self { - + self.stopCamera() self.startCamera(completion) - + switch(self.cameraSource.cameraPosition){ - + case .unspecified: completion?(.failure(preconditionFailure("Unkown Camera Position"))) case .back: @@ -161,34 +162,34 @@ public final class Lindera{ self.selectCamera(AVCaptureDevice.Position.back,completion) @unknown default: completion?(.failure(preconditionFailure("Unkown Camera Position"))) - + } - - + + } - + } } - - + + // MARK: - Private Class Objects // initalize the PoseTracking api and load models var poseTracking:PoseTracking = PoseTracking(poseTrackingOptions: PoseTrackingOptions(showLandmarks: true,modelComplexity: 1)) - + // Needed to get fps of model let fpsHelper = FPSHelper(smoothingFactor: 0.95) - + // attach Mediapipe camera helper to our class let cameraSource = MPPCameraInputSource() - - - + + + } public protocol LinderaDelegate: AnyObject { - + func lindera(_ lindera: Lindera, didDetect event: Asensei3DPose.Event) } @@ -199,61 +200,61 @@ func landmarkToBodyJointDetails(landmark: PoseLandmark) -> Asensei3DPose.BodyJoi } // MARK: - Helpers extension Asensei3DPose { - + init(_ pose: PoseTrackingResults) { - + self.nose = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_NOSE]) - + self.leftEyeInner = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_EYE_INNER]) self.leftEye = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_EYE]) self.leftEyeOuter = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_EYE_OUTER]) - + self.rightEyeInner = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_EYE_OUTER]) self.rightEye = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_EYE]) self.rightEyeOuter = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_EYE_OUTER]) - + self.leftEar = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_EAR]) self.rightEar = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_EAR]) - + self.mouthLeft = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_MOUTH_LEFT]) self.mouthRight = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_MOUTH_RIGHT]) - + self.leftShoulder = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_SHOULDER]) self.rightShoulder = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_SHOULDER]) - + self.leftElbow = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_ELBOW]) self.rightElbow = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_ELBOW]) - + self.leftWrist = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_WRIST]) self.rightWrist = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_WRIST]) - + self.leftPinky = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_PINKY]) self.rightPinky = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_PINKY]) - + self.leftIndex = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_INDEX]) self.rightIndex = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_INDEX]) - + self.leftThumb = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_THUMB]) self.rightThumb = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_THUMB]) - + self.leftHip = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_HIP]) self.rightHip = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_HIP]) - + self.leftKnee = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_KNEE]) self.rightKnee = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_KNEE]) - + self.rightAnkle = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_ANKLE]) self.leftAnkle = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_ANKLE]) - - + + self.rightHeel = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_HEEL]) self.leftHeel = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_HEEL]) - + self.rightFoot = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_RIGHT_FOOT]) self.leftFoot = landmarkToBodyJointDetails(landmark: pose.landmarks[POSE_LEFT_FOOT]) - - - + + + } } @@ -265,3 +266,6 @@ extension Asensei3DPose { // self.z = vector.y // } //} +#else +final public class Lindera{} +#endif diff --git a/mediapipe/swift/solutions/lindera/LinderaDetection.podspec b/mediapipe/swift/solutions/lindera/LinderaDetection.podspec index d7389d204..d0f2961de 100644 --- a/mediapipe/swift/solutions/lindera/LinderaDetection.podspec +++ b/mediapipe/swift/solutions/lindera/LinderaDetection.podspec @@ -16,15 +16,15 @@ Pod::Spec.new do |spec| # spec.name = "LinderaDetection" - spec.version = "0.0.1" - spec.summary = "LinderaDetection is a simple yet powerful interface to run AI Health Solutions" + spec.version = "0.0.2" + spec.summary = "LinderaDetection is a simple yet powerful interface to run AI Fitness Solutions" # This description is used to generate tags and improve search results. # * Think: What does it do? Why did you write it? What is the focus? # * Try to keep it short, snappy and to the point. # * Write the description between the DESC delimiters below. # * Finally, don't worry about the indent, CocoaPods strips it! - spec.description = "LinderaDetection is a simple yet powerful interface to run AI Health Solutions" + spec.description = "LinderaDetection is a simple yet powerful interface to run AI Fitness Solutions. It is powered by Mediapipe." spec.homepage = "https://github.com/udamaster/mediapipe" # spec.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif" @@ -37,8 +37,11 @@ Pod::Spec.new do |spec| # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. # - spec.license = "MIT (example)" - spec.license = { :type => "MIT"} + spec.license = { :type => 'MIT', :text => <<-LICENSE + Copyright 2012 + Permission is granted to... + LICENSE + } # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # @@ -59,7 +62,7 @@ Pod::Spec.new do |spec| # If this Pod runs only on iOS or OS X, then specify the platform and # the deployment target. You can optionally include the target after the platform. # - + spec.swift_versions = ["4.0"] # spec.platform = :ios spec.platform = :ios, "12.0" @@ -74,9 +77,12 @@ Pod::Spec.new do |spec| # # Specify the location from where the source should be retrieved. # Supports git, hg, bzr, svn and HTTP. - # + + spec.source = { :http => 'https://github.com/copper-labs/iOSFramework/releases/download/0.1.0/LinderaDetection.zip' } - spec.source = { :http => 'https://edge-engine-store.s3.amazonaws.com/libs/ios/EdgeEngine/pod/EdgeEngine.zip' } + # for quickly testing locally + # spec.source = { :http => 'http://127.0.0.1:8000/LinderaDetection.zip' } + # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # # @@ -128,14 +134,21 @@ Pod::Spec.new do |spec| # spec.requires_arc = true # spec.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } - spec.dependency "OpenCV", "3.2" + # spec.dependency "OpenCV", "3.2" spec.static_framework = true - + # spec.preserve_paths = "frameworks/**/*" spec.ios.vendored_frameworks = 'frameworks/*.framework' - # spec.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lc++' } - # spec.user_target_xcconfig = {'OTHER_LDFLAGS' => '-lc++' } + spec.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' , + 'OTHER_LDFLAGS' => '$(inherited) -force_load $(PODS_ROOT)/LinderaDetection/frameworks/MPPoseTracking.framework/MPPoseTracking' } + spec.user_target_xcconfig = { + 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' , + 'OTHER_LDFLAGS' => '$(inherited) -force_load $(PODS_ROOT)/LinderaDetection/frameworks/MPPoseTracking.framework/MPPoseTracking' } spec.libraries = 'stdc++' - # ――― Temporary Architecture fixes - spec.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } - spec.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } + + + # spec.xcconfig = { + # 'FRAMEWORK_SEARCH_PATH[sdk=iphoneos*]' => '$(inherited) "$(PODS_ROOT)/frameworks"', + # 'OTHERCFLAGS[sdk=iphoneos*]' => '$(inherited) -iframework "$(PODS_ROOT)/frameworks"', + # 'OTHER_LDFLAGS[sdk=iphoneos*]' => '$(inherited) -framework frameworks' + # } end diff --git a/mediapipe/swift/solutions/lindera/README.md b/mediapipe/swift/solutions/lindera/README.md new file mode 100644 index 000000000..7cfe9b747 --- /dev/null +++ b/mediapipe/swift/solutions/lindera/README.md @@ -0,0 +1,13 @@ +## CocoaPods + +### Building Pod zipfile +```shell +bazel build -c opt --config=ios_fat --cxxopt=--std=c++17 --copt=-fembed-bitcode //mediapipe/swift/solutions/lindera:podgen +``` + +### Pushing Pods + +here clspecs is the name of pod specs repository +```shell +pod repo push clspecs LinderaDetection.podspec --skip-import-validation +``` diff --git a/third_party/opencv_ios.BUILD b/third_party/opencv_ios.BUILD index c9f112075..6a20a2f45 100644 --- a/third_party/opencv_ios.BUILD +++ b/third_party/opencv_ios.BUILD @@ -10,6 +10,12 @@ load( "apple_static_framework_import", ) +filegroup( + name = "OpencvFrameworkContents", + srcs = glob(["opencv2.framework/**"]), + visibility = ["//visibility:public"], +) + apple_static_framework_import( name = "OpencvFramework", framework_imports = glob(["opencv2.framework/**"]),