Tech

MLKitで使えるTensorflow Liteについて調べてみた

投稿日:

はじめに

こんにちは。前回の記事でAndroid MLKitを通じて初めて機械学習に接し、以降も少しずつ学習を続けています。
その記事の最後のあたりで、Tensorflow Liteの独自モデルによる解析についてほんの少しだけ触れました。
「on-device解析は出来ることや精度に限界がある、じゃあ自分でモデルを作ってみたい」
「でもTensorflow Liteのモデルってどう作るんだろう」
となり調べてみたところ、Tensorflowそのものについて理解する必要があるとわかりました。
以下は知識整理のためのまとめと、実際にTensorflow環境を作って、触ってみるところまでの記事となります。

そもそもTensorflowとは

「機械学習といえばTensorflow」という感じで名前だけはよく見聞きするTensorflowですが、実際にどういうものなのかをざっくり表現すると機械学習で推測を行う際に使用するモデルを構築するライブラリという認識です。

そしてTensorflow Liteとは

Liteという名前の通り軽量版で、Tensorflowで作ったモデルから変換・作成されます。
学習はTensorflowで行って、そこから出力されたTensorflow Liteのモデルを使って推測を行うもので、モバイル環境での使用を想定して開発されています。
モバイル環境ではCPUやメモリ、ストレージなど様々なリソースに制限がありますので「学習をモバイル端末では行わない」かつ「軽量」なのがミソなのだと思います。

Tensorflowの環境構築

Tensorflowを扱えないと、Tensorflow Liteの独自モデル作成もできないと分かりましたので、まずmacOS High SierraでPythonおよびTensowflowの環境構築をしていきます。目標は独自モデルの作成ですが、まずはHello Worldです。
macOSのデフォルトではPython2系のため、3系をインストールします。
また Command Line toolshomebrew はインストール済みの前提で進めていきます。

pyenv, pyenv-virtualenvをインストール

rbenvやphpenvと同様に、Pythonのバージョンを簡単に切り替えるための pyenv , pyenv-virtualenv をインストールします。

続いてPythonの最新版(記事作成時点で3.7.0)をインストールします。

pyenv install 3.7.0 でエラーになる場合

Xcode command line tools がインストールされていないと、 zipimport.ZipImportError: can't decompress data; zlib not available というエラーが出ますので、以下のコマンドでインストールしましょう。

Tensorflow用の環境を作成する

pip, Tensorflowインストール

pipはPythonのパッケージ管理システムです。rubyのgem, phpのcomposerですね。
TensorflowはPythonのライブラリですので、pipでインストールします。

Hello World

ここまで来たら動作確認です。Pythonの対話形式でコードを実行します。

ここまで実行したところで、私の環境(MacBook Pro 2017)では 2018-08-21 23:14:01.418426: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA というWarningが出ました。
ひとまず無視して以下のコードを実行し、ひとまず動くことは確認できました。

Warningの内容について

エラーメッセージで検索してみると、ズバリな記事がありました。
macOS で「this TensorFlow binary was not compiled to use: AVX2 FMA」エラー
ざっくり言うと「精度と速度があまり出ないけどスルーしても動く」というものでした。
もう少し詳しく説明すると AVX2FMA はCPUの拡張命令の一種で、私のMacBook Proでは対応しているものの、pip経由でインストールしたTensorflowのバイナリが非対応だったようです。

さいごに

いかがでしたでしょうか。「Android端末上でMLKitを動かす」という目的から始まった学習ですが、PythonやTensorflowにも手を伸ばすことになりました。
まだHello Worldの段階なので、ここから実際にどうモデルを作るのかとなると、正直なところよく理解できていません(「ひたすらデータを大量に食わせれば精度が上がる」程度の雑な認識でした…)。
機械学習入門として真っ先に候補となる分野は画像認識ですが、個人的には会話AIにも興味があります。必要な知識の膨大さにとにかく圧倒されている現状ですが、引き続き学んでいきます。

参考

関連記事

blog-page_footer_336




blog-page_footer_336




-Tech

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

BLEのペアリングをWiresharkでキャプチャしながら学ぶ

1 はじめに2 ペアリングとボンディング3 暗号化はキャラクタリスティック単位4 ペアリングの流れ4.1 セキュリティリクエスト4.2 ペアリングリクエスト・レスポンス4.3 Passkeyの検証5 ...

Flutterで生体認証が楽々導入できると噂のlocal_auth

1 はじめに2 準備3 実装3.1 端末が生体認証可能かの確認3.2 生体認証の登録状態の確認3.3 生体認証の実行4 おすすめ書籍 はじめに 最近はFlutterの勉強ばかりしていますが、今回は簡単 ...

Go言語

GoでSMF(MIDI)ファイルを読み込んでみた

1 はじめに2 MIDIとは?2.1 SMFファイルについて2.1.1 Tickと分解能2.1.2 トラックチャンク3 gomidiを使ってSMFファイルを読み込む3.1 gomidiの導入3.2 実 ...

【Swift】Xcode13XCTestの新機能、繰り返し実行で遊んでみた。

1 はじめに2 XCTestについて3 繰り返しのテストについて4 実際に使ってみる5 テストコードについて6 テストの設定7 さいごに8 おすすめ書籍 はじめに こんにちは、suzukiです。とうと ...

祝!iOS15でハーフモーダルが追加

1 はじめに2 早速使ってみる2.1 準備2.2 実装2.3 detents2.4 コードでの高さ切り替え2.5 モーダル内のスクロール許可2.6 グラバーの表示2.7 角丸2.8 親Viewとの併用 ...

フォロー

blog-page_side_responsive

2018年8月
 1234
567891011
12131415161718
19202122232425
262728293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。