20220111のiOSに関する記事は4件です。

最短で画像判別アプリを作成(Swift)

雲を判別したい 素人が見た目から何の雲かを判別するのは難しい。 雲が分かれば現在の天気や今後の天気がわかる。 気象学的に雲は10種類に分けることができます。これを十種雲形と言います。 今回最小限の労力・最短での画像判別アプリ作成を目標とします。 日本気協会HPより CoreMLで雲画像の機械学習モデルを作成 CoreMLの詳細は下記の記事を参照。 https://qiita.com/PearlEarringMinion/items/a703eb3525e4aec6c46d 以下の分類でモデルを作成しました。 googleや気象研究者のtwitterから画像を収集し、1分類につき画像は15〜20枚学習させました。 CoreML apple公式サンプルコードをDL 以下のappleデベロッパーサイトから画像判別アプリのサンプルコードをダウンロードします。 https://developer.apple.com/documentation/vision/classifying_images_with_vision_and_core_ml サンプルコードに作成したモデルを組み込む ダウンロードしたサンプルファイルをXcodeで開きます。 "Models"ファイルに"MobileNet"というCoreMLモデルがありますので、こちらを削除して、自身で作成した モデルをドラッグします。 "Image Predictor"フォルダに"ImagePredictor"ファイルがありますのでこちらのコードを一部変更します。  ImagePredictorクラス内の3行目のモデル名を自身で作成したモデル名称に変更します。 ContentView.swift class ImagePredictor { /// - Tag: name static func createImageClassifier() -> VNCoreMLModel { // Use a default model configuration. let defaultConfig = MLModelConfiguration() // Create an instance of the image classifier's wrapper class. /*let imageClassifierWrapper = try? MobileNet(configuration: defaultConfig)*/ //ここのコードのモデル名を変更する!!!!!!!!!! let imageClassifierWrapper = try? CloudMyImageClassifier2(configuration: defaultConfig) guard let imageClassifier = imageClassifierWrapper else { fatalError("App failed to create an image classifier model instance.") } // Get the underlying model instance. let imageClassifierModel = imageClassifier.model // Create a Vision instance using the image classifier's model instance. guard let imageClassifierVisionModel = try? VNCoreMLModel(for: imageClassifierModel) else { fatalError("App failed to create a `VNCoreMLModel` instance.") } return imageClassifierVisionModel } 実機で試す bundle IDを自分のものに変更して実機を繋いでテストしてみます。 まあまあ精度良く判別することに成功しました。 雲が存在しない場合は快晴と判別してくれます。 高積雲と巻積雲、高層雲と巻層雲は高度が違うだけで形が同じなので判別することが難しいみたいです 疑問 公式サンプルコードをベースとしているので、これをアレンジしてappストアにリリースしても、 ガイドラインの"アプリの模倣"にあたりリジェクトされてしまうでしょうか? デベロッパー登録料払っているので、そろそろストアにリリースしたいです。 全ソースコードとモデル GitHub https://github.com/PearlEarringMinion/CloudImageClassfyingApp
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

最短で画像判別アプリを作成する(Swift)

雲を判別したい 素人が見た目から何の雲かを判別するのは難しい。 雲が分かれば現在の天気や今後の天気がわかる。 気象学的に雲は10種類に分けることができます。これを十種雲形と言います。 今回最小限の労力・最短での画像判別アプリ作成を目標とします。 日本気協会HPより CoreMLで雲画像の機械学習モデルを作成 CoreMLの詳細は下記の記事を参照。 https://qiita.com/PearlEarringMinion/items/a703eb3525e4aec6c46d 以下の分類でモデルを作成しました。 googleや気象研究者のtwitterから画像を収集し、1分類につき画像は15〜20枚学習させました。 CoreML apple公式サンプルコードをDL 以下のappleデベロッパーサイトから画像判別アプリのサンプルコードをダウンロードします。 https://developer.apple.com/documentation/vision/classifying_images_with_vision_and_core_ml サンプルコードに作成したモデルを組み込む ダウンロードしたサンプルファイルをXcodeで開きます。 "Models"ファイルに"MobileNet"というCoreMLモデルがありますので、こちらを削除して、自身で作成した モデルをドラッグします。 "Image Predictor"フォルダに"ImagePredictor"ファイルがありますのでこちらのコードを一部変更します。  ImagePredictorクラス内の3行目のモデル名を自身で作成したモデル名称に変更します。 ImagePredictor.swift class ImagePredictor { /// - Tag: name static func createImageClassifier() -> VNCoreMLModel { // Use a default model configuration. let defaultConfig = MLModelConfiguration() // Create an instance of the image classifier's wrapper class. /*let imageClassifierWrapper = try? MobileNet(configuration: defaultConfig)*/ //ここのコードのモデル名を変更する!!!!!!!!!! let imageClassifierWrapper = try? CloudMyImageClassifier2(configuration: defaultConfig) guard let imageClassifier = imageClassifierWrapper else { fatalError("App failed to create an image classifier model instance.") } // Get the underlying model instance. let imageClassifierModel = imageClassifier.model // Create a Vision instance using the image classifier's model instance. guard let imageClassifierVisionModel = try? VNCoreMLModel(for: imageClassifierModel) else { fatalError("App failed to create a `VNCoreMLModel` instance.") } return imageClassifierVisionModel } 実機で試す bundle IDを自分のものに変更して実機を繋いでテストしてみます。 まあまあ精度良く判別することに成功しました。 雲が存在しない場合は快晴と判別してくれます。 高積雲と巻積雲、高層雲と巻層雲は高度が違うだけで形が同じなので判別することが難しいみたいです 疑問 公式サンプルコードをベースとしているので、これをアレンジしてappストアにリリースしても、 ガイドラインの"アプリの模倣"にあたりリジェクトされてしまうでしょうか? デベロッパー登録料払っているので、そろそろストアにリリースしたいです。 全ソースコードとモデル GitHub https://github.com/PearlEarringMinion/CloudImageClassfyingApp
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

