サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
qiita.com/shu223
この記事は クソアプリアドベントカレンダー2 の2日目の記事です。今まで傍から見ているだけでしたがついに初参加できて嬉しいです。 課題: 動画よりもスライドでサクサク見たい WWDCセッションの内容をチェックしては発信する、ということを毎年やっている 1 のですが、なぜか昨年(2020)あたりからセッションのスライドPDFが公開されなくなりました。 セッションの動画は例年通り公開されているのですが、 動画よりもスライドのほうがシーク効率が圧倒的に良いので、やっぱりスライドが欲しい。2 で、つくったのが、 動画からスライドを抽出するiOS/macOSアプリ「Slidify」 ↑この動画をSlidifyに食わせて全自動で生成したスライドが、 ↑こちら。 いかがでしょう? 荒削りな部分(後述)はあるものの、私は自分用ツールとしては十分実用に耐えうると思いました。 しくみ スライド抽出のしくみはざ
「写真いっぱい撮ってるけど、一生振り返る暇ないな…」 という課題意識から、100枚/秒で写真を閲覧できる「Somato」というiOSアプリをつくった。 1,000枚の写真であれば10秒で閲覧できる。 まぁ正直100枚/秒はインパクト重視で謳っているところはあるが、意外と20枚/秒ぐらいで高速表示していても不思議と「懐かしいなぁ」と十分に思い出に浸れる。無料なので興味のある人はぜひダウンロードして試してみてほしい。 (M1 Macでも利用可能。MacのApp Storeで"Somato"で検索してください) 本記事ではこのアプリの実装について書く。 概論 実は、Somatoは技術的に尖った部分は特にない。 ざっくりいうと、Photos(PhotoKit)で画像を取得し、UICollectionViewで表示しているだけ。 最初のプロトは1時間もかからずできた。特に工夫もなく、素直な実装をやっ
func session(_ session: ARSession, didUpdate frame: ARFrame) { guard let depthData = frame.sceneDepth else { return } // Use depth data } 利用可能なコンフィギュレーション ARConfigurationプロトコルに定義されているframeSemanticsプロパティにsceneDepthを設定するので、API的には利用可能ではあるが、APIリファレンスのsceneDepthの項にある記述を読む限り、ワールドトラッキング以外のコンフィギュレーションでは利用できないっぽい。 If you enable this option on a world-tracking configuration's frameSemantics, ARKit includes
// ファイル用のアナライザを初期化 let audioFileAnalyzer = try! SNAudioFileAnalyzer(url: url) // MLModelオブジェクトを渡してリクエストを作成 let request = try! SNClassifySoundRequest(mlModel: HogeSoundClassifier().model) // リクエストをアナライザに追加 try! audioFileAnalyzer.add(request, withObserver: self) // 解析開始 audioFileAnalyzer.analyze() 分類結果 SNClassificationResult timeRange: CMTimeRange 処理区間の開始時間・終了時間 classifications: [SNClassification] 各
本日からはじまったWWDC 2019、SwiftUIをはじめ実にワクワクする新機能が盛りだくさんでした。iOS 13のドキュメントが公開されたので、明日からのセッションでどのへんを勉強するかの予習をかねて、気になった新APIをピックアップしておきます。 Vision 人間検出 VNDetectHumanRectanglesRequest 人間を矩形で検出。 ↓はOpenCVを使った結果ですが、こういうのです。 ARKitのpeople segmentationがインパクトありすぎて「矩形で検出」というのは印象薄いですが、「こういうのもあったな」と頭の片隅に置いておくといつか用途があるかもしれません。 文字認識 VNRecognizeTextRequest 文字認識。従来から備えていた文字領域検出ではなく、文字認識、いわゆるOCR的なやつです。 今まで無料で使えるやつだとtesseractと
TensorFlow LiteがAndroidやiOSデバイスのGPUをサポートしたようです1。 TensorFlow Lite Now Faster with Mobile GPUs (Developer Preview) バックエンドはAndroidではOpenGL ES 3.1、iOSではMetal。 This new backend leverages: OpenGL ES 3.1 Compute Shaders on Android devices Metal Compute Shaders on iOS devices iPhone 7では最大6倍の高速化が見られたようです。 By leveraging the new GPU backend in the future, inference can be sped up from ~4x on Pixel 3 and Sams
原始のiPhoneからカメラは搭載されていましたが、デプス(深度)が取れるデュアルカメラやTrueDepthカメラが搭載されたのは比較的最近のことです。従来のカメラやGPSが、デジタルの世界と我々が生きる現実世界を繋ぐ重要な役割を担い、アプリ開発者に多くの創造性を与えてくれたのと同様に、「奥行き」がわかるようになったというのはアプリ開発の次元がひとつ増えたようなもの。そのわりに、深度関連APIにどのようなものがあるか、何ができるか、どう実装するのか、という情報は日本語はもちろん、英語でもあまり多くはありません。 そこで、iOSにおけるデプス(深度)関連APIの実装方法を示すサンプル集「iOS-Depth-Sampler」をオープンソースで公開しました。 https://github.com/shu223/iOS-Depth-Sampler ソースコードは GitHub に置いてあるので、ご
ARKit 2.0では、「画像トラッキング」という新機能が加わりました。既知の2次元画像を検出・トラッキングできるので、ポスター等の現実世界に存在する2D画像を基盤にしてAR体験を開始することができるようになる、というものです。これを聞いて「あれ、その機能、既になかったっけ」と思った方もいたのではないでしょうか。 その既視感はある意味では正しく、ARKit 1.5で既に「画像検出」という機能が追加されています。 では、これらはどう違うのでしょうか?ARKit 1.5の画像検出機能を強化したものが2.0の画像トラッキングで、リプレースされたのでしょうか。それとも別々の機能として共存しているのでしょうか。 結論としては後者で、それぞれ強みを持つ別々の機能として共存しています。 コンフィギュレーションの違い まず実装面でみると、ARKit 1.5で搭載された画像検出は、検出対象とするリファレンス
iOS 11.3(いわゆるARKit 1.5)より、任意の2次元形状のジオメトリで平面を検出できるようになりました。たとえば次のgifのように、丸テーブルの平面を円形(に近い)ジオメトリとして検出できます。 なお、これから解説するAPIを見るとわかりますが、水平面だけでなく、ARKit 1.5で検出可能になった垂直平面にも本機能は有効です。 ARSCNPlaneGeometry 本機能において鍵となるのはARSCNPlaneGeometryというiOS 11.3(ARKit 1.5)の新クラスです。 https://developer.apple.com/documentation/arkit/arscnplanegeometry SCNGeometryを継承しており、ARKitが検出した平面の2次元形状を表すためのクラスです。 このクラスのイニシャライザはひとつしかなく、 このように、M
tfcoreml(リポジトリ名は "tf-coreml")という、TensorFlowで学習したモデルを、Core MLモデル(.mlmodel)に変換するツールがあります。 TensorFlow LiteもCore MLモデルへの変換をサポートしているみたいな記事もありましたが、まだLiteがどういうものなのかよくわかってないのと、ググッてtfcoremlが一番上に出てきたし、メンテもアクティブにされてるようなのでこちらを試してみた次第です。 tfcoremlのインストール でいけます。 が、僕はしばらくTensorFlowを触ってなかったので、次のエラーに遭遇しました。 Could not find a version that satisfies the requirement tensorflow>=1.1.0 (from tfcoreml) (from versions: ) N
Metalのデバッグに関連する機能やツールの使い方を本記事にまとめていこうと思います。 GPUフレームキャプチャ XcodeにビルトインされているMetalのデバッグ機能。 Metal利用アプリを実行中、カメラ型のアイコン("Capture GPU Frame")を押すと、その瞬間のGPUフレームがキャプチャされ、次のような画面になる。 非常に高機能なので、詳細はそれぞれの項にて。 ラベル Metalのクラスやプロトコルは文字列型のlabelというプロパティを備えているものが多くある。 例: MTLCommandQueue MTLResource MTLBuffer, MTLTexture MTLFunction MTLRenderPipelineDescriptor MTLCommandBuffer MTLCommandEncoder たとえば次のようにラベルをつけておいて、 comma
qiita.com
「超解像」(Super-resolution)とは、画像の解像度を高める技術のことです。100x100ピクセルの画像から200x200ピクセルの画像を生成する、というような話。 従来のリサイズ処理とはどう違うのか、はあとで見ていただくとして、これがiOSアプリ内で、しかもオンデバイス1でリアルタイムに処理できるとなると、それによって享受できるメリットは計り知れません。なんといっても 通信量を削減できる! という点は多くのアプリにとって嬉しいのではないかと思います。幅・高さ半分でファイルサイズが約4分の1、品質(解像度)は同等だとすると、熱くないですか?2 ネイティブアプリにおいて、サクサク感はUXの肝。モバイルデバイスの性能が著しく向上した現在、ボトルネックは通信、というケースは多いかと思います。また通信インフラが十分に整っていない国にもサービス展開するにあたって、通信周りをカリカリに最適
iOS 11 / macOS 10.13から、Metalデバイスで利用中のメモリサイズを返すプロパティがMTLDeviceに追加されました。 単位はバイトです。 APIリファレンスの原文: The current size, in bytes, of all resources allocated by this device. 正しく表現するなら、「当該デバイスで確保されている全リソースのサイズ」となります。MetalデバイスはGPUをあらわすので、GPUで確保しているリソースの合計サイズ、という解釈でいいのかなと。 実装例: func draw(in view: MTKView) { print("allocated size0: \(device.currentAllocatedSize)") guard let drawable = view.currentDrawable els
やりたいこと: 各種モデリングソフトからエクスポートされた3Dモデルを、SceneKit (on iOS)で使いたい モデルに紐づくアニメーションとかボーン(Rigged Models)とかもそのまま使いたい ちなみになぜUnityじゃないかというと、非ゲームな、基本的には2Dのアプリで、一部で「3D的表現」を行いたい、という要件からです。 扱えるフォーマット 結論からいうと、.dae(Digital Asset Exchange / COLLADA)の一択。(※追記: プロジェクトにリソースとして追加してあるdaeファイルは実際に使えますし、以下のコードで動作するのですが、「SceneKitが扱えるフォーマット」という点ではこの記述は語弊があります。詳しくはコメント欄をご参照ください) こんな感じで使います。 let url = Bundle.main.url(forResource:
随時追加していきます。 MTLBufferの内容を更新する makeBufferでバッファを新規作成するのではなく、既にあるバッファの中身を変更したい場合、UnsafeMutableRawPointerのcopyMemoryメソッドを使用する buffer.contents().copyMemory(from: &value, byteCount: MemoryLayout<Float>.stride)
iOSの機械学習フレームワークの比較 - Core ML / Metal Performance Shaders (MPSCNN) / BNNSiOSMetal機械学習SwiftcoreML iOS 11 で追加された Core ML と、iOS 10 の頃からある Metal Performance Shaders の CNN、Accelerate の BNNS について、2017年7月に勉強会で話した際のスライドです。 Core ML vs MPSCNN vs BNNS #fincwwdc // Speaker Deck 発表の概要 iOS 11で追加されたCore MLが非常に注目を集めていますが、「既存の機械学習ツールを使って学習させたモデル(のパラメータ)をiOS側に持ってきて推論を実行する」ということ自体はiOS 10からありました。 そして、そこに不便さがあったので広まらず、
iOS 11 より追加される Core ML を使うと、Keras や Caffe や scikit-learn で学習させたモデルをコマンドラインツールで変換でき、それをXcodeにドラッグ&ドロップすれば必要なコードが自動生成される、とのこと。 開発者ドキュメントから見る iOS 11 の新機能 #WWDC17 - Qiita "Vision Framework: Building on Core ML" というWWDC17のセッションに付随する公式サンプルで、Core MLでつくったカスタムモデル+Visionフレームワークで画像の識別(MNISTの手書き数字認識)をやる実装があるのですが、その実装を参考にCore ML+Visionでリアルタイム物体認識を実装してみました。 このキャプチャはiOS 11のものではなく、iOS-10-Samplerのものです。NDAに配慮してこちらを
(WWDC17初日にブログに書いた記事を再編したものになります) ついにiOSも10年目。だいぶ成熟してきて、今年は特に何も期待しないまま参加したのですが、開発者的には非常にワクワクする発表がたくさんありました。 基調講演の内容からではなく、ベータ公開されたiOS Dev CenterのAPIリファレンスを見て、個人的に/開発者目線から気になった新APIを挙げていきます。 Core ML iOS 10からMetal Performance Shaders(以下MPS)に追加されたCNN関連機能、足りないものが色々とあり、ここらへんは拡充されたら嬉しいなとは思っていましたが、新フレームワークとして登場しました。 おいおい、さらに増えたら MPSCNN / BNNS / Core ML とどう使い分けるんだ、と思いましたが、ドキュメントの図で棲み分けがわかりました。 Keras や Caffe
Super Quest DCGAN Deep Convolutional Generative Adversarial Networks ディープラーニングで画像(等)を自動生成する技術 データセットを学習して、データセットにありそうな画像を生成する 例 アイドルの顔画像生成 TensorFlowによるDCGANでアイドルの顔画像生成 - すぎゃーんメモ アイドルの顔画像を大量に集めて学習 → アイドルっぽい顔を自動生成 顔イラストの生成 Chainerで顔イラストの自動生成 - Qiita 顔イラストを集めてきて学習 → 顔イラストを自動生成 DCGAN-tensorflow TensorFlowを用いた実装 READMEに書いてある通りに実行すれば簡単に試せる 試してみた DCGAN-tensorflowで自動画像生成をお手軽に試す - Qiita 付属のサンプルを実行 セレブ顔のデー
DCGAN は Deep Convolutional Generative Adversarial Networks の略で、超ざっくり言うと畳み込みニューラルネットワークを使って画像生成するアルゴリズムです。元論文以外に、日本語で噛み砕いて説明してくれている記事もたくさんあります。 はじめてのGAN できるだけ丁寧にGANとDCGANを理解する - 午睡二時四十分 これを使ってアイドルの顔画像を生成したり、イラストを生成したり、そういうことができるアレです。ググるとおもしろい事例がたくさん出てきます。 そんな「なんだかすごい」DCGAN、勝手に「使うのも難しそう」なイメージを持ってたのですが、TensorFlowを用いた実装が公開されてまして、 https://github.com/carpedm20/DCGAN-tensorflow 実はデモを試すだけであれば手順通りにコマンド実行する
次のページ
このページを最初にブックマークしてみませんか?
『@shu223のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く