本記事ではLightweightが特徴である画像認識ツールPaddleClasの使い方を解説します。
PaddleClasとは
PaddleClasは、Lightweightを特徴とする画像認識ツールセットです。
Baiduが開発するAIフレームワークPaddlePaddleを利用しています。
提供されている事前学習モデルでは、車両、ロゴ、アニメのキャラクターなどが認識可能となっています。
Lightweight(軽量動作)を特徴とするため、一般的なPCのCPUさえあれば推論の実行が可能です。
画像認識結果 出典: PaddlePaddle/PaddleClas |
少々技術的な詳細を記載します。
PaddleClasは、PP-ShiTuと呼ばれる軽量画像認識手法を組み込んだツールセットです。
PP-ShiTuは、本体検出(mainbody detection)、特徴抽出(feature extraction)、ベクトル検索(vector search)の3つのモジュールで構成されています。
PaddleClas構成図 出典: PaddlePaddle/PaddleClas |
そしてこの手法を組み込んだPaddleClasはオープンソースとして、Githubに公開されており、事前学習済みモデルを使用して画像認識を実施することや、公開されたネットワークを使って自作のモデルをトレーニングすることも可能です。
PaddleClasの導入手順
セットアップ1: paddlepaddleのインストール
それでは早速、開発環境にPaddleClasをセットアップしていきます。
動作確認は下記の環境で行っています。
OS: Ubuntu 18.04.3 LTS
GPU: GeForce GTX 1080
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
それでは、PaddleClasをインストールしていきます。他の機械学習環境に影響を与えないためにMinicondaの仮想環境上に構築していきます。Minicondaのインストール手順は公式ドキュメントをご参照ください。
始めにPaddleClasの動作環境を下記に記載します。
- python 3.x
- cuda >= 10.1 (paddlepaddle-gpuを使用する場合)
- cudnn >= 7.6.4 (paddlepaddle-gpuを使用する場合)
- nccl >= 2.1.2 (train/evalを実施する場合)
- gcc >= 8.2
またcuda driverはcuda10.1の場合は418.39以上を、cuda10.2の場合は440.33以上をインストールしている必要があります。paddlepaddle-gpuを使用する場合は事前に必ず確認してください。
cuda driverはnvidia-smi
で確認できます。
次にminicondaの仮想環境を作成し、そこにpaddlepaddleフレームワークをインストールします。
paddlepaddle-gpuのインストール時にpip3 install paddlepaddle-gpu --upgrade -i
https://mirror.baidu.com/pypi/simple
でインストールすることも可能ですが、pythonのバージョンやcudaのバージョン不一致で詰まると厄介なためFilesからダウンロードしてインストールします。
問題なくインストールできているか下記のコマンドを実行して確認します。
上記のようにバージョンが表示されチェックに成功すれば、インストールは完了です。
一方で、paddlepaddle-gpu
をインストールした場合に下記のエラーが発生した場合、GPUを認識できていません。
cudaバージョンの不一致の可能性が高いため
cudaバージョン、pythonバージョンが一致するpaddlepaddle-gpu
をFilesからダウンロードしてインストールすると解消する場合があります。
以上でpaddlepaddleのインストールは完了です。
セットアップ2: PaddleClasのインストール
続いて、PaddleClasのインストールを行います。
以上でPaddleClasのインストールは完了です。
paddlepaddleに比較して簡単ですね。
セットアップ3: 学習済みモデルとdemoデータの準備
次に学習済みモデルとdemo用データを取得します。
ここまでで下記のようなディレクトリ構造になっていればモデル、データの準備は完了です。
画像認識
最後に画像認識を用意したモデルを使って画像認識を行います。
画像認識が完了すると/deploy/output
には以下のような認識結果の画像が出力されています。
画像認識ができているようですが、日本人には馴染みのない製品のため合っているかどうかが分かりませんね。
そのため自分で用意した画像を画像認識させてみます。
はじめにProduct Recognitionモデルが認識できる製品を確認します。
recognition_demo_data_v1.1/gallery_product/data_file.txt
を確認します。
MacBook Pro, iPhone 12proなどいろいろありますね。今回はMacBook Proを認識させてみます。
MacBook
Proを認識するかを確認するため本記事では以下のロイヤリティフリーの画像を用意しました。
上記画像をPaddleClas/deploy/my_data
のディレクトリを作成し配置します。
そして以下を実行します。
以下のような出力が得られ正常に認識できていることが分かります。
まとめ
本記事では、PaddleClasで画像認識を行う方法を紹介しました。
今回は学習済みモデルを使って画像認識を行ったため認識できる対象に限りがありましたが、
学習用データを準備し、モデルをトレーニングすれば、任意の対象を認識するモデルを生成することも可能です。
またlightweightを謳っていることもありLightWeight版のモデルサイズは約33MBほどでスマホに組み込むことも可能なサイズです。
モデルが複雑化し消費するディスクやメモリが増大する手法も多い中、LightWeightな戦略は、機械学習技術の適用範囲を拡大する一つの要因になり得るかもしれません。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - PP-ShiTu: A Practical Lightweight Image Recognition System
0 件のコメント :
コメントを投稿