あの日見た花の名前を僕はまだ知らないので自作アプリで判別したい
こんにちは。エンジニアの高橋です!
フルリモートでの勤務に最近慣れつつ、全く外出しない生活習慣を見直そうと毎朝散歩する習慣を取り入れています。そんな中、散歩中に何か楽しみを見つけようと道端にある花の名前を判別するアプリを作ってみたので紹介したいと思います!
こんなアプリです
1. カメラ or 写真から判別したい画像を選択
2. 類似度が高い順にリスト表示
3. 詳細画面を開く
1. モデルを作成(Create ML)
Create MLを活用することで、アプリで使用する機械学習モデルを作成することができます。今回は画像を学習させていますが、他にテキストや表データも学習させることができます。
今回は花の判別をしてみたいので、各ラベルごとに10枚以上の写真を用意して学習させました。(公式ドキュメントで10枚以上を推奨しています。)学習させる写真はなるべく別アングルのものを用意した方が良いらしく、正面・横などの写真を使用しました。写真を集めるのは大変ですが、この選定が判別の確度をあげる肝かもしれません。。
2. 学習させたモデルで写真を分析(Core ML)
CoreMLとVisionフレームワークを使用して画像を解析します。
解析結果では、ラベル名と類似度(%)が取得できるので、降順でリスト表示します。そもそも一番類似度が高いラベル名だけを表示すれば良いのですが、あまり判別の精度がよくなかったので、ある程度類似度が高い結果を表示する様にしました。
CoreMLとVisionフレームワークによる判別のコード説明は別の記事で紹介しております。
3. 花に関する情報の取得
詳細画面では、花に関する情報(花言葉など)を取得しています。Core MLによる判別は、学習モデルをアプリ内に保持しているためネットワークを介さずに判別しています。今回はその利点を活かすために、オフラインで情報を取得できる様にcsvで情報を持たせる様にしました。(これは別に良い方法があると思います。)これにより、圏外でもアプリが動作します。
4. まとめ
今回Create MLを使った学習モデルの作成を試みてみましたが、10種類ほどの花の判別でも結構精度にばらつきが出てしまいました。確かに、簡単にアプリ上で使用できる学習モデルを作ることができますが、何が原因で精度が落ちているのかブラックボックスな点がありモヤモヤ感が残る結果となりました。
今回は新しく学習モデルを作成しましたが、既に学習済みモデル(他フレームワーク)をCoreMLに変換する方法もあるので、もし目的に合致する物を見つけることができれば、こちらの方法が良いと思います。機会があれば、こちらについての記事も書きたいと思います。
最後に
弊社ではエンジニアを大募集中です。
昨年末に上場を果たし、今後さらなる拡大を図るためにはまだまだたくさんの仲間の力が必要です。
世の中の新しい当たり前を作っていきたい、ものづくりが好き、チームワークを大切にして成果を上げていきたいという想いがある方のご応募をお待ちしております。
この記事が気に入ったらサポートをしてみませんか?