超解像をとりあえず使ってみるなら、画像ドロップで使えるCoreMLモデルで

画像を鮮明に大きくしてくれる超解像を手軽につかう方法です オリジナル(左)と超解像結果(右) 鮮明なコンテンツ提供に使える超解像モデル、使うのは難しい? 超解像を使えれば、より鮮明に、リッチなサイズで、 ユーザーに提供するコンテンツのクオリティをあげられる可能性がある。 しかし、超解像技術はどうやって使えばいいのだろうか? 複雑な計算が必要なんじゃないの? CoreMLなら画像ドロップでとりあえず使える CoreMLモデルなら、画像ドロップでとりあえず超解像モデルが試せる。 アプリへの組み込みもかんたん アプリへの組み込みも、Xcodeにファイルを入れて、短いコードで呼び出すだけである。 手順 CoreML-ModelsからBSRGANをダウンロードする。 ファイルを開き、Previewタブで画像をドロップする。 ↓ 画像をモデルファイルにドロップ ↓ プロジェクトに組み込む場合は、Visionで実行する。 guard let model = try? VNCoreMLModel(for: bsrgan(configuration: MLModelConfiguration()).model) else { fatalError("model initialization failed") } let coreMLRequest = VNCoreMLRequest(model: model) let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: [:]) try? handler.perform([coreMLRequest]) guard let result:CVPixelBuffer = coreMLRequest.results?.first as? VNPixelBufferObservation else { return } ? フリーランスエンジニアです。 お仕事のご相談こちらまで rockyshikoku@gmail.com Core MLやARKitを使ったアプリを作っています。 機械学習/AR関連の情報を発信しています。 Twitter Medium
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

モバイルシステム技術検定(MCPC)2級の対策

皆様 お久しぶりです。satolabです。 最終更新から1年以上の月日が流れました。現在私は某IT企業でモバイル系のインフラエンジニアをしております。 この1年は慌ただしく、qiitaをはじめ情報発信や趣味の開発に中々時間を割けておりませんでした。 現在も四苦八苦の日々ですが、少しずつ情報発信の方も再開出来ればと思っております。 前置きが長くなりましたが、今回はちょっとニッチな資格である"MCPC2級"の対策について紹介したいと思います。 私は11月に受験し、無事合格出来ました。 概要 モバイルシステム技術検定(通称:MCPC)は、モバイルシステムの提案、構築、運用のために必要となる知識とそのレベルを明示することによって、IT関連技術者の学習意欲の喚起を行い、その学習成果を検定(試験)により測定することが可能となります。 (引用: https://www.mcpc-jp.org/kentei/gaiyou.html) 試験は年に二回あり、後半の回はCBT方式で受けることができます。私は最寄りのテストセンターで受験しました。 なおボーダーは公開されていません。 対策 公式本を読み込むことです。過去問等は公開されておらず、インターネット上を探しても見つかりませんでした。 公式本: モバイルシステム技術テキスト 第9版 MCPC検定試験2級対応 本は試験日までに3周し、重要そうな部分にマーカーを引いて頭に入れるようにしました。 勉強の期間は2-3週間程度で、1日に2時間程度本を読み込みました。なので計30時間ぐらい勉強しました。 丸暗記出来ればベストですが、数百ページあるので無理です笑 そのため、何周かする事で頭に情報を蓄積しました。本番の試験では選択式なので、丸暗記でなくとも消去法で回答することができます。 ポイントとしては略語、図、表をしっかり押さえる事です。公式のページのサンプル問題にもあるように、図や表から出題されるパターンがあります。 試験の傾向と感想 公式サイトにも記述があるように、各章から偏りなく、バランス良く、均等に出題されました。 なので、この章にやまをはって…といった対策はしなくて正解でした。 難易度としては、公式本を読んでいれば必ず回答があるレベルですので高くありません。 試験時間も余裕があります。100問ありますが、急ぐ必要はありません。見直しと、もう一度解く時間が十分にありました。 試験後に自己採点をしまして、出来は7割といった感じでした。結果が心配でしたが、無事合格できました。 試験から得られる学び モバイル周りのお仕事につかれている方は、日々の業務に活きる知識を大会的に学べるので良いと思います。 (個人的には4Gや5Gの事業者側のシステムの話が興味深かったですね。3Gより以前の歴史的背景を学べる点も良いです。) 特に私のような若手・新人で、どうやって知識を得ようかと悩まれている方にもお勧めできます。 ポイントは試験の難易度が普通であり、対策の時間もそこまでかからないので日々の業務の片手間で取り組める点だと思います。 手っ取り早く資格取得という成果が出る点は魅力だと思います。 最後に 今回はMCPCという資格試験の概要と対策をまとめました。 ちょっとニッチ?な試験なので、ネットには情報が少ないと思いましたので、今回まとめた次第です。 今後は勉強だけではなく、実際にインフラ周りの実装にトライし、記事にでも出来ればなと考えています。 最後までお読みいただきありがとうございました。 ※本記事はあくまで個人の見解であり、私の属する企業及び組織を代表するものではありません。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む