{"id":3832,"date":"2018-06-24T10:26:05","date_gmt":"2018-06-24T02:26:05","guid":{"rendered":"http:\/\/benjenq.ddns.net\/blog\/%e3%80%90%e6%a9%9f%e6%a2%b0%e5%ad%b8%e7%bf%92%e3%80%91%e6%95%99%e4%bd%a0%e7%9a%84-iphone-%e8%aa%8d%e8%ad%98-gogoro-%e6%8f%9b%e9%9b%bb%e7%ab%99%ef%bc%88part-1%ef%bc%89-%e7%94%a8%e9%bb%91%e8%98%8b\/"},"modified":"2018-06-24T10:26:05","modified_gmt":"2018-06-24T02:26:05","slug":"%e3%80%90%e6%a9%9f%e6%a2%b0%e5%ad%b8%e7%bf%92%e3%80%91%e6%95%99%e4%bd%a0%e7%9a%84-iphone-%e8%aa%8d%e8%ad%98-gogoro-%e6%8f%9b%e9%9b%bb%e7%ab%99%ef%bc%88part-1%ef%bc%89-%e7%94%a8%e9%bb%91%e8%98%8b","status":"publish","type":"post","link":"http:\/\/benjenq.ddns.net\/blog\/%e3%80%90%e6%a9%9f%e6%a2%b0%e5%ad%b8%e7%bf%92%e3%80%91%e6%95%99%e4%bd%a0%e7%9a%84-iphone-%e8%aa%8d%e8%ad%98-gogoro-%e6%8f%9b%e9%9b%bb%e7%ab%99%ef%bc%88part-1%ef%bc%89-%e7%94%a8%e9%bb%91%e8%98%8b\/","title":{"rendered":"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\uff08Part 1\uff09 &#8211; \u7528\u9ed1\u860b\u679c\u96fb\u8166\u73a9\u8f49\u6700\u592f\u7684\u6a5f\u68b0\u5b78\u7fd2(\u932f\u8aa4\u793a\u7bc4)"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" height=\"322\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529860593-3400233856_l.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" width=\"602\"><\/p>\n<p>\u8fd1\u5e74\u4f86\u6240\u8b02\u7684\u300c\u5927\u6578\u64da\u300d\uff08Big Data\uff09\u3001\u300cAI \u4eba\u5de5\u667a\u6167\u300d\u3001\u300c\u6a5f\u5668\u5b78\u7fd2\u300d\uff08Machine Learning\uff09\u3001\u300c\u6df1\u5ea6\u5b78\u7fd2\u300d\uff08Deep Learning\uff09\u7a81\u7136\u8b8a\u5f97\u5f88\u592f\uff0c\u53ef\u8aaa\u662f\u76ee\u524d\u6700\u706b\u71b1\u3001\u6700\u5177\u7206\u70b8\u6027\u767c\u5c55\u7684\u7576\u7d05\u986f\u5b78\u3002\u6211\u6c92\u6709\u5728\u8c6a\u6d28\uff0c\u71b1\u9580\u7684\u7a0b\u5ea6\uff0c\u53ef\u89c0\u5bdf\u9019\u500b\u73fe\u8c61\uff1a\u5728\u53f0\u5357\u7684\u5e02\u7acb\u5716\u66f8\u9928\u8207\u5176\u4ed6\u5206\u9928\u4e2d\uff0cPython \u7684\u66f8\u7c4d\u6839\u672c\u662f\u4e00\u66f8\u96e3\u6c42\uff0c\u800c\u4e14\u6301\u7e8c\u5f88\u9577\u4e00\u6bb5\u6642\u9593\u3002Python \u672c\u8eab\u9664\u4e86\u7528\u9014\u5ee3\u6cdb\u4e4b\u5916\uff0c\u5728\u6a5f\u68b0\u5b78\u7fd2\u9818\u57df\u66f4\u662f\u5165\u9580\u6a19\u6e96\uff0c\u7121\u6cd5\u898f\u907f\u4e0d\u5b78\u7684\u7a0b\u5f0f\u8a9e\u8a00\uff0c\u4e0d\u6703 Python \u5c31\u7b49\u65bc\u505a\u4e0d\u6210\u6a5f\u68b0\u5b78\u7fd2\u5c08\u5bb6\u3002\u5728\u591a\u5e74\u524d\u6211\u5c31\u5c0d\u9019\u500b\u9818\u57df\u5f88\u611f\u8208\u8da3\uff0c\u4e5f\u6301\u7e8c Google \u641c\u5230\u4e0d\u5c11\u6559\u6750\uff0c\u4e0d\u904e\u5766\u767d\u8b1b\u9019\u985e\u5b78\u554f\u7684\u6280\u8853\u7406\u8ad6\u5be6\u5728\u662f\u6df1\u4e0d\u898b\u5e95\u3001\u9ad8\u4e0d\u53ef\u6500\uff0c\u627e\u5230\u7684\u6559\u5b78\u5e38\u5e38\u9700\u8981\u53c3\u8003\u67d0\u67d0\u535a\u58eb\u8ad6\u6587\uff0c\u6216\u662f\u5148\u5f04\u61c2\u67d0\u67d0\u6578\u5b78\u6f14\u7b97\u6cd5\uff0c\u9019\u5be6\u975e\u6211\u7b49\u6c5f\u6e56\u8853\u58eb\u80fd\u529b\u6240\u53ca\uff0c\u6240\u4ee5\u9019\u689d\u5b78\u7fd2\u4e4b\u8def\u4e0d\u8ad6\u5f9e\u54ea\u958b\u59cb\u4e0b\u624b\uff0c\u6c92\u591a\u4e45\u5c31\u4e00\u5b9a\u6703\u78b0\u5230\u9435\u91d8\u5b50\uff0c\u8d70\u5f97\u8dcc\u8dcc\u649e\u649e\uff0c\u59cb\u7d42\u5f97\u4e0d\u5230\u5165\u9580\u7684\u8981\u9818\u3002<\/p>\n<p>\u76f4\u5230\u53bb\u5e74\uff082017 \u5e74\uff09\u860b\u679c\u516c\u53f8\u65bc WWDC 2017 \u767c\u8868\u4e86 Core ML \u5957\u4ef6\uff0c\u6211\u9019\u689d\u6a5f\u68b0\u5b78\u7fd2\u7684\u9ed1\u6697\u4e4b\u8def\u7d42\u65bc\u898b\u5230\u66d9\u5149\u3002\u860b\u679c\u5ba3\u7a31 Core ML \u80fd\u8f15\u6613\u7684\u5c07\u300c\u6a5f\u68b0\u5b78\u7fd2\u6a21\u578b\u300d\uff08Machine Learning Model\uff09\u6574\u5408\u5230 iOS \u88dd\u7f6e\u7684\u61c9\u7528\u7a0b\u5f0f\u5167\uff0c\u4e26\u5728 Developer \u5b98\u7db2\u4e0a<a href=\"https:\/\/developer.apple.com\/machine-learning\/build-run-models\/\" target=\"_blank\">\u91cb\u51fa\u5e7e\u500b\u5be6\u7528\u7684\u6a21\u578b<\/a>\uff08\u526f\u6a94\u540d\u70ba mimodel\uff09\u3002\u5230\u4e86\u4eca\u5e74 WWDC 2018\uff0c\u860b\u679c\u9032\u4e00\u6b65\u91cb\u51fa Create ML \u5de5\u5177\uff0c\u865f\u7a31\u300c\u4e0d\u9700\u5177\u5099\u6a5f\u68b0\u5b78\u7fd2\u5c08\u5bb6\u6280\u80fd\uff0c\u4e5f\u80fd\u5728 Mac \u4e0a\u8f15\u9b06\u4f7f\u7528\u001f\u6a5f\u68b0\u5b78\u7fd2\u6280\u8853\u300d\uff0c\u4e26\u4e14\u81ea\u52d5\u555f\u7528\u53ef\u7528\u7684 GPU \u52a0\u901f\u8a13\u7df4\u904e\u7a0b\u3002<\/p>\n<p>\u7576\u7136\u4e86\uff0c\u4ee5\u9ed1\u860b\u679c\u6280\u8853\u5e36\u5165 Mac\uff0c\u9019\u53e5\u8a71\u4e5f\u53ef\u6539\u5beb\u6210\uff1a<\/p>\n<p>\u300c\u4e0d\u9700\u5177\u5099\u6a5f\u68b0\u5b78\u7fd2\u5c08\u5bb6\u6280\u80fd\uff0c\u4e5f\u80fd\u5728\u500b\u4eba\u96fb\u8166\u4e0a\u8f15\u9b06\u4f7f\u7528\u001f\u6a5f\u68b0\u5b78\u7fd2\u6280\u8853\u300d<\/p>\n<p>\u7167\u9019\u7bc7<a href=\"https:\/\/developer.apple.com\/documentation\/create_ml\/creating_an_image_classifier_model\" target=\"_blank\">\u5b98\u65b9\u6559\u5b78\uff08\u7db2\u5740\uff09<\/a>\uff0c\u6211\u7d42\u65bc\u5982\u9858\u5b8c\u6210\u4eba\u751f\u7b2c\u4e00\u500b\u6a5f\u68b0\u5b78\u7fd2\u6a21\u578b\uff0c\u8b93\u624b\u6a5f\u4e5f\u80fd\u8a8d\u8b58\u65b0\u4e8b\u7269\uff01<\/p>\n<p><!-- more --><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0a\u534811.18.40\" border=\"0\" height=\"341\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529811342-3002105436.png?v=1529811344\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0a\u534811.18.40\" width=\"606\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0a\u534811.18.51\" border=\"0\" height=\"341\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529811399-2685482116.png?v=1529811400\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0a\u534811.18.51\" width=\"606\"><\/p>\n<p>\u611f\u6069 Apple\uff01\u8b9a\u5606 Apple\uff01\u8b93\u8271\u6f80\u96e3\u8d70\u7684\u6a5f\u68b0\u5b78\u7fd2\u4e4b\u8def\uff0c\u7a81\u7136\u8b8a\u6210\u4e00\u689d\u5e73\u5766\u7684\u5eb7\u838a\u5927\u9053\u3002\uff08\u5e0c\u671b\u5566\uff01\uff09<\/p>\n<p>\u9019\u7bc7\u6587\u7ae0\uff0c\u5c31\u662f\u7c21\u55ae\u7d00\u9304\u4e00\u4e0b\u5982\u4f55\u81ea\u884c\u5275\u5efa\u8a13\u7df4\u5c0e\u51fa\u6a5f\u68b0\u5b78\u7fd2\u6a21\u578b\uff08.mlmode\uff09\uff0c\u4e26\u61c9\u7528\u5728 iOS App \u4e0a\u9762\u3002\u6b65\u9a5f\u5f88\u7c21\u55ae\uff0c\u771f\u7684\u5f88\u7c21\u55ae\uff01<\/p>\n<p>\u6e96\u5099\u5de5\u4f5c\uff1a<\/p>\n<ul>\n<li>\u4e00\u53f0\u5b89\u88dd macOS 10.14 Mojave \u4f5c\u696d\u7cfb\u7d71\u7684\u500b\u4eba\u96fb\u8166\uff08<a href=\"http:\/\/benjenq.pixnet.net\/blog\/post\/45947298\" target=\"_blank\">\u5b89\u88dd\u8aaa\u660e<\/a>\uff09<\/li>\n<li>\u5b89\u88dd Xcode 10 \uff08<a href=\"https:\/\/xcodereleases.com\/\" target=\"_blank\">\u4e0b\u8f09<\/a>\uff09 \u7684 macOS 10.14 Mojave \u7684\u4f5c\u696d\u7cfb\u7d71\uff0c\u9700 Apple \u958b\u767c\u8005\u5e33\u865f\u6b0a\u9650\u3002<\/li>\n<\/ul>\n<p>\u4e0d\u904e\u76ee\u524d\u7684 macOS 10.14 Mojave Beta 2 <a href=\"https:\/\/forums.developer.apple.com\/thread\/104731\" target=\"_blank\">\u6709 BUG<\/a>\uff0c\u6703\u8b93\u8a13\u7df4\u7684\u904e\u7a0b\u4e2d\u767c\u751f\u932f\u8aa4\u800c\u7121\u6cd5\u5b8c\u6210\u3002\uff082018.07.10\uff1aBUG \u5df2\u5728 Beta3 \u89e3\u6c7a\u3002\uff09<\/p>\n<p><span style=\"font-size:12pt\"><strong>iOS App \u4f7f\u7528 .mlmodel \u6a21\u578b<\/strong><\/span><\/p>\n<p>\u9019\u500b\u90e8\u5206\u5728\u53bb\u5e74\u7684 iOS 11 \u5c31\u6709\u4e86\uff0c\u6240\u4ee5\u53ea\u9700\u8981 Xcode 9 \u5c31\u884c\u4e86\u3002\u6559\u5b78\u5f88\u591a\uff0c\u5728\u5b98\u65b9\u5f37\u52e2\u4e3b\u5c0e\u4e0b\uff0c\u627e\u5230\u7684\u5927\u591a\u662f swift \u7684\u7bc4\u4f8b\u3002\u7db2\u8def\u4e0a\u7576\u7136\u4e5f\u6709 Object-C \u7684\u7bc4\u4f8b\u5c31\u662f\u4e86\u3002\u672c\u6587\u5167\u5bb9\u5c07\u4f7f\u7528\u5c11\u6578\u5e7e\u884c Object-C \u8a9e\u8a00\uff0c\u642d\u914d\u5b98\u7db2\u63d0\u4f9b\u7684 MobileNet.mlmodel \u4f5c\u70ba\u793a\u7bc4\u3002<\/p>\n<p>(1) \u4e0b\u8f09 MobileNet.mlmodel \uff08<a href=\"https:\/\/docs-assets.developer.apple.com\/coreml\/models\/MobileNet.mlmodel\" target=\"_blank\">\u5b98\u7db2\u4e0b\u8f09<\/a>\uff09\uff0c\u4e26\u62c9\u001f\u9032 iOS \u5c08\u6848\u3002<\/p>\n<p>(2) \u9ede\u64ca&nbsp;MobileNet.mlmodel \u4e26\u67e5\u770b\u8cc7\u8a0a\uff1a<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534812.45.47\" border=\"0\" height=\"371\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529816012-1221815655.png\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534812.45.47\" width=\"612\"><\/p>\n<p>.mlmodel \u662f\u53bb\u5e74\uff082017\uff09\u7531\u860b\u679c\u516c\u53f8\u767c\u8868\u5c0d\u61c9\u81ea\u5bb6 Core ML \u6a21\u578b\u7684\u6a94\u6848\u683c\u5f0f\u3002\u4e0a\u5716\u4e2d\u9ede\u64ca\u5c08\u6848\u5167\u7684&nbsp;MobileNet.mlmodel \u9805\u76ee\u5f8c\uff0c\u5728 Model Evaluation Parameter \u9019\u88cf\u53ef\u67e5\u770b\u6a21\u578b\u7684\u8f38\u5165\u8f38\u51fa\u7684\u9805\u76ee\u3002<\/p>\n<ul>\n<li>\u8f38\u5165\u9805\u76ee\u9650\u5b9a\u5728 224&#215;224 \u5c3a\u5bf8\u7684\u5f71\u50cf\uff08Image\uff09\u3002<\/li>\n<li>\u8f38\u51fa\u7684\u9805\u76ee\u6709\u5b57\u4e32\uff08String\uff09\u8207\u5b57\u5178\uff08Dictionary\uff0cstring -&gt; double\uff09\u5169\u500b\u3002<\/li>\n<\/ul>\n<p>\u9ede\u64ca Model Class \u5167 MobileNet \u53f3\u908a\u7684\u7bad\u982d\uff08\u7d05\u6846\u8655\uff09\uff0c\u5247\u6703\u4f9d\u7167\u5c08\u6848\u4f7f\u7528\u7684\u8a9e\u8a00\uff08Object-C \u6216 swift\uff09\u51fa\u73fe\u53ef\u7528\u7684 API \u5217\u8868\u3002\u9019\u8aaa\u660e\u4e86 .mimodel \u5176\u5be6\u662f\u4e00\u7a2e\u5c01\u88dd\u3002<\/p>\n<p><img decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53484.35.33\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529829389-2545026659.png?v=1529829390\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53484.35.33\"><\/p>\n<p>\u96d6\u7136\u6709\u5f88\u591a\u500b\uff0c\u4e0d\u904e\u6700\u57fa\u672c\u53ea\u9700\u8981\u5169\u500b\u5c31\u80fd\u904b\u4f5c\uff1a<\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #fd8f3f; background-color: #1f1f24}\nspan.s1 {color: #ffffff}\nspan.s2 {color: #fc5fa3}\n-->\n<\/style>\n<p class=\"p1\"><span class=\"s1\">&#8211; (<\/span><span class=\"s2\" style=\"color:#ff00ff\"><strong>instancetype<\/strong><\/span><span class=\"s1\">)init <\/span>NS_UNAVAILABLE<span class=\"s1\">;<\/span><\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\nspan.s1 {color: #fc5fa3}\nspan.s2 {color: #91d462}\nspan.s3 {color: #7ac8b6}\n-->\n<\/style>\n<p class=\"p1\">&#8211; (<span class=\"s1\"><strong>nullable<\/strong><\/span> <span class=\"s2\" style=\"color:#339966\">MobileNetOutput<\/span> *)predictionFromImage:(<span class=\"s3\" style=\"color:#ff00ff\">CVPixelBufferRef<\/span>)image error:(<span class=\"s3\" style=\"color:#ff00ff\">NSError<\/span> * <span class=\"s1\"><strong>_Nullable<\/strong><\/span> * <span class=\"s1\"><strong>_Nullable<\/strong><\/span>)error;<\/p>\n<p>\u4e5f\u5c31\u662f\u6700\u5c11\u53ea\u9700\u5169\u884c\u5c31\u80fd\u8dd1\u4e86\uff08\u7576\u7136\u5be6\u969b\u4e0a\u4e0d\u53ef\u80fd\u9019\u9ebc\u5077\u61f6\uff09\u3002\u8f38\u5165\u7684 Image \u4e26\u4e0d\u662f\u5e38\u898b\u7684 UIImage \u001f\u985e\uff0c\u800c\u662f\u5f71\u7247\u8655\u7406\u4e2d\u5e38\u898b\u7684&nbsp;<span style=\"color:#5c2699; font-family:menlo\">CVPixelBufferRef&nbsp;<\/span>\u985e\uff0c\u4e14\u5927\u5c0f\u9650\u5b9a\u5728 224&#215;224 \u3002\u6240\u4ee5\u5728\u53d6\u5f97 UIImage \u985e\u5225\u7684\u7269\u4ef6\u5f8c\uff0c\u9700\u8f49\u63db\u6210 224&#215;224 \u5927\u5c0f\u7684 <span style=\"color:#5c2699; font-family:menlo\">CVPixelBufferRef&nbsp;<\/span>\u985e\u578b\u7269\u4ef6\u3002\u9019\u90e8\u5206\u4e5f\u6709\u4eba\u628a Object-C \u7a0b\u5f0f\u78bc\u5beb\u597d\u4e86\u3002<\/p>\n<p>\u53c3\u8003\u7db2\u5740\uff1a<a href=\"https:\/\/github.com\/happymanx\/CoreMLTest\/blob\/master\/TestCoreML\/TestCoreML\/Classes\/MLMainViewController.m\" target=\"_blank\">https:\/\/github.com\/happymanx\/CoreMLTest\/<\/a><\/p>\n<p><span style=\"color:#888888; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">&#8211; (UIImage *)<\/span><span class=\"pl-en\" style=\"box-sizing:border-box; color:#6f42c1; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">imageResize<\/span><span style=\"color:#888888\"><span class=\"pl-en\" style=\"box-sizing:border-box; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">:<\/span><span style=\"font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">(UIImage*)<\/span><span class=\"pl-smi\" style=\"box-sizing:border-box; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">img <\/span><\/span><span class=\"pl-en\" style=\"box-sizing:border-box; color:#6f42c1; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">toSize<\/span><span class=\"pl-en\" style=\"box-sizing:border-box; color:#888888; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">:<\/span><span style=\"color:#24292e; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">(<\/span><span class=\"pl-c1\" style=\"box-sizing:border-box; color:#005cc5; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">CGSize<\/span><span style=\"color:#24292e; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">)<\/span><span class=\"pl-smi\" style=\"box-sizing:border-box; color:#888888; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">newSize;<\/span><\/p>\n<p><span style=\"color:#888888; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">&#8211; (CVPixelBufferRef)<\/span><span class=\"pl-en\" style=\"box-sizing:border-box; color:#6f42c1; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">pixelBufferFromCGImage<\/span><span class=\"pl-en\" style=\"box-sizing:border-box; color:#888888; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">:<\/span><span style=\"color:#24292e; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">(<\/span><span class=\"pl-c1\" style=\"box-sizing:border-box; color:#005cc5; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">CGImageRef<\/span><span style=\"color:#24292e; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">)<\/span><span class=\"pl-smi\" style=\"box-sizing:border-box; color:#888888; font-family:sfmono-regular,consolas,liberation mono,menlo,courier,monospace; white-space:pre\">image;<\/span><\/p>\n<p>\u7528\u9019\u5169\u500b\u65b9\u6cd5\u5c31\u80fd\u8f49\u63db\u8f38\u5165 Image \u7684\u683c\u5f0f\u554f\u984c\u3002<\/p>\n<p>\u81f3\u65bc\u6a21\u578b\u62c9\u9032\u5c08\u6848\u4e4b\u5f8c\uff0c\u64b0\u5beb\u61c9\u7528\u7a0b\u5f0f\u6642\u53ea\u8981\u5728\u524d\u9762\u52a0\u5165 #import &#8220;xxxxxx.h&#8221; \uff08Object-C \u8a9e\u6cd5\uff09\u5c31\u53ef\u4ee5\u4f7f\u7528\u6a21\u578b\u63d0\u4f9b\u7684 API \u4e86\u3002\u4ee5\u9019\u500b\u7bc4\u4f8b\u4f7f\u7528\u7684 MobileNet.mlmodel \u4f86\u8aaa\uff0c\u524d\u9762\u52a0\u5165 #import &#8220;MobileNet.h&#8221; \u5c31\u884c\u4e86\u3002<\/p>\n<p>\u7528\u6700\u7c21\u55ae\u7684\u7a0b\u5f0f\u78bc\u4f86\u6aa2\u9a57\u904b\u4f5c\u7684\u65b9\u5f0f\u8207\u7d50\u679c\u3002&nbsp;<\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #536579; background-color: #ffffff}\np.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #000000; background-color: #ffffff}\np.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #c41a16; background-color: #ffffff}\np.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; background-color: #ffffff; min-height: 14.0px}\np.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #326d74; background-color: #ffffff}\nspan.s1 {color: #000000}\nspan.s2 {color: #5c2699}\nspan.s3 {color: #3900a0}\nspan.s4 {color: #326d74}\nspan.s5 {color: #9b2393}\nspan.s6 {color: #245256}\nspan.s7 {color: #1c00cf}\nspan.s8 {color: #536579}\n-->\n<\/style>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u7528 Google \u641c\u5c0b &#8220;\u72d7&#8221;\u5716\u7247\uff0c\u96a8\u6a5f\u6311\u4e00\u5f35\u5716\u7247\uff0c\u53d6\u7528\u5716\u7684\u7db2\u5740\uff0c\u505a\u6210 UIImage \u7269\u4ef6 img<\/em><\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s2\">UIImage<\/span> *img = [<span class=\"s2\">UIImage<\/span> <span class=\"s3\">imageWithData<\/span>:<\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span>[<span class=\"s2\">NSData<\/span> <span class=\"s3\">dataWithContentsOfURL<\/span>:<\/p>\n<p class=\"p3\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span>[<\/span><span class=\"s2\">NSURL&nbsp;<\/span><span class=\"s3\">URLWithString<\/span><span class=\"s1\">:<\/span>@&#8221;https:\/\/www.teepr.com\/wp-content\/uploads\/2014\/08\/%E9%96%8B%E5%BF%83%E7%9A%84%E7%8B%97%E7%8B%97.jpg&#8221;<span class=\"s1\">]]];<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u5716\u7247\u5167\u5bb9\u986f\u793a\u5728 App \u756b\u9762\u4e0a\u7684 UIImageView\uff08\u540d\u7a31\u70ba imageView\uff09<\/em><\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s4\">imageView<\/span>.<span class=\"s2\">image<\/span> = img;<\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u8fa8\u8b58\u524d\u5148\u7e2e\u5716<\/em><\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s2\">UIImage<\/span> *img224x224 = [<span class=\"s5\"><strong>self<\/strong><\/span> <span class=\"s6\">imageResize<\/span>:img <span class=\"s6\">toSize<\/span>:<span class=\"s3\">CGSizeMake<\/span>(<span class=\"s7\">224<\/span>, <span class=\"s7\">224<\/span>)];<\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u8f49\u63db\u6210 CVPixelBufferRef \u578b\u614b<\/em><\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s2\">CVPixelBufferRef<\/span> buffer = [<span class=\"s5\"><strong>self<\/strong><\/span> <span class=\"s6\">pixelBufferFromCGImage<\/span>:img224x224.<span class=\"s2\">CGImage<\/span>];<\/p>\n<p class=\"p4\">&nbsp;<\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u958b\u59cb\u5f71\u50cf\u8fa8\u8b58\uff0c\u8f09\u5165\u6a21\u578b<\/em><\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s4\">MobileNet<\/span> *mobileNet = [[<span class=\"s4\">MobileNet<\/span> <span class=\"s3\">alloc<\/span>] <span class=\"s3\">init<\/span>];<\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u8f38\u5165 CVPixelBufferRef \u9032\u884c\u8fa8\u8b58\uff0c\u8fa8\u8b58\u8f38\u51fa\u7d50\u679c\u70ba MobileNetOutput \u985e\u5225\u7269\u4ef6\u3002<\/em><\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s2\">NSError<\/span> *error = <span class=\"s5\"><strong>nil<\/strong><\/span>; <span class=\"s8\"><em>\/\/ \u63a5\u6536\u8fa8\u8b58\u7a0b\u5e8f\u7684\u932f\u8aa4\u5167\u5bb9<\/em><\/span><\/p>\n<p class=\"p2\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s4\">MobileNetOutput<\/span> *output = [mobileNet <span class=\"s6\">predictionFromImage<\/span>:buffer <span class=\"s6\">error<\/span>:&amp;error];<\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u6aa2\u8996\u8f38\u51fa\u7d50\u679c\uff1a\u5b57\u4e32\u90e8\u5206\u70ba classLabel<\/em><\/p>\n<p class=\"p3\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><span class=\"s3\">NSLog<\/span><span class=\"s1\">(<\/span>@&#8221;output.classLabel = %@&#8221;<span class=\"s1\">, output.<\/span><span class=\"s4\">classLabel<\/span><span class=\"s1\">);<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u6aa2\u8996\u8f38\u51fa\u7d50\u679c\uff1a\u5b57\u5178\u90e8\u5206\u70ba classLabel<\/em><\/p>\n<p class=\"p3\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><span class=\"s3\">NSLog<\/span><span class=\"s1\">(<\/span>@&#8221;output.classLabelProbs = %@&#8221;<span class=\"s1\">, output.<\/span><span class=\"s4\">classLabelProbs<\/span><span class=\"s1\">);<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><em>\/\/ \u5c07\u8f38\u51fa\u7d50\u679c\u7684\u5b57\u4e32\u90e8\u5206\uff0c\u986f\u793a\u5728 App \u756b\u9762\u4e2d\u7684 UILabel\uff08\u540d\u7a31 classifier\uff09<\/em><\/p>\n<p class=\"p5\"><span class=\"s1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span>classifier<span class=\"s1\">.<\/span><span class=\"s2\">text<\/span><span class=\"s1\"> = output.<\/span>classLabel<span class=\"s1\">;<\/span><\/p>\n<p>App \u7684\u756b\u9762\u7d50\u679c\uff1a<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529832845-2567532139_l.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p>\u7d42\u7aef\u8996\u7a97\u7684\u56de\u61c9\u8a0a\u606f\uff1a<\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong>MobileNetProject[1004:38219] output.classLabel = Pembroke, Pembroke Welsh corgi<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong>MobileNetProject[1004:38219] output.classLabelProbs&nbsp;= {<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;Afghan hound, Afghan&#8221; = &#8220;6.213400904897526e-09&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;African chameleon, Chamaeleo chamaeleon&#8221; = &#8220;2.19332374484793e-09&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;African crocodile, Nile crocodile, Crocodylus niloticus&#8221; = &#8220;8.66392568799057e-10&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;African elephant, Loxodonta africana&#8221; = &#8220;1.9315593569047e-09&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;African grey, African gray, Psittacus erithacus&#8221; = &#8220;1.536224836229394e-08&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus&#8221; = &#8220;1.789419101783096e-08&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;Airedale, Airedale terrier&#8221; = &#8220;1.449278741461058e-08&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier&#8221; = &#8220;6.084317760723934e-08&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;American alligator, Alligator mississipiensis&#8221; = &#8220;2.423576617172074e-10&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;American black bear, black bear, Ursus americanus, Euarctos americanus&#8221; = &#8220;2.094742157510154e-08&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;American chameleon, anole, Anolis carolinensis&#8221; = &#8220;9.495959574223889e-09&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;American coot, marsh hen, mud hen, water hen, Fulica americana&#8221; = &#8220;2.884459615604129e-10&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;American egret, great white heron, Egretta albus&#8221; = &#8220;3.334652831643581e-10&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;American lobster, Northern lobster, Maine lobster, Homarus americanus&#8221; = &#8220;1.485787919364157e-07&#8221;;<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>&#8220;Angora, Angora rabbit&#8221; = &#8220;2.548045685557554e-08&#8221;;<\/strong><\/span><\/p>\n<p>\u56de\u61c9\u7684\u6587\u5b57\u90e8\u5206\u662f\u300cPembroke, Pembroke Welsh corgi\u300d\uff0c\u5b57\u5178\u7684\u90e8\u5206\u6709\u5e7e\u767e\u884c\u7684\u8a0a\u606f\u3002\u641c\u5c0b\u5b57\u5178\u4e2d\u300cPembroke, Pembroke Welsh corgi\u300d\u9019\u884c\uff1a<\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span style=\"color:#ffffff\">&#8220;Pembroke, Pembroke Welsh corgi&#8221; = &#8220;0.8785513043403625&#8221;;<\/span><\/strong><\/p>\n<p>\u8fa8\u8b58\u7d50\u679c\u4e0d\u96e3\u7406\u89e3\uff0c\u5b57\u5178\u7684\u90e8\u5206\u524d\u9762\u7684\u5b57\u4e32\u4ee3\u8868\u6a5f\u68b0\u5b78\u7fd2\u6a21\u578b\u53ef\u8fa8\u8b58\u51fa\u4f86\u7684\u7269\u54c1\u540d\u7a31\uff0c\u5f8c\u9762\u7684\u6578\u5b57\u5247\u662f\u300c\u8a72\u7b46\u7d50\u679c\u7684\u6e96\u78ba\u7387\u300d\u3002\u9019\u4e9b\u7269\u54c1\u540d\u7a31\u4e2d\uff0c\u300cPembroke, Pembroke Welsh corgi\u300d\u6240\u986f\u793a\u7684\u6578\u5b57\u7d50\u679c\u6700\u5927\uff0c\u5927\u7d04\u662f 87%\uff080.87\uff09\uff0c\u5176\u4ed6\u7269\u54c1\u540d\u7a31\u90fd\u6c92\u6709\u6bd4\u9019\u500b\u6578\u5b57\u9084\u9ad8\uff0c\u5927\u591a\u53ea\u6709 &lt;1 % \u7684\u6e96\u78ba\u7387\u3002<\/p>\n<p>\u81f3\u65bc\u300cPembroke, Pembroke Welsh corgi\u300d\u662f\u5c1b\u6771\u897f\uff1f\u4e1f\u7d66 Google \u67e5\u8a62\u7d50\u679c\uff1a<\/p>\n<p>Google\uff1a\u6f58\u5e03\u9b6f\u514b\u5a01\u723e\u65af\u67ef\u57fa\u72ac\uff0c\u5c31\u662f\u4fd7\u7a31\u7684\u300c\u67ef\u57fa\u72ac\u300d\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53485.34.54\" border=\"0\" height=\"554\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529832976-3718192721.png\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53485.34.54\" width=\"568\"><\/p>\n<p>\u6975\u7c21\u5316\u7684\u8aaa\u6cd5\uff1aMobileNet \u89ba\u5f97\u9019\u5f35\u72d7\u5716\uff0c\u8ddf\u67ef\u57fa\u72ac\u6709 87% \u50cf\u3002<\/p>\n<p>App \u4f7f\u7528 .mlmodel \u6a21\u578b\u7684\u65b9\u6cd5\u771f\u7684\u662f\u975e\u5e38\u7c21\u55ae\uff0c\u8f38\u5165\u7684 Image \u985e\u578b\u662f&nbsp;CVPixelBufferRef \u800c\u975e UIImage \u985e\u5225\u7684\u6700\u5927\u539f\u56e0\uff0c\u6211\u60f3\u61c9\u8a72\u662f\u5f71\u7247\u8655\u7406\u7a0b\u5e8f\u7684\u904e\u7a0b\u4e2d\u53ef\u96a8\u6642\u63d0\u53d6&nbsp;CVPixelBufferRef \u4f86\u6e90\uff0c\u61c9\u7528\u7684\u5c64\u9762\u66f4\u5ee3\u3002<\/p>\n<p>\u4f7f\u7528 Vision Framework \u7684\u53e6\u4e00\u7a2e\u5beb\u6cd5\uff1a<\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #e2e5e5; background-color: #000000}\np.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #fbfdff; background-color: #000000}\np.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #00b1ff; background-color: #000000}\np.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #95ff8e; background-color: #000000}\np.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #e2e5e5; background-color: #000000; min-height: 13.0px}\np.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d200a3; background-color: #000000}\nspan.s1 {color: #d200a3}\nspan.s2 {color: #de38a5}\nspan.s3 {color: #08fa95}\nspan.s4 {color: #95ff8e}\nspan.s5 {color: #e2e5e5}\nspan.s6 {color: #fbfdff}\nspan.s7 {color: #00b1ff}\nspan.s8 {color: #8b87ff}\nspan.s9 {text-decoration: underline ; color: #e2e5e5}\nspan.s10 {text-decoration: underline ; color: #95ff8e}\nspan.s11 {color: #ff4647}\n-->\n<\/style>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s1\">NSError<\/span> *err = <span class=\"s2\">nil<\/span>;<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s3\">MobileNet<\/span> *mobileNet = [[<span class=\"s3\">MobileNet<\/span> <span class=\"s4\">alloc<\/span>] <span class=\"s4\">init<\/span>];<\/p>\n<p class=\"p2\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span>\/\/\u5c07\u6a21\u578b\u8f49\u63db\u70ba VNCoreMLModel \u985e\uff0c#import &lt;Vision\/Vision.h&gt;<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s1\">VNCoreMLModel<\/span> *vnModel=[<span class=\"s1\">VNCoreMLModel<\/span> <span class=\"s4\">modelForMLModel<\/span>:mobileNet.<span class=\"s3\">model<\/span> <span class=\"s4\">error<\/span>:&amp;err]; <span class=\"s6\">\/\/\u8f49\u63db\u70ba VNCoreMLModel<\/span><\/p>\n<p class=\"p2\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span>\/\/\u5efa\u7acb\u4e00\u500b VNCoreMLRequest\uff0c\u50b3\u5165 VNCoreMLModel\uff0c\u4e26\u8655\u7406\u8fa8\u8b58\u7d50\u679c\u65bc completionHandler \u5340\u6bb5<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s1\">VNCoreMLRequest<\/span> *request=[[<span class=\"s1\">VNCoreMLRequest<\/span> <span class=\"s4\">alloc<\/span>] <span class=\"s4\">initWithModel<\/span>:vnModel <span class=\"s4\">completionHandler<\/span>:^(<span class=\"s1\">VNRequest<\/span> * <span class=\"s2\">_Nonnull<\/span> request, <span class=\"s1\">NSError<\/span> * <span class=\"s2\">_Nullable<\/span> error) {<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"s7\">CGFloat<\/span> confidence = <span class=\"s8\">0.0f<\/span>;<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"s1\">VNClassificationObservation<\/span> *tempClassification = <span class=\"s2\">nil<\/span>;<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"s2\">for<\/span> (<span class=\"s1\">VNClassificationObservation<\/span> *classification <span class=\"s2\">in<\/span> request.<span class=\"s7\">results<\/span>) {<\/p>\n<p class=\"p2\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><\/span>\/\/NSLog(@&#8221;%@ %.2f%%&#8221;,classification.identifier, 100 * classification.confidence); \/\/\u67e5\u770b\u8fa8\u8b58\u7387<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"s2\">if<\/span> (classification.<span class=\"s7\">confidence<\/span> &gt; confidence)<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span>{<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span>confidence = classification.<span class=\"s7\">confidence<\/span>;<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span>tempClassification = classification;<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span>}<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; <\/span>}<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"s3\">classifier<\/span>.<span class=\"s7\">text<\/span> = tempClassification.<span class=\"s7\">identifier<\/span>;<\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>}] ;<\/p>\n<p class=\"p3\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>request.<\/span>imageCropAndScaleOption<span class=\"s5\"> = <\/span>VNImageCropAndScaleOptionCenterCrop<span class=\"s5\">;<\/span><\/p>\n<p class=\"p4\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span><span class=\"s1\">UIImage<\/span><span class=\"s5\"> *img = [<\/span><span class=\"s1\">UIImage<\/span>imageWithData<span class=\"s5\">:[<\/span><span class=\"s1\">NSData<\/span>dataWithContentsOfURL<span class=\"s5\">:[<\/span><span class=\"s1\">NSURL<\/span>URLWithString<span class=\"s5\">:imgurl]]];<\/span><\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s3\">imageView<\/span>.<span class=\"s7\">image<\/span> = img;<\/p>\n<p class=\"p5\"><span class=\"Apple-converted-space\">&nbsp;&nbsp; &nbsp;<\/span><\/p>\n<p class=\"p2\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span>\/\/\u5efa\u7acb\u4e00\u500b VNImageRequestHandler\uff0c\u5c07\u5716\u7247\u50b3\u5165<\/p>\n<p class=\"p6\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span>VNImageRequestHandler<span class=\"s5\"> *handler = [<\/span><span class=\"s9\">[<\/span>VNImageRequestHandler<span class=\"s4\">alloc<\/span><span class=\"s5\">] <\/span><span class=\"s4\">initWi<\/span><span class=\"s10\">t<\/span><span class=\"s4\">hCGImage<\/span><span class=\"s5\">:img.<\/span><span class=\"s7\">CGImage<\/span><span class=\"s4\">options<\/span><span class=\"s5\">:<\/span><span class=\"s2\">nil<\/span><span class=\"s5\">];<\/span><\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s1\">NSError<\/span> *error = <span class=\"s2\">nil<\/span>;<\/p>\n<p class=\"p2\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><\/span>\/\/ VNImageRequestHandler \u904b\u884c VNCoreMLRequest \u985e<\/p>\n<p class=\"p4\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>[handler <\/span>performRequests<span class=\"s5\">:[<\/span><span class=\"s1\">NSArray<\/span>arrayWithObject<span class=\"s5\">:request] <\/span>error<span class=\"s5\">:&amp;error];<\/span><\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span><span class=\"s2\">if<\/span> (error) {<\/p>\n<p class=\"p3\"><span class=\"s5\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; &nbsp; &nbsp; <\/span><\/span><span class=\"s4\">NSLog<\/span><span class=\"s5\">(<\/span><span class=\"s11\">@&#8221;%@&#8221;<\/span><span class=\"s5\">,error.<\/span>localizedDescription<span class=\"s5\">);<\/span><\/p>\n<p class=\"p1\"><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>}<\/p>\n<p>\u9019\u7a2e\u5beb\u6cd5\u96d6\u7136\u6bd4\u8f03\u56c9\u5506\uff0c\u4f46\u662f\u53ef\u7d71\u4e00 .mlmodel \u7684\u8f38\u51fa\u63a5\u53e3\uff0c\u800c\u4e14\u4e0d\u7528\u53e6\u5916\u8655\u7406\u5716\u7247\u7e2e\u5716\/\u8f49\u63db\u7684\u554f\u984c\u3002\u5169\u7a2e\u5beb\u6cd5\u7684\u8fa8\u8b58\u7d50\u679c\u76f8\u540c\uff0c\u4f46\u8fa8\u8b58\u7387\u6578\u5b57\u6709\u4e9b\u8a31\u5dee\u7570\u3002<\/p>\n<p><span style=\"font-size:12pt\"><strong>\u4f7f\u7528 Create ML \u81ea\u884c\u8a13\u7df4\u7522\u751f\u6a5f\u68b0\u5b78\u7fd2\u6a21\u578b\uff08.mlmodel\uff09<\/strong><\/span><\/p>\n<p>\u4e0a\u9762\u7684\u4f8b\u5b50\u662f\u4f7f\u7528\u860b\u679c\u63d0\u4f9b\u5df2\u7d93\u505a\u597d\u7684 .mlmodel \u6a21\u578b\uff0c\u80fd\u8fa8\u8b58\u7684\u5f71\u50cf\u4e5f\u662f\u751f\u6d3b\u5e38\u898b\u7684\u4e8b\u7269\uff0c\u4e0d\u904e\u5728\u5546\u696d\u5be6\u52d9\u4e0a\uff0c\u4e0d\u592a\u53ef\u80fd\u5f15\u7528\u9019\u4e9b\u5b9a\u7fa9\u650f\u7d71\u7684\u8b58\u5225\u7d50\u679c\uff0c\u4f8b\u5982\u8b58\u5225\u67d0\u5ee0\u5546\u7279\u5b9a\u7522\u54c1\u505a\u76f8\u95dc\u61c9\u7528\uff0c\u5f97\u91dd\u5c0d\u7279\u5b9a\u76ee\u7684\u53bb\u7522\u751f\u8a13\u7df4\u6a21\u578b\u3002\u5728\u4eca\u5e74 WWDC 2018 \u4ee5\u524d\uff0c\u5fc5\u9808\u4f7f\u7528\u53e6\u5916\u7684\u6a5f\u68b0\u5b78\u7fd2\u5957\u4ef6\u7522\u751f\u6a21\u578b\u4e4b\u5f8c\uff0c\u518d\u900f\u904e\u300c<a href=\"https:\/\/pypi.org\/project\/coremltools\/\" target=\"_blank\">Core ML Tools<\/a>\u300d\u5de5\u5177\u628a\u6a21\u578b\u8f49\u63db\u6210 .mlmodel \u683c\u5f0f\uff0c\u64cd\u4f5c\u8005\u5fc5\u9808\u81ea\u5e36\u6a5f\u68b0\u5b78\u7fd2\u5c08\u696d\u77e5\u8b58\u8207\u6280\u80fd\uff0c\u5f97\u719f\u6089 Python \u7a0b\u5f0f\u8a9e\u8a00\u8207\u4e00\u5b9a\u7a0b\u5ea6\u7684\u6578\u7406\u77e5\u8b58\uff0c\u6709\u4e00\u5b9a\u7684\u6280\u8853\u9580\u6abb\u3002<\/p>\n<p>\u4e0d\u904e\u5f9e\u4eca\u5e74\u7684 Xcode 10 \u958b\u59cb\uff0c\u6211\u5011\u53ef\u4ee5\u7528\u5f88\u7c21\u55ae\u7684\u65b9\u5f0f\uff0c\u76f4\u63a5\u5728 Xcode \u5167\u81ea\u884c\u8a13\u7df4\u7522\u751f .mlmodel \u6a21\u578b\uff0c\u4e0d\u9700\u984d\u5916\u7684\u5b78\u7fd2\u5957\u4ef6\u4e86\u3002\u860b\u679c\u7684\u5b98\u65b9\u958b\u767c\u8005\u7db2\u7ad9\u65e5\u524d\u5df2\u7d93\u91cb\u51fa\u6559\u5b78\uff0c\u4ee5\u4e0b\u662f\u4f9d\u7167\u6559\u5b78\u7df4\u7fd2\u7684\u64cd\u4f5c\u904e\u7a0b\uff0c\u6191\u500b\u4eba\u76f4\u89ba\u5c31\u80fd\u5b8c\u6210\u8a13\u7df4\uff0c\u5f88\u7c21\u55ae\uff0c\u4e00\u9ede\u90fd\u4e0d\u96e3\u3002<\/p>\n<p><a href=\"https:\/\/developer.apple.com\/documentation\/create_ml\/creating_an_image_classifier_model\" target=\"_blank\">Creating an Image Classifier Model<\/a><\/p>\n<p>\u82f1\u6587\u4e0d\u61c2\u6c92\u95dc\u4fc2\uff0cAppCoda \u4e2d\u6587\u7db2\u7ad9\u4e5f\u6709\u4e2d\u6587\u6559\u5b78\u4e86\uff08<a href=\"https:\/\/www.appcoda.com.tw\/create-ml\/\" target=\"_blank\">\u7db2\u5740<\/a>\uff09\u3002\u4e0d\u904e\u842c\u4e8b\u8d77\u982d\u96e3\uff0c\u8981\u600e\u9ebc\u8490\u96c6\u5230\u6d77\u91cf\u53c8\u5206\u985e\u597d\u7684\u8a13\u7df4\u7d20\u6750\u5c31\u662f\u500b\u554f\u984c\u3002\u6211\u5728\u4e4b\u524d\u5b78\u7fd2\u7684\u904e\u7a0b\u4e2d\uff0c\u6709\u627e\u5230\u7684\u4e00\u7d44\u82b1\u5349\u7684\u6d77\u91cf\u5716\u96c6\uff0c\u525b\u597d\u53ef\u4ee5\u62ff\u4f86\u4f5c\u8a13\u7df4 .mlmodel \u7684\u7bc4\u4f8b\u3002<\/p>\n<p>(1) \u4e0b\u8f09\u5716\u96c6\uff0c\u4e26\u4e14\u89e3\u58d3\u7e2e\u3002\uff08<a href=\"http:\/\/download.tensorflow.org\/example_images\/flower_photos.tgz\" target=\"_blank\">\u82b1\u5349\u5716\u96c6\u4e0b\u8f09<\/a>\uff0c\u7d04 218MB\uff09<\/p>\n<p><img decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.01.33\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529834513-179429819.png\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.01.33\"><\/p>\n<p>\u67e5\u770b\u4e86\u4e00\u4e0b\uff0c\u5716\u96c6\u5e95\u4e0b\u6709\u4e94\u500b\u76ee\u9304\u300cdaisy\uff08\u96db\u83ca\uff09\uff0cdandelion\uff08\u6d66\u516c\u82f1\uff09\uff0croses\uff08\u73ab\u7470\uff09\uff0csunflower\uff08\u5411\u65e5\u8475\uff09\uff0ctulips\uff08\u9b31\u91d1\u9999\uff09\u300d\uff0c\u6bcf\u500b\u76ee\u9304\u5e95\u4e0b\u5404\u6709\u6578\u767e\u5f35\u5716\u7247\u3002<\/p>\n<p>\u6839\u64da\u860b\u679c\u7684\u5b98\u65b9\u6559\u5b78\uff0c\u5c07\u9019\u4e9b\u7167\u7247\u4ee5\u6a94\u6848\u6578\u91cf\u5206\u914d\u51fa 80% \u7684\u300cTraining Data\u300d\u548c&nbsp; 20% \u7684\u300cTesting Data\u300d\uff0c\u5927\u7d04\u9019\u500b\u6bd4\u4f8b\u5c31\u884c\u4e86\uff08 LICENSE.txt \u53ef\u522a\u9664\uff09\u3002<\/p>\n<p><img decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.19.10\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529835875-2655807844.png\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.19.10\"><\/p>\n<p>(2) \u57f7\u884c Xcode 10\uff0cFile -&gt; New -&gt; Playground\uff0c\u9078 macOS &#8211; Blank\uff0c\u6309 Next\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.27.53\" border=\"0\" height=\"416\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529836086-3025363325.png?v=1529836087\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.27.53\" width=\"579\"> &nbsp;<\/p>\n<p>\u6c7a\u5b9a Playground \u6a94\u540d\u4e4b\u5f8c\u6309&nbsp; Create \u5373\u53ef\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.29.19\" border=\"0\" height=\"290\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529836206-3809274471.png?v=1529836207\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.29.19\" width=\"579\"><\/p>\n<p>(2) \u9ede\u9078\u8996\u7a97\u53f3\u4e0a\u65b9\u300cShow the Assistant Editor\u300d\uff08\u5373\u5169\u500b\u5713\u5708\u6263\u5728\u4e00\u8d77\u7684\u5716\u793a\u6309\u9215\uff09\uff0c\u4e26\u5728\u5de6\u908a\u7684\u7de8\u8f2f\u5340\u8f38\u5165\u4e09\u884c\u7a0b\u5f0f\u78bc\uff0c\u8f38\u5165\u5b8c\u6309\u4e0b\u6700\u5f8c\u4e00\u884c\u7684\u4e09\u89d2\u5f62\u57f7\u884c\u9215\uff08\u4e0b\u5716\u7684\u7d05\u6846\u8655\uff09\u3002<\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\np.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; background-color: #1f1f24; min-height: 14.0px}\np.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #91d462; background-color: #1f1f24}\np.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #aef37d; background-color: #1f1f24}\nspan.s1 {color: #fc5fa3}\nspan.s2 {color: #ffffff}\nspan.s3 {color: #91d462}\n-->\n<\/style>\n<p class=\"p1\"><span class=\"s1\"><strong>import<\/strong><\/span> CreateMLUI<\/p>\n<p class=\"p2\">&nbsp;<\/p>\n<p class=\"p3\"><span class=\"s1\"><strong>let<\/strong><\/span><span class=\"s2\"> builder = <\/span>MLImageClassifierBuilder<span class=\"s2\">()<\/span><\/p>\n<p class=\"p4\"><span class=\"s3\">builder<\/span><span class=\"s2\">.<\/span>showInLiveView<span class=\"s2\">()<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.33.11\" border=\"0\" height=\"480\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529836607-1972302795.png?v=1529836610\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.33.11\" width=\"584\"><\/p>\n<p>\u5927\u7d04\u7b49\u500b\u5e7e\u79d2\u9418\uff0c\u53f3\u908a\u6703\u51fa\u73fe\u8a13\u7df4\u6a21\u578b\u7684\u64cd\u4f5c\u4ecb\u9762\u3002\u4ecb\u9762\u975e\u5e38\u7c21\u55ae\uff0c\u53ea\u6709\u4e00\u500b\u8a13\u7df4\u6a21\u578b\u7684\u9810\u8a2d\u6a19\u984c\u300cImageClassifier\u300d\uff0c\u548c\u5e95\u4e0b\u6709\u4e00\u500b\u300cDrop images To Begin Training\u300d\u7684\u5340\u57df\uff08\u7d05\u6846\u90e8\u5206\uff09\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.39.53\" border=\"0\" height=\"479\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529836973-1514383523.png?v=1529836974\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.39.53\" width=\"583\"><\/p>\n<p>\u6211\u5011\u8981\u505a\u7684\u8a13\u7df4\u53ea\u6709\u5169\u4ef6\u4e8b\uff1a<\/p>\n<ol>\n<li>\u6ed1\u9f20\u64cd\u4f5c\uff0c\u5148\u5c07\u300cTraining Data\u300d\u7684\u5716\u7247\u62d6\u9032\u5340\u57df<\/li>\n<li>\u6ed1\u9f20\u64cd\u4f5c\uff0c\u518d\u5c07\u300cTesting Data\u300d\u7684\u5716\u7247\u62d6\u9032\u5340\u57df<\/li>\n<\/ol>\n<p>\u771f\u662f\u8d85\u7d1a\u7c21\u55ae\u7684\u8a13\u7df4\u6a5f\u68b0\u5b78\u7fd2\u6a21\u578b\u65b9\u6cd5\uff01\u6bd4\u8d77\u5176\u4ed6\u7684\u4e09\u65b9\u5957\u4ef6\u5f97\u641e\u4e00\u5806\u6f14\u7b97\u53c3\u6578\u548c\u64b0\u5beb\u795e\u7d93\u7db2\u8def\u7a0b\u5f0f\u78bc\uff0c\u9019\u7c21\u76f4\u662f\u860b\u679c\u5fb7\u653f\uff01<\/p>\n<p>\u7528\u6ed1\u9f20\u9ede\u9078\u300cTraining Data\u300d\u76ee\u9304\u9805\u76ee\uff0c\u5f9e Finder \u6574\u500b\u62d6\u9032\u5340\u57df\u5f8c\uff0c\u8a13\u7df4\u5c31\u958b\u59cb\u4e86\u3002\u4e0b\u65b9\u6703\u51fa\u73fe\u8a13\u7df4\u9032\u5ea6\u548c\u8a0a\u606f\u3002\u9ed1\u860b\u679c\u7684 GPU \uff08R9-280X\uff09\u6eab\u5ea6\u4e5f\u8ddf\u8457\u4e0a\u5347\uff0cCPU \u6eab\u5ea6\u8ddf\u983b\u7387\u5012\u662f\u6c92\u4ec0\u9ebc\u8b8a\u5316\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.48.17\" border=\"0\" height=\"486\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529837587-2582051960.png?v=1529837589\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.48.17\" width=\"592\"><\/p>\n<p>\u5927\u7d04\u82b1\u4e86\u5169\u5206\u534a\u9418\uff0c\u5b78\u7fd2\u4e86\u7d04\u4e09\u5343\u591a\u5f35\u5716\u7247\uff0c\u4e26\u51fa\u73fe Training \u8ddf Validation \u5169\u500b\u6578\u5b57\u7d50\u679c\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.50.38\" border=\"0\" height=\"488\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529837475-1158577211.png?v=1529837477\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.50.38\" width=\"594\"><\/p>\n<p>\u63a5\u8457\u628a\u300cTesting Data\u300d\u5f9e Finder \u62d6\u9032\u5340\u57df\uff0c\u6700\u5f8c\u6703\u5f97\u5230\u7b2c\u4e09\u500b\u6578\u5b57 Evaluation\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.56.29\" border=\"0\" height=\"536\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529837801-801439409.png\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53486.56.29\" width=\"593\"><\/p>\n<p>Testing Data \u7684\u8cc7\u6599\u91cf\u53ea\u5360\u4e86\u7d04 20% \uff0c\u6240\u4ee5\u9019\u500b\u6b65\u9a5f\u7d04 40 \u79d2\u5c31\u5b8c\u6210\u4e86\u3002\u4e09\u500b\u6578\u5b57\u7d50\u679c\u4ee3\u8868\u4ec0\u9ebc\u610f\u601d\uff0c\u8001\u5be6\u8aaa\u6211\u4e5f\u4e0d\u592a\u6e05\u695a\u3002<\/p>\n<p>\u88dc\u5145\uff1a\u4ee5\u76f8\u540c\u7684\u8a13\u7df4\u8cc7\u6599\uff0c\u500b\u5225\u4ee5 R9-280X \u548c GTX-780 \u5404\u81ea\u91cd\u65b0\u8a13\u7df4\u4e00\u6b21\uff0c\u6240\u9700\u6642\u9593\u5982\u4e0b\uff1a<\/p>\n<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"height:100px; width:496px\">\n<tbody>\n<tr>\n<td>&nbsp;<\/td>\n<td style=\"text-align: center;\">R9-280X<\/td>\n<td style=\"text-align: center;\">GTX-780<\/td>\n<td style=\"text-align: center;\">CPU ( i7-3770)<\/td>\n<\/tr>\n<tr>\n<td>Training Data<\/td>\n<td style=\"text-align: center;\">2 \u5206 23 \u79d2<\/td>\n<td style=\"text-align: center;\">1 \u5206 40 \u79d2<\/td>\n<td style=\"text-align: center;\">11 \u5206 43 \u79d2<\/td>\n<\/tr>\n<tr>\n<td>Testing Data<\/td>\n<td style=\"text-align: center;\">39 \u79d2<\/td>\n<td style=\"text-align: center;\">22 \u79d2<\/td>\n<td style=\"text-align: center;\">3 \u5206 8 \u79d2<\/td>\n<\/tr>\n<tr>\n<td>\u6eab\u5ea6 (\u00b0C)<\/td>\n<td style=\"text-align: center;\">\u7d04 68 \u00b0C<\/td>\n<td style=\"text-align: center;\">\u7d04 67&nbsp;\u00b0C<\/td>\n<td style=\"text-align: center;\">&#8211;\uff08 CPU \u6eab\u5ea6\u001f\u6c92\u6709\u660e\u986f\u5347\u9ad8\u001f\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4f7f\u7528 GPU \u5c31\u5df2\u7d93\u6bd4 CPU \u7bc0\u7701\u4e86 80% \u6642\u9593\uff0c\u800c GTX-780 \u53c8\u6bd4 R9-280X \u8a13\u7df4\u901f\u5ea6\u5feb\u7d04 40%\uff0c\u6240\u4ee5\u60f3\u73a9 Machine Learning \u7684\u4eba\uff0c\u597d\u7684\u7368\u7acb\u986f\u5361\u662f\u5fc5\u8981\u7684\uff0c\u904b\u884c\u6642\u7684 GPU \u6eab\u5ea6\u4e5f\u6bd4\u8f03\u4f4e\uff08\u6eab\u5ea6\u722c\u5347\u8f03\u6162\uff09\u3002<\/p>\n<p>\u5c31\u9019\u6a23\uff0c\u6211\u5011\u5c31\u5b8c\u6210\u4e86\u6a5f\u68b0\u5b78\u7fd2\u8a8d\u8b58\u4e94\u7a2e\u82b1\u5349\u7684\u8a13\u7df4\u904e\u7a0b\uff0c\u64cd\u4f5c\u8d85\u7d1a\u7c21\u55ae\uff01\u7a0b\u5f0f\u78bc\u53ea\u9700\u4e09\u884c\uff0c\u53eb\u51fa\u8a13\u7df4\u4ecb\u9762\u5c31\u884c\u4e86\u3002\u5728\u6a19\u984c\u300cImageClassfier\u300d\u53f3\u908a\u7684\u5f80\u4e0b\u7bad\u982d\u9ede\u4e00\u4e0b\uff0c\u586b\u5beb\u4e00\u4e0b\u4f5c\u8005\u5927\u540d\u8ddf\u8cc7\u8a0a\uff0c\u53d6\u500b\u597d\u807d\u4e00\u9ede\u7684\u540d\u5b57\uff0c\u6309\u500b Save \u5c31\u53ef\u4ee5\u628a\u8a13\u7df4\u597d\u7684 .mlmodel \u6a21\u578b\u5b58\u64cb\u4e86\u3002<\/p>\n<p><img decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53487.03.03\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529838201-4163100043.png?v=1529838202\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u53487.03.03\"><\/p>\n<p>\u6700\u7d42\u5f97\u5230\u7684\u9019\u500b .mlmodel \u6a21\u578b\uff0c\u53ef\u7528\u4f86\u8fa8\u8b58 daisy\uff08\u96db\u83ca\uff09\uff0cdandelion\uff08\u6d66\u516c\u82f1\uff09\uff0croses\uff08\u73ab\u7470\uff09\uff0csunflower\uff08\u5411\u65e5\u8475\uff09\uff0ctulips\uff08\u9b31\u91d1\u9999\uff09\u4e94\u7a2e\u82b1\u5349\u7684\u5716\u7247\u3002<\/p>\n<p><span style=\"font-size:10pt\"><strong>\u9a57\u8b49\u6a21\u578b\u904b\u4f5c\u6e96\u78ba\u5ea6<\/strong><\/span><\/p>\n<p>\u7167\u4e0a\u8ff0 iOS App \u4f7f\u7528 .mlmodel \u6a21\u578b\u7684\u65b9\u5f0f\u4f9d\u6a23\u756b\u846b\u8606\uff0c\u628a\u81ea\u5df1\u8a13\u7df4\u51fa\u4f86\u7684 .mlmodel \u62c9\u9032 iOS \u5c08\u6848\u4f86\u9a57\u8b49\u8a13\u7df4\u6210\u679c\u3002\u5148\u4f7f\u7528\u76f8\u540c\u7684\u79d1\u57fa\u72ac\u5716\uff0c\u5f97\u5230\u7684\u7d50\u679c\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529838798-3145339492_l.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong>daisy = 0.06090744495831847<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong>roses = 0.1396115153932302<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong>sunflowers = 0.003177831752012689<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong>tulips = 0.7923442192467409<\/strong><\/span><\/p>\n<p class=\"p1\"><span style=\"color:#ffffff\"><strong>dandelion = 0.003958988649697627<\/strong><\/span><\/p>\n<p>\u96d6\u7136\u67ef\u57fa\u72ac\u88ab\u8fa8\u8b58\u70ba tulips\uff08\u9b31\u91d1\u9999\uff09\uff0c\u4e0d\u904e\u6e96\u78ba\u5ea6\u53ea\u6709 73%\u3002\u8fa8\u8b58\u70ba rose\uff08\u73ab\u7470\uff09\u7684\u6e96\u78ba\u5ea6\u70ba 13%\uff0cdaisy\uff08\u96db\u83ca\uff09\u4e5f\u6709 6%\u3002\u7c21\u55ae\u7684\u8aaa\uff0c\u5982\u679c\u628a\u6e96\u78ba\u5ea6\u62c9\u9ad8\u5230\u4e5d\u6210\u4ee5\u4e0a\uff0c\u67ef\u57fa\u72ac\u6703\u88ab\u6392\u9664\u5728\u4e94\u7a2e\u8fa8\u8b58\u7d50\u679c\u4e4b\u5916\u3002<\/p>\n<p>\u4e0a\u7db2\u96a8\u6a5f\u627e\u4e00\u5f35\u9b31\u91d1\u9999\u7684\u5716\u7247\u4f86\u8b58\u5225\u770b\u770b\uff1a<\/p>\n<p><a href=\"https:\/\/i2.wp.com\/travels.media\/tc\/wp-content\/uploads\/2015\/04\/%E9%AC%B1%E9%87%91%E9%A6%99.jpg\">https:\/\/i2.wp.com\/travels.media\/tc\/wp-content\/uploads\/2015\/04\/\u9b31\u91d1\u9999.jpg<\/a><\/p>\n<p>\u7d50\u679c\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529839337-3635970611_l.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<p class=\"p1\"><strong>2018-06-24 19:21:31.421823+0800 MobileNetProject[2283:175536] daisy = 3.277897492815316e-06<\/strong><\/p>\n<p class=\"p1\"><strong>2018-06-24 19:21:31.421907+0800 MobileNetProject[2283:175536] roses = 2.371430734334716e-07<\/strong><\/p>\n<p class=\"p1\"><strong>2018-06-24 19:21:31.422006+0800 MobileNetProject[2283:175536] sunflowers = 7.708879521718365e-08<\/strong><\/p>\n<p class=\"p1\"><strong>2018-06-24 19:21:31.422100+0800 MobileNetProject[2283:175536] tulips = 0.9999963913991989<\/strong><\/p>\n<p class=\"p1\"><strong>2018-06-24 19:21:31.422209+0800 MobileNetProject[2283:175536] dandelion = 1.647143954869135e-08<\/strong><\/p>\n<p>\u8fa8\u8b58\u70ba tulips\uff08\u9b31\u91d1\u9999\uff09\u7684\u6e96\u78ba\u5ea6\u9ad8\u9054 99.999%\uff0c \u5176\u4ed6\u82b1\u5349\u7684\u6a5f\u7387\u4f4e\u5230\u5c0f\u6578\u9ede\u4ee5\u4e0b\u516d\u4f4d\u001d\u3002<\/p>\n<p>\u83ca\u82b1\u7684\u7a2e\u985e\u8207\u984f\u8272\u66f4\u591a\uff0c\u96a8\u6a5f\u627e\u4e00\u5f35\u83ca\u82b1\u7684\u5716\u7247\u8a66\u8a66\u770b\u3002<\/p>\n<p><a href=\"http:\/\/pic.pimg.tw\/herballey\/4bb1c168b3a59.jpg\" target=\"_blank\">http:\/\/pic.pimg.tw\/herballey\/4bb1c168b3a59.jpg<\/a><\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529839853-2316359404_l.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<p class=\"p1\"><strong>daisy = 0.9937612288437867<\/strong><\/p>\n<p class=\"p1\"><strong>roses = 3.80718888536895e-05<\/strong><\/p>\n<p class=\"p1\"><strong>sunflowers = 0.001653476840197138<\/strong><\/p>\n<p class=\"p1\"><strong>tulips = 0.0009781564784137448<\/strong><\/p>\n<p class=\"p1\"><strong>dandelion = 0.003569065948748827<\/strong><\/p>\n<p>\u6e96\u78ba\u7387 99.3% \u4e5f\u5f88\u597d\uff0c\u770b\u4f86\u8a13\u7df4\u51fa\u4f86\u7684\u6a21\u578b\u8fa8\u8b58\u5ea6\u5f88\u4e0d\u932f\u3002<\/p>\n<p>\u627e\u4e00\u500b\u4e5f\u662f\u82b1\u5716\uff0c\u4f46\u4e0d\u5728\u8fa8\u8b58\u540d\u7a31\u5167\u7684\u7684\u7167\u7247\u3002Google \u641c\u5c0b\u300c\u767e\u5408\u82b1\u300d\uff1a<\/p>\n<p><a href=\"http:\/\/img.ltn.com.tw\/Upload\/liveNews\/BigPic\/600_2354058_2.jpg\" target=\"_blank\">http:\/\/img.ltn.com.tw\/Upload\/liveNews\/BigPic\/600_2354058_2.jpg<\/a><\/p>\n<p>\u7d50\u679c\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529851334-1841184043.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp;&nbsp;<\/span>daisy = 0.00254776680123029;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>dandelion = 8.846607084706478e-06;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>roses = 0.001350513187249112;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>sunflowers = 0.0001463019971201222;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>tulips = 0.9959465714073158;<\/strong><\/p>\n<p>\u7d50\u679c\u986f\u793a\u70ba\u9b31\u91d1\u9999\uff0c\u6e96\u78ba\u5ea6\u9084\u9ad8\u9054 99%\u3002\u770b\u4f86\u9019\u500b\u6a21\u578b\u4e0d\u8a8d\u8b58\u767e\u5408\u82b1\u4e4b\u5f8c\uff0c\u4e00\u80a1\u8166\u628a\u7d50\u679c\u5f80\u9b31\u91d1\u9999\u8eab\u4e0a\u5806\u3002<\/p>\n<p><a href=\"https:\/\/i.ytimg.com\/vi\/cir5_sg7u4A\/maxresdefault.jpg\" target=\"_blank\">\u9ec3\u82b1\u98a8\u9234\u6728<\/a><\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529851438-1450317343.png?v=1529851440\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp;&nbsp;<\/span>daisy = &#8220;0.1995546049451405&#8221;;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>dandelion = &#8220;0.622240376836122&#8221;;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>roses = &#8220;0.0250135171787896&#8221;;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>sunflowers = &#8220;0.1017718509332739&#8221;;<\/strong><\/p>\n<p class=\"p1\"><strong><span class=\"Apple-converted-space\">&nbsp; &nbsp; <\/span>tulips = &#8220;0.05141965010667407&#8221;;<\/strong><\/p>\n<p>\u8fa8\u8b58\u70ba dandelion \uff08\u6d66\u516c\u82f1\uff09\uff0c\u4e0d\u904e\u6e96\u78ba\u5ea6\u53ea\u6709 62%\uff0c\u8fa8\u8b58\u70ba daisy\uff08\u96db\u83ca\uff09\u7684\u6e96\u78ba\u5ea6\u70ba 19.9%\uff0c\u8207\u67ef\u57fa\u5716\u7684\u7d50\u679c\u985e\u4f3c\u3002<\/p>\n<p>\u770b\u4f86\u767e\u5408\u7684\u751f\u9577\u59ff\u614b\u8207\u9b31\u91d1\u9999\u5f88\u96f7\u540c\uff0c\u800c\u9ec3\u82b1\u98a8\u9234\u6728\u7684\u59ff\u614b\u7686\u4e0d\u540c\u65bc\u4e94\u7a2e\u53ef\u8fa8\u8b58\u7684\u82b1\u7a2e\uff0c\u6240\u4ee5\u6a5f\u7387\u4e0d\u9ad8\u3002\u5f97\u5230\u9019\u6a23\u7684\u908f\u8f2f\u4e4b\u5f8c\uff0c\u5f8c\u7e8c\u53ef\u4ee5\u7528\u7a0b\u5f0f\u53bb\u7e5e\u958b\u6a5f\u7387\u904e\u4f4e\u7684\u7d50\u679c\u3002<\/p>\n<p>\u7528 Xcode 10 Beta \u8a13\u7df4\u51fa\u4f86\u7684\u6a21\u578b\uff0c\u7d93\u6e2c\u8a66\u53ea\u80fd\u7528\u5728 iOS 12\u3002\u5728 iOS 11 \u88dd\u7f6e\u4e0a\u96d6\u7136\u4e0d\u6703\u5831\u932f\uff0c\u4f46\u8b80\u9032\u4f86\u7684\u6a21\u578b\u6a94\u8b8a\u6210 (null) \uff0c\u6240\u4ee5\u4e5f\u4e0d\u80fd\u7528\u3002\u5e0c\u671b\u860b\u679c\u5728 Xcode 10 \u80fd\u8655\u7406\u6389\u9019\u500b\u554f\u984c\u3002<\/p>\n<p><strong><span style=\"font-size:12pt\">\u6a21\u64ec\u60c5\u5883\uff1a\u8a13\u7df4\u8fa8\u8b58\u65b0\u7684\u4e8b\u7269 &#8211; \u300cGogoro \u63db\u96fb\u7ad9\u300d<\/span><\/strong><\/p>\n<p>\u4e0a\u9762\u63d0\u5230\u7684\u82b1\u5349\u5716\u96c6\u5df2\u7d93\u662f\u6709\u4eba\u6574\u7406\u904e\uff0c\u662f\u7d55\u4f73\u7684\u6a5f\u68b0\u5b78\u7fd2\u6559\u5b78\u7bc4\u4f8b\u5716\u6a94\uff0c\u6b77\u7d93\u7121\u6578\u7684\u6559\u5b78\u9a57\u8b49\uff0c\u6240\u4ee5\u4e0d\u8ad6\u7528\u54ea\u4e00\u7a2e\u8a13\u7df4\u65b9\u5f0f\uff0c\u8fa8\u8b58\u5ea6\u7576\u7136\u4e00\u5b9a\u6709\u5f88\u4e0d\u932f\u7684\u6210\u7e3e\u3002\u4f46\u5be6\u969b\u4e0a\u6a5f\u68b0\u5b78\u7fd2\u5f80\u5f80\u90fd\u662f\u6709\u7279\u5b9a\u7684\u9700\u6c42\uff0c\u7b2c\u4e00\u6b65\u8a72\u5982\u4f55\u6536\u96c6\u5230\u5927\u91cf\u7684\u5b78\u7fd2\u5716\u5eab\u3001\u6b63\u78ba\u7684\u5206\u985e\u6574\u7406\uff0c\u5c0d\u500b\u4eba\u7df4\u7fd2\u4f86\u8aaa\uff0c\u5c31\u662f\u500b\u5f88\u982d\u75db\u7684\u554f\u984c\u3002\u6a21\u64ec\u4e00\u500b\u8a13\u7df4\u6a21\u578b\u7684\u64cd\u4f5c\u6d41\u7a0b\uff0c\u9996\u5148\u60f3\u5230\u8981\u6536\u96c6\u7684\u5c0d\u8c61\uff0c\u662f\u6b63\u5728\u751f\u6d3b\u4e2d\u767c\u751f\u7684\u65b0\u4e8b\u7269\uff0c\u6216\u662f\u6709\u5f37\u70c8\u7279\u5b9a\u4e3b\u984c\u7684\u5546\u54c1\u4e3b\u9ad4\uff0c\u624d\u6703\u66f4\u8cbc\u8fd1\u5546\u696d\u4e0a\u7684\u5be6\u52d9\u64cd\u4f5c\u3002<\/p>\n<p>Gogoro \u96fb\u52d5\u6a5f\u8eca\u5728\u53bb\u5e74\u4e2d\u767c\u8868\u7b2c 2 \u578b\u5ec9\u50f9\u7248\u4e4b\u5f8c\u624d\u9010\u6b65\u6253\u958b\u5e02\u5834\uff0c\u7368\u6709\u7684\u300c\u63db\u96fb\u751f\u614b\u300d\u8207\u9010\u6b65\u5efa\u8a2d\u4e2d\u7684\u63db\u96fb\u7ad9\uff0c\u5728\u6700\u8fd1\u5e7e\u500b\u6708\u624d\u5728\u516d\u5927\u90fd\u6703\u5340\u9010\u6f38\u4f48\u5c40\uff0c\u5f88\u591a\u4eba\u770b\u5230 Gogoro \u63db\u96fb\u7ad9\u4e5f\u4e0d\u77e5\u9053\u662f\u4ec0\u9ebc\u73a9\u610f\uff08\u4e0d\u5c11\u4eba\u4ee5\u70ba\u662f\u8ca9\u8ce3\u6a5f\uff09\u3002\u800c\u63db\u96fb\u7ad9\u5ee3\u5e03\u53f0\u7063\u897f\u5cb8\u90fd\u6703\u5340\uff0c\u5982\u679c\u8981\u6536\u96c6\u5230\u6d77\u91cf\u7684\u63db\u96fb\u7ad9\u7167\u7247\u4f5c\u70ba\u8a13\u7df4\u8cc7\u6599\uff0c\u6311\u6230\u4e26\u4e0d\u5c0f\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u5145\u96fb\u7ad9\u99ac\u8cfd\u514b\u5716\" border=\"0\" height=\"352\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529909027-1016782497_l.jpg\" title=\"\u5145\u96fb\u7ad9\u99ac\u8cfd\u514b\u5716\" width=\"625\"><\/p>\n<p>\uff08\u5716\u7247\u4f86\u6e90\uff1a<a href=\"http:\/\/www.supermoto8.com\/articles\/1378\" target=\"_blank\">SUPERMOTO8<\/a>\uff09<\/p>\n<p>\u6240\u4ee5\u6211\u5c31\u7528\u300c\u8a13\u7df4\u6a5f\u68b0\u5b78\u7fd2\u8fa8\u8b58 Gogoro \u63db\u96fb\u7ad9\u300d\u70ba\u60c5\u5883\uff0c\u5617\u8a66\u7df4\u7fd2\u5982\u4f55\u81ea\u884c\u6536\u96c6\u6d77\u91cf\u7684\u63db\u96fb\u7ad9\u5716\u7247\uff0c\u4f5c\u70ba\u8a13\u7df4\u6a5f\u68b0\u5b78\u7fd2\u7684\u7d20\u6750\u3002Google \u5716\u7247\u641c\u5c0b\u7684\u78ba\u662f\u4e0d\u932f\u7684\u65b9\u5f0f\uff0c\u4e0d\u904e\u6700\u8fd1\u5e7e\u500b\u6708 Google \u641c\u5c0b\u5716\u7247\u7684\u7db2\u9801\u8b8a\u66f4\uff0c\u5df2\u7d93\u4e0d\u592a\u5bb9\u6613\u5f9e Google \u5716\u7247\u4f7f\u7528\u300c\u4e00\u9375\u4e0b\u8f09\u300d\u7684\u529f\u80fd\u4e86\uff0c\u8a66\u4e86\u5e7e\u500b Chrome \u5916\u639b\u90fd\u5931\u6557\uff0c\u76ee\u524d\u5927\u6982\u53ea\u80fd\u4e00\u5f35\u4e00\u5f35\u624b\u52d5\u4e0b\u8f09\u3002<\/p>\n<p>\u5728 Gogoro \u5b98\u7db2\u6709\u4e00\u500b\u300c\u67e5\u8a62\u63db\u96fb\u7ad9\u300d\u7684\u7db2\u9801\uff08<a href=\"https:\/\/www.gogoro.com\/tw\/findus\/?filter=1000\" target=\"_blank\">\u7db2\u5740<\/a>\uff09\uff0c\u9ede\u64ca\u5730\u5716\u4e0a\u7684\u63db\u96fb\u7ad9\u5716\u793a\u4e4b\u5f8c\uff0c\u7db2\u9801\u6703\u986f\u793a\u8a72\u63db\u96fb\u7ad9\u7684\u5916\u89c0\u7167\u7247\u3002\u9664\u4e86 Google \u5716\u7247\u4e4b\u5916\uff0c\u9019\u61c9\u8a72\u662f\u6d77\u91cf\u6536\u96c6\u63db\u96fb\u7ad9\u7167\u7247\u7684\u6700\u4f73\u5165\u53e3\u4e86\u3002\u7136\u800c\u5b98\u7db2\u7684\u5716\u7247\u6709\u7248\u6b0a\u9650\u5236\uff0c\u6240\u4ee5\u6211\u4e0d\u80fd\u6559\u5927\u5bb6\u5982\u4f55\u4e00\u6b21\u6293\u53d6\u5168\u90e8\u7684\u63db\u96fb\u7ad9\u7167\u7247\u3002<\/p>\n<p>\u4f46\u6211\u76f8\u4fe1\u5c0d\u65bc\u719f\u6089\u89e3\u6790\u7db2\u9801\u5167\u5bb9\u7684\u4eba\u4f86\u8aaa\uff0c\b\u770b\u5230\u7db2\u9801\u5c31\u77e5\u9053\u7528\u4ec0\u9ebc\u65b9\u6cd5\u300c\u4e00\u6b21\u6d77\u91cf\u4e0b\u8f09\u300d\uff0c\u4e26\u975e\u96e3\u4e8b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534811.18.43\" border=\"0\" height=\"427\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529853688-3373648162.png?v=1529853690\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534811.18.43\" width=\"641\"><\/p>\n<p>\u89e3\u6790\u9019\u500b\u7db2\u9801\u5167\u5bb9\u5f8c\uff0c\u6211\u5011\u4e00\u6b21\u5c31\u53d6\u5f97\u4e86 917 \u5f35\u6bcf\u500b\u63db\u96fb\u7ad9\u7684\u5916\u89c0\u5716\u7247\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534811.44.46\" border=\"0\" height=\"523\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529855155-2870901602.png\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534811.44.46\" width=\"640\"> &nbsp;<\/p>\n<p>\u63a5\u8457\u6309\u7167\u4e0a\u9762\u7684\u65b9\u5f0f\uff0c\u5728\u539f\u4f86\u7684\u82b1\u5349\u5716\u96c6\u7684\u76ee\u9304\u4e2d\uff0c\u52a0\u5165\u300cgogorostation\u300d\u76ee\u9304\u4f5c\u70ba\u8fa8\u8b58\u6a19\u7c64\uff0c\u4e26\u4f9d\u7167 80% \u300cTraining Data\u300d\u8207 20% \u300cTesting Data\u300d\u5206\u914d\u5716\u6a94\u3002<\/p>\n<p><img decoding=\"async\" alt=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534811.52.42\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529855638-58132741.png\" title=\"\u87a2\u5e55\u5feb\u7167 2018-06-24 \u4e0b\u534811.52.42\"><\/p>\n<p>\u4e2d\u9593\u7684\u8a13\u7df4\u904e\u7a0b\u5feb\u8f49\uff0c\u4e26\u6539\u5beb\u4e86\u4e00\u4e0b\u7a0b\u5f0f\uff0c\u53ea\u8981\u8f38\u51fa\u7d50\u679c\u4e0d\u662f\u63db\u96fb\u7ad9\u7684\uff0c\u901a\u901a\u986f\u793a\u300c\u4e0d\u662f\u63db\u96fb\u7ad9\u300d\u7684\u7d50\u679c\u6a19\u7c64\u3002\u8df3\u8f49\u5230\u9a57\u8b49\u6a21\u578b&#8230;\u7d50\u679c\u60b2\u5287\u4e86\uff01\u7db2\u8def\u4e0a\u96a8\u4fbf\u627e\u4e00\u5f35\u6709\u5efa\u7bc9\u7269\u7684\u8857\u666f\u5716\uff0c\u901a\u901a\u5224\u5b9a\u70ba\u300cgogorostation\u300d\uff0c\u6e96\u78ba\u7387\u9084\u9ad8\u5230\u5687\u4eba\uff0c\u5e7e\u4e4e\u90fd\u6709 99% \u4ee5\u4e0a\u3002<\/p>\n<p>\u6aa2\u67e5\u62ff\u4f86\u8a13\u7df4\u7684\u5716\u6a94\u5167\u5bb9\uff0c\u6211\u5927\u6982\u77e5\u9053\u539f\u56e0\u5728\u54ea\u4e86\u3002<\/p>\n<p><img decoding=\"async\" alt=\"0161_\u53f0\u5317\u6377\u904b\u6c11\u6b0a\u897f\u8def\u7ad9(25.061359,121.520027)_3\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529856003-2852904802.jpg?v=1529856005\" title=\"0161_\u53f0\u5317\u6377\u904b\u6c11\u6b0a\u897f\u8def\u7ad9(25.061359,121.520027)_3\"><\/p>\n<p><img decoding=\"async\" alt=\"0171_\u53f0\u5851\u798f\u83ef\u52a0\u6cb9\u7ad9(25.000692,121.553902)_1\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529856056-2183572836.jpg?v=1529856057\" title=\"0171_\u53f0\u5851\u798f\u83ef\u52a0\u6cb9\u7ad9(25.000692,121.553902)_1\"><\/p>\n<p>\u6709\u4e9b\u8a13\u7df4\u5716\u6a94\u7167\u7247\u7684\u63db\u96fb\u7ad9\u4e3b\u9ad4\u6bd4\u4f8b\u592a\u5c0f\uff0c\u5c0f\u5230\u770b\u4e0d\u5230\u63db\u96fb\u7ad9\u5728\u54ea\uff0c\u6709\u4e9b\u7167\u7247\u5468\u906d\u6709\u592a\u591a\u300c\u4e0d\u662f\u63db\u96fb\u7ad9\u8a72\u6709\u7684\u6771\u897f\u300d\uff0c\u80fd\u4e00\u773c\u770b\u51fa\u300c\u662f\u63db\u96fb\u7ad9\u4e3b\u9ad4\u7167\u7247\u300d\u7684\u5716\u6a94\u4e0d\u5230\u4e00\u534a\uff0c\u9019\u4e9b\u4e00\u80a1\u8166\u5168\u4e1f\u9032\u53bb\u8a13\u7df4\uff0c\u7576\u7136\u6703\u5e72\u64fe\u5b78\u7fd2\u7684\u6548\u679c\uff0c\u53ea\u597d\u518d\u82b1\u4e86\u4e0d\u5c11\u6642\u9593\u628a\u4e00\u4e9b\u300c\u770b\u8d77\u4f86\u6709\u554f\u984c\u300d\u7684\u8a13\u7df4\u7167\u7247\u522a\u9664\uff0c\u518d\u8a13\u7df4\uff0c\u6548\u679c\u4e0d\u4f73\u518d\u522a\u9664\uff0c\u518d\u8a13\u7df4\u3001\u518d\u522a\u9664\u3001\u518d\u8a13\u7df4\uff08GPU \u5feb\u71d2\u8d77\u4f86\u4e86\uff09&#8230;\u53cd\u8986\u5e7e\u6b21\u4e4b\u5f8c\uff0c\u52c9\u5f37\u6709\u4e86\u300c\u7a0d\u5fae\u6bd4\u8f03\u6eff\u610f\u300d\u7684\u8fa8\u8b58\u7d50\u679c\u3002<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529857438-1586128007.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529857438-3633898522.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529858596-1041014752.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529857438-1986010929.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p>\u7136\u5f8c\u627e\u5e7e\u5f35\u65e5\u524d\u53e6\u4e00\u5bb6\u6a5f\u8eca\u5927\u5ee0\u767c\u8868\u7684\u96fb\u52d5\u6a5f\u8eca\u63db\u96fb\u7ad9\u7167\u7247\uff0c\u4f86\u8003\u9a57\u4e00\u4e0b\u6a21\u578b\uff1a<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529857438-557171559.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529857438-1288631999.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p>\u770b\u8d77\u4f86\u5f88\u6210\u529f\u554a\uff5e\u662f\u55ce\uff1f\u8001\u5be6\u8b1b\uff0c\u9019\u5169\u5f35\u6a5f\u8eca\u5ee0\u7684\u63db\u96fb\u7ad9\u7167\u7247\uff0c\u6e96\u78ba\u7387\u9084\u6709 98% \u8207 97 %\uff0c\u6240\u4ee5\u5224\u5b9a\u6a19\u6e96\u8a2d\u5b9a\u5728 99% \u4ee5\u4e0a\u624d\u8b93\u5b83\u300c\u770b\u8d77\u4f86\u6709\u6548\u679c\u300d\u3002\u800c\u9019\u9ebc\u9ad8\u6a19\u6e96\uff0c\u7576\u7136\u4e5f\u6703\u9020\u6210\u932f\u8aa4\u7684\u7d50\u679c\u3002<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529858108-1820214033.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p>\u9019\u5f35\u662f\u5b98\u65b9\u7684\u63db\u96fb\u7ad9\u5ba3\u50b3\u5716\uff0c\u6e96\u78ba\u7387 97.8%\u3002<\/p>\n<p><img decoding=\"async\" alt=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\" border=\"0\" src=\"https:\/\/pic.pimg.tw\/benjenq\/1529858186-329273065.png\" title=\"\u3010\u6a5f\u68b0\u5b78\u7fd2\u3011\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\"><\/p>\n<p>\u4e0d\u77e5\u70ba\u4f55\u9019\u5f35\u53ea\u88ab\u5224\u5b9a 94.5 %\uff0c\u6e96\u78ba\u5ea6\u6bd4\u7af6\u722d\u5c0d\u624b\u9084\u4f4e\u3002<\/p>\n<p>\u6240\u4ee5\u5927\u6982\u7b97\u4e86\u4e00\u4e0b\uff0c\u4ee5 99% \u6e96\u78ba\u5ea6\u70ba\u6a19\u6e96\uff0c\u8fa8\u8b58\u6210\u529f\u5927\u7d04\u53ea\u6709\u4e00\u534a&#8230;\uff08\u54ed&#8230;\uff09\uff0c\u6240\u4ee5\u56b4\u683c\u4f86\u8b1b\uff0c\u9019\u500b\u300c\u8fa8\u8b58 Gogoro \u63db\u96fb\u7ad9\u300d\u7684\u6a21\u578b\u6c92\u6709\u7df4\u597d\uff0c\u4e0d\u904e\u9019\u6210\u7e3e\u4e5f\u53ea\u82b1\u4e86\u77ed\u77ed\u4e00\u500b\u665a\u4e0a\uff0c\u6bd4\u6211\u5beb\u9019\u908a\u6587\u7ae0\u7684\u6642\u9593\u9084\u77ed\u3002<\/p>\n<p>\u5ef6\u4f38\u95b1\u8b80\u5b98\u7db2\u6587\u4ef6\uff1a<a href=\"https:\/\/developer.apple.com\/documentation\/create_ml\/improving_your_model_s_accuracy\" target=\"_blank\">\u63d0\u5347\u6a21\u578b\u7684\u6e96\u78ba\u5ea6<\/a>\u3002<\/p>\n<p><strong><span style=\"font-size:12pt\">\u5f8c\u8a18<\/span><\/strong><\/p>\n<p>\u8fd1\u5e7e\u5e74\u4f86\u4e00\u76f4\u5617\u8a66\u8e0f\u5165\u6a5f\u68b0\u5b78\u7fd2\u7684\u5751\uff0c\u4e5f\u4e00\u8def\u8d70\u5f97\u8dcc\u8dcc\u649e\u649e\uff0c\u76f4\u5230\u860b\u679c\u53bb\u5e74\u767c\u8868 Core ML \u8207\u4eca\u5e74\u7684 Create ML\uff0c\u5c07\u6a5f\u68b0\u5b78\u7fd2\u7684\u9580\u6abb\u4e00\u4e0b\u5b50\u5f9e\u5929\u969b\u62c9\u5230\u4e86\u8173\u908a\uff0c\u53ef\u60f3\u800c\u77e5\uff0c\u4e0d\u4e45\u7684\u5c07\u4f86\u300c\u6a5f\u68b0\u5b78\u7fd2\u300d\u5c07\u662f\u4e00\u9580\u4eba\u4eba\u53ef\u89f8\u53ca\u3001\u5be6\u4f5c\u7684\u8b70\u984c\u3002\u7136\u800c\u860b\u679c\u62c9\u4f4e\u9580\u6abb\u4e5f\u53ea\u662f\u500b\u958b\u7aef\uff0c\u4e5f\u4e0d\u4ee3\u8868\u6240\u6709\u7684\u6a5f\u68b0\u5b78\u7fd2\u57fa\u790e\u90fd\u80fd\u62cb\u958b\u8271\u6f80\u7684\u6578\u7406\u77e5\u8b58\u8207\u8cc7\u6599\u6536\u96c6\uff0c\u73fe\u5728\u53ef\u4ee5\u8a13\u7df4\u6a5f\u68b0\u5b78\u6703\u8a8d\u8b58\u63db\u96fb\u7ad9\uff0c\u90a3\u9ebc\u63a5\u4e0b\u4f86\uff0c\u8981\u600e\u9ebc\u8a13\u7df4\u5f9e\u5716\u7247\u88e1\u660e\u78ba\u6a19\u793a\u51fa\u63db\u96fb\u7ad9\u5728\u5716\u7247\u4e2d\u54ea\u500b\u4f4d\u7f6e\uff0c\u627e\u5230\u63db\u96fb\u7ad9\u5f8c\u5982\u4f55\u5f9e\u5916\u89c0\u8fa8\u8b58\u6a5f\u5668\u6709\u5e7e\u500b\u5145\u96fb\u5b54\uff0c\u6709\u54ea\u5e7e\u500b\u5145\u96fb\u5b54\u662f\u53ef\u7528\u7684\uff1f\u5f8c\u9762\u9084\u6709\u4e00\u5927\u5806\u7684\u5b78\u7fd2\u6316\u5751\uff0c\u6c38\u7121\u6b62\u5883\u7684\u6a5f\u68b0\u5b78\u7fd2\u904e\u7a0b\uff0c\u5ef6\u4f38\u81f3\u6df1\u5ea6\u5b78\u7fd2\u3001\u4eba\u5de5\u667a\u6167\u7684\u9818\u57df\u3002<\/p>\n<p>\u518d\u8005\uff0c\u8a13\u7df4\u6a5f\u68b0\u5b78\u7fd2\u7684\u6f14\u7b97\u7406\u8ad6\u3001\u7a0b\u5f0f\u64b0\u5beb\u529f\u529b\u4f3c\u4e4e\u4e0d\u592a\u662f\u91cd\u9ede\uff0c\u771f\u6b63\u7684\u91cd\u9ede\u5728\u65bc\uff1a\u6e96\u5099\u3001\u6a19\u8a3b\u8cc7\u6599\u3001\u6574\u7406\u8cc7\u6599\uff0c\u5982\u4f55\u5229\u7528\u6f14\u7b97\u6cd5\u7684\u7279\u6027\u63d0\u5347\u6e96\u78ba\u5ea6\uff0c\u5426\u5247\u6a5f\u68b0\u5b78\u7fd2\u5230\u7684\u4e5f\u662f\u4e0d\u53ef\u4fe1\u4efb\uff0c\u5f88\u96e3\u767c\u63ee\u771f\u6b63\u7684\u7528\u8655\u3002<\/p>\n<p>\u4e0d\u8ad6\u5982\u4f55\uff0c\u9084\u662f\u5f88\u611f\u6069\u5982\u4eca\u6709\u4e86\u7c21\u55ae\u7684\u8a13\u7df4\u6a5f\u68b0\u65b9\u6cd5\uff0c\u81f3\u5c11\u5728\u5efa\u7acb\u67d0\u4e9b\u6a5f\u68b0\u5b78\u7fd2\u6a21\u578b\u6642\uff0c\u6709\u6a5f\u6703\u7e5e\u904e\u5982\u535a\u58eb\u8ad6\u6587\u822c\u8271\u6df1\u96e3\u61c2\u7684\u6f14\u7b97\u908f\u8f2f\uff0c\u5efa\u7acb\u7b26\u5408\u500b\u4eba\u76ee\u7684\u61c9\u7528\uff0c\u6216\u8a31\u6709\u671d\u4e00\u65e5\uff0c\u6bcf\u500b\u4eba\u90fd\u53ef\u4ee5\u900f\u904e\u5982\u6559\u80b2\u4eba\u985e\u822c\u7684\u4e92\u52d5\u904e\u7a0b\uff0c\u8a13\u7df4\u51fa\u5b8c\u5168\u5c6c\u65bc\u81ea\u5df1\u4f7f\u7528\u3001\u7b26\u5408\u81ea\u5df1\u751f\u6d3b\u7fd2\u6163\u7684\u4eba\u5de5\u6a5f\u68b0\u52a9\u7406\uff0c\u671f\u5f85\u9019\u5929\u80fd\u5728\u6709\u751f\u4e4b\u65e5\u5be6\u73fe\u3002<\/p>\n<p>\u7e7c\u7e8c\u95b1\u8b80\uff1a<a href=\"http:\/\/benjenq.pixnet.net\/blog\/post\/46028982\">\u6559\u4f60\u7684 iPhone \u8a8d\u8b58 Gogoro \u63db\u96fb\u7ad9\uff08Part 2\uff09 &#8211; \u7528\u9ed1\u860b\u679c\u96fb\u8166\u73a9\u8f49\u6700\u592f\u7684\u6a5f\u68b0\u5b78\u7fd2<\/a><\/p>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #000000; background-color: #ffffff}\nspan.s1 {color: #9b2393}\nspan.s2 {color: #326d74}\nspan.s3 {color: #5c2699}\n-->\n<\/style>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #9b2393; background-color: #ffffff}\nspan.s1 {color: #000000}\n-->\n<\/style>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #6c7986; background-color: #1f1f24}\np.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\np.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #fc6a5d; background-color: #1f1f24}\np.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; background-color: #1f1f24; min-height: 14.0px}\np.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #91d462; background-color: #1f1f24}\nspan.s1 {color: #ffffff}\nspan.s2 {color: #7ac8b6}\nspan.s3 {color: #99e8d5}\nspan.s4 {color: #91d462}\nspan.s5 {color: #fc5fa3}\nspan.s6 {color: #aef37d}\nspan.s7 {color: #9686f5}\nspan.s8 {color: #6c7986}\n-->\n<\/style>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #1f1f24}\n-->\n<\/style>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #e2e5e5; background-color: #000000}\np.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #fbfdff; background-color: #000000}\np.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #00b1ff; background-color: #000000}\np.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #95ff8e; background-color: #000000}\np.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #e2e5e5; background-color: #000000; min-height: 13.0px}\np.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #33d2b7; background-color: #000000}\nspan.s1 {color: #33d2b7}\nspan.s2 {color: #de38a5}\nspan.s3 {color: #08fa95}\nspan.s4 {color: #95ff8e}\nspan.s5 {color: #e2e5e5}\nspan.s6 {color: #fbfdff}\nspan.s7 {color: #00b1ff}\nspan.s8 {color: #8b87ff}\nspan.s9 {text-decoration: underline ; color: #95ff8e}\nspan.s10 {text-decoration: underline ; color: #de38a5}\nspan.s11 {color: #ff4647}\n-->\n<\/style>\n<style type=\"text\/css\"><!--\np.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #e2e5e5; background-color: #000000}\np.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #fbfdff; background-color: #000000}\np.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #00b1ff; background-color: #000000}\np.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #95ff8e; background-color: #000000}\np.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #e2e5e5; background-color: #000000; min-height: 13.0px}\np.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #33d2b7; background-color: #000000}\nspan.s1 {color: #33d2b7}\nspan.s2 {color: #de38a5}\nspan.s3 {color: #08fa95}\nspan.s4 {color: #95ff8e}\nspan.s5 {color: #e2e5e5}\nspan.s6 {color: #fbfdff}\nspan.s7 {color: #00b1ff}\nspan.s8 {color: #8b87ff}\nspan.s9 {text-decoration: underline ; color: #95ff8e}\nspan.s10 {text-decoration: underline ; color: #de38a5}\nspan.s11 {color: #ff4647}\n-->\n<\/style>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd1\u5e74\u4f86\u6240\u8b02\u7684\u300c\u5927\u6578\u64da\u300d\uff08Big Data\uff09\u3001\u300cAI \u4eba\u5de5\u667a\u6167\u300d\u3001\u300c\u6a5f\u5668\u5b78\u7fd2\u300d\uff08Machine Learning [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[56],"tags":[],"class_list":["post-3832","post","type-post","status-publish","format-standard","hentry","category-56"],"_links":{"self":[{"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/posts\/3832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/comments?post=3832"}],"version-history":[{"count":0,"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/posts\/3832\/revisions"}],"wp:attachment":[{"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/media?parent=3832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/categories?post=3832"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/benjenq.ddns.net\/blog\/wp-json\/wp\/v2\/tags?post=3832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}