在iOS端部署深度學習

apple machine blog

Apple's coremltools quantization

A deep dive into Apple's coremltools quantization and how to reduce the size of a Core ML model without losing accuracy and performance

1.原Core ML簡介及實時目標檢測及Caffe TensorFlow coremltools模型轉(zhuǎn)換
2.CoreML學習——轉(zhuǎn)換caffe模型并應用到 iOS App中

- (NSString *)predictImageScene:(UIImage *)image {
    GoogLeNetPlaces *model = [[GoogLeNetPlaces alloc] init];
    NSError *error;
    UIImage *scaledImage = [image scaleToSize:CGSizeMake(224, 224)];
    CVPixelBufferRef buffer = [image pixelBufferFromCGImage:scaledImage];
    GoogLeNetPlacesInput *input = [[GoogLeNetPlacesInput alloc] initWithSceneImage:buffer];
    GoogLeNetPlacesOutput *output = [model predictionFromFeatures:input error:&error];
    return output.sceneLabel;
}
-(void)prediction{
    Resnet50 *resnetModel = [[Resnet50 alloc] init];
    UIImage *image = showImg.image;
    // 從生成的類中加載 ML 模型寇蚊,VNCoreMLModel 只是用于 Vision 請求的 Core ML 模型的容器
    //可以在 Vision 模型中包裝任意的圖像分析 Core ML 模型
    //標準的 Vision 工作流程是創(chuàng)建模型跋选,創(chuàng)建一或多個請求,然后創(chuàng)建并運行請求處理程序
    //如下為創(chuàng)建模型
    VNCoreMLModel *vnCoreModel = [VNCoreMLModel modelForMLModel:resnetModel.model error:nil];
    //VNCoreMLRequest 是一個圖像分析請求彬祖,它使用 Core ML 模型來完成工作
    //它的 completion handler 接收 request 和 error 對象
    VNCoreMLRequest *vnCoreMlRequest = [[VNCoreMLRequest alloc] initWithModel:vnCoreModel completionHandler:^(VNRequest * _Nonnull request, NSError * _Nullable error) {
        CGFloat confidence = 0.0f;
        VNClassificationObservation *tempClassification = nil;
        for (VNClassificationObservation *classification in request.results) {
            if (classification.confidence > confidence) {
                confidence = classification.confidence;
                tempClassification = classification;
            }
        }
        
        recognitionResultLabel.text = [NSString stringWithFormat:@"識別結(jié)果:%@",tempClassification.identifier];
        
        confidenceResult.text = [NSString stringWithFormat:@"匹配率:%@",@(tempClassification.confidence)];
    }];
    //創(chuàng)建并運行請求處理程序
    VNImageRequestHandler *vnImageRequestHandler = [[VNImageRequestHandler alloc] initWithCGImage:image.CGImage options:nil];
    
    NSError *error = nil;
    [vnImageRequestHandler performRequests:@[vnCoreMlRequest] error:&error];
    
    if (error) {
        NSLog(@"%@",error.localizedDescription);
    }
}

3.Custom Layers in Core ML
In this post I’ll show how to convert a Keras model with a custom layer to Core ML.

4.Real-time object detection with YOLO
In this blog post I’ll describe what it took to get the “tiny” version of YOLOv2 running on iOS using Metal Performance Shaders.
Of course I used Forge to build the iOS app. ?? You can find the code in the YOLOfolder. To try it out: download or clone Forge, open Forge.xcworkspace in Xcode 8.3 or later, and run the YOLO target on an iPhone 6 or up.
On my iPhone 6s it takes about 0.15 seconds to process a single image. That is only 6 FPS, barely fast enough to call it realtime.

深度學習在 iOS 上的實踐 —— 通過 YOLO 在 iOS 上實現(xiàn)實時物體檢測
最近發(fā)布的 Caffe2 框架同樣是通過 Metal 來實現(xiàn)在 iOS 上運行的。Caffe2-iOS 項目來自于迷你 YOLO 的一個版本品抽。它似乎比純 Metal 版本運行的慢 0.17 秒每幀储笑。
YAD2K: Yet Another Darknet 2 Keras

