他のDataikuの記事について知りたい方は以下の記事もご参照ください
基本的な機能について
Dataikuつかってみた
https://www.keywalker.co.jp/blog/dataiku-trial.html
データ整形と機械学習
KaggleでおなじみのTitanicのデータをDataikuで整形をしてみた
https://www.keywalker.co.jp/blog/dataiku-tinanic-01-2.html
KaggleでおなじみのTitanicの生存者予測をDataikuでしてみた
https://www.keywalker.co.jp/blog/dataiku-tinanic-02-2.html
Open AI APIを用いた自然言語処理
Dataiku上にOpenAI API用の環境を構築する方法の紹介
https://www.keywalker.co.jp/blog/dataiku上にopenai-api用の環境を構築する方法の紹介.html
画像処理
Dataikuで豆の葉の病状を自動判別してみた
https://www.keywalker.co.jp/blog/dataiku-image_processing-01-1-1.html
1.はじめに
Dataikuではテーブルデータに対する処理だけでなく自然言語処理や時系列解析、画像処理に関する機械学習もノーコードで実施できます。
今回は4種類のマイコン(電化製品やスマートフォンといった電子機器を制御する小さなコンピュータのこと)のアノテーションされたデータをもとに機械学習を用いて学習モデルを作成し、画像の中にあるマイコンを検知しどの種類かラベル付けする物体検知に挑戦してみました。
なお、今回はDataiku Academy内にあるラーニングコースをもとに自動検知や不良品検知などに利用される物体検知の機械学習を実施しました。
Image Classification and Object Detection without Code
https://academy.dataiku.com/path/ml-practitioner/image-classification-with-visual-tools-open
2.プロジェクトの作成
画像分類に入る前にDataiku上で作業をするための場所であるプロジェクトというものを作成します。
NEW PROJECTをクリックすると以下のようなタブが出てきます。
DSS tutorialsをクリックすると、下記の画像のようなTutorialの選択ページから今回はML Practitionerを選択し、Image Classification without Codeを選択します。
(DSS tutorialsでは時系列解析や画像処理、自然言語処理といったDataikuをつかったハンズオンの講習が受けられます。)
プロジェクトが作成できると、アノテーションファイル(annotations)と画像ファイル(images)が既にアップロードされた状態で始まります。
このデータセットの中身はMicrocontroller Object Detection datasetというESP8266、Arduino Nano、Heltec ESP32 Lora、Raspberry Pi 3という4種類のマイコンの画像が入っています。
https://www.kaggle.com/datasets/tannergi/microcontroller-detection
imagesのフォルダにマイコンの画像が格納されています
annotationsのファイルには画像ファイル名と対応したラベルが格納されています。
学習モデルを作成する前にannotationsを訓練データとテストデータに分割します。
Visual recipies をクリックしSplitをクリックします
Splitでデータを分割します。ここでは訓練データとしてannotations_trainとテストデータとしてannotations_testに分割します。
分割先のファイルを用意してあげて、CREATE RECIPEをクリックします。
CREATE RECIPEをクリックすると次のようなページが出てきます。
データをランダムに分割するためにRandomly dispatch dataを選択します。
選択したらデータを分割する割合を決めます。今回は訓練データとテストデータを8:2の割合で分割します。
3.学習モデルの作成
分割を実行するとフロー上では次のように表されます。
annotationsをannotations_trainとannotations_testに分割できました。
訓練データannotations_trainを用いて学習モデルの作成をしていきます。
赤枠で囲まれたフォルダアイコンをクリックすると画面右に下記のようなページが出現します。
LABというタブがあるのでクリックします。
クリックすると機械学習を簡単にやってくれるアイコンがでてきます。
今回は物体検知が目的なのでObject Detection を選択します。
Object Detectionを選択し目的変数にlabelを入力します。
labelを選択したらImagesを選択し、CREATEをクリックします。
CREATEをクリックするとアノテーションされた画像が表示されます。各マイコンごとに枠が付けられています。
画面左下にどのマイコンがどれくらいの割合でアノテーションされているか表されています。
特定のクラスのサンプル数が少なくないかなどを確認し問題がなければ、Trainをクリックして学習を開始します。
学習が終わったらモデルをデプロイします。
今回はデフォルトで設定されてあるObject detectionのみを使用しました。
モデルをデプロイしたら、テストデータを使って実際に物体検知ができるかどうか確かめます。
Object detection on annotations_trainをクリックすると画面右に下記画像のようなページが出現します
赤枠で囲まれたアイコンをクリックして物体検知を実行します。
実際にテストデータを学習モデルに適用すると下記画像のようにマイコンを物体検知してくれます。
物体検知をしてどのマイコンかも判別しています。
中にはマイコンを二種類のものと誤検知していたり、マウスをマイコンだと誤検知しているものもあります。
サンプリングの割合の変更などで精度向上の余地がありそうです。
3.まとめ
今回はDataiku上でノーコードで物体検知に挑戦してみました。
Dataikuを使えば学習モデル作成を含め物体検知までの作業が一時間程度で難なくできることを実感しました。
Dataikuではwebアプリも作成できることから自動検知や不良品検知といった実務的なwebアプリの作成にも挑戦してみたいです。