5.如何用iOS10的MPS框架實現(xiàn)支持GPU的快速CNN計算
6.手把手教你用蘋果CoreML實現(xiàn)iPhone的目標識別
7.A peek inside Core ML
Running realtime Inception-v3 on Core ML

8.Forge: a neural network toolkit for Metal

Forge is a collection of helper code that makes it a little easier to construct deep neural networks using Apple's MPSCNN framework.
Forge: neural network toolkit for Metal

MPS使用流程

iOS 9在MetalKit中新增了Metal Performance Shaders類,可以使用GPU進行高效的圖像計算圆恤,比如高斯模糊突倍,圖像直方圖計算,索貝爾邊緣檢測算法,實現(xiàn)深度學習等
Metal 介紹及基本使用
mps
inception-v3_demo
metal

Tips

Metal_debugger_tools https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Dev-Technique/Dev-Technique.html
https://developer.apple.com/videos/play/wwdc2015/610/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赘方,隨后出現(xiàn)的幾起案子烧颖,更是在濱河造成了極大的恐慌,老刑警劉巖窄陡,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炕淮,死亡現(xiàn)場離奇詭異,居然都是意外死亡跳夭,警方通過查閱死者的電腦和手機涂圆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來币叹,“玉大人润歉,你說我怎么就攤上這事【备В” “怎么了踩衩?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贩汉。 經(jīng)常有香客問我驱富,道長,這世上最難降的妖魔是什么匹舞? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任褐鸥,我火速辦了婚禮,結(jié)果婚禮上赐稽,老公的妹妹穿的比我還像新娘叫榕。我一直安慰自己,他們只是感情好姊舵,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布晰绎。 她就那樣靜靜地躺著,像睡著了一般括丁。 火紅的嫁衣襯著肌膚如雪荞下。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天躏将,我揣著相機與錄音锄弱,去河邊找鬼。 笑死祸憋,一個胖子當著我的面吹牛会宪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚯窥,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼掸鹅,長吁一口氣:“原來是場噩夢啊……” “哼塞帐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巍沙,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤葵姥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后句携,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榔幸,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年矮嫉,在試婚紗的時候發(fā)現(xiàn)自己被綠了削咆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蠢笋,死狀恐怖拨齐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昨寞,我是刑警寧澤瞻惋,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站援岩,受9級特大地震影響歼狼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜窄俏,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一蹂匹、第九天 我趴在偏房一處隱蔽的房頂上張望碘菜。 院中可真熱鬧凹蜈,春花似錦、人聲如沸忍啸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽计雌。三九已至悄晃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凿滤,已是汗流浹背妈橄。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翁脆,地道東北人眷蚓。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像反番,于是被迫代替她去往敵國和親沙热。 傳聞我的和親對象是個殘疾皇子叉钥,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 過年回鄉(xiāng),與親戚朋友們小聚一番篙贸,一派其樂融融投队。其間遍游我們關(guān)中古地的眾多景點,今天來到了橫渠書院——北宋時期“關(guān)學...
    b2efeb6ea406閱讀 2,209評論 0 0
  • 前情回顧:酒吧遇險(上) 小說目錄 “你知道我的名字爵川?”男人收起臉上色迷迷的表情敷鸦,終于反應過來,甚至有些警惕寝贡,但環(huán)...
    原小尚閱讀 476評論 10 4
  • 做人不易轧膘,做男人就更不容易了。 男人兔甘,從出生開始就被打上了“男子漢”的烙印谎碍。就決定了以后的學習生活工作都要承擔更多...
    艾葉子閱讀 752評論 0 1
  • 秋雨斷腸, 寒風刺骨洞焙。仰天長嘯蟆淀! 我該去向何處?茍且偷生澡匪? 賊眉鼠目熔任?迎難而上? 不受困苦唁情?創(chuàng)傷的心靈何時恢復疑苔?貶...
    Hikeylin閱讀 356評論 0 0
  • 終于告別了懵懂的童年、青澀的青春甸鸟。 我的學生時代惦费,一直是一段讓人難忘的歲月,曾經(jīng)忍受的雙重煎熬抢韭,現(xiàn)在看...
    007行動沃克雙語賦能閱讀 213評論 0 0