どうも、まさとらん(@0310lan)です!
今回は、誰でも簡単にブラウザからオリジナルの機械学習モデルを作成・トレーニングすることができるサービスをご紹介します。
画像に写っているモノを特定したり、対象のオブジェクトを検出・抽出するなどさまざまな活用方法があり、トレーニングも数分で完成するので効率よくモデルを構築することができます。
また補足として、Airtableを活用した事例についても合わせて紹介しているので、ご興味ある方はぜひ参考にしてみてください!
なお、paizaラーニングでも機械学習を学べる「Python×AI・機械学習入門編」を公開していますので、合わせてチェックしてみてください。
Python×AI・機械学習入門編について詳しくはこちら
【 Nanonets 】
■「Nanonets」の使い方
それでは、最初にNanonetsをどのように使っていけば良いのかを見ていきましょう!
まずは、トップページの【GET STARTED】ボタンをクリックして無料のユーザー登録をしておきます。
ログイン用の画面になる場合は、下の方にある【Sing up】のリンクをクリックしましょう。
Googleアカウントで簡単にユーザー登録できますが、メールアドレスからでも登録は可能です。
登録を済ませると、専用のダッシュボード画面が表示されます。
この画面上で、既存の学習済みモデルやオリジナルで作成した学習モデルを管理していくことができるようになっています。
また、SDKやAPIも無料で公開されているので、オリジナルの学習モデルを簡単に自分のWebページへ組み込むことができます。このあたりも含めて、次の章からNanonetsの活用法をより詳しく見ていきましょう!
■学習モデルを作ってみよう
それでは、オリジナルの学習モデルを作っていきましょう!
今回はサンプルとして、2種類の食べ物を識別できる学習モデルを作ってみたいと思います。
まずは、画像識別用のモデル(Image Classification)を作成するためのカテゴリを選択します。
識別したい食べ物を入力していきます。試しに、【イチゴ】と【トマト】にしてみました。
入力が終わったら【CREATE MODEL】ボタンをクリックします。
あとは、この2種類の食べ物が写っている画像をアップロードするだけなのですが、手持ちの画像が無いという人も多いと思います。そこで、画面下部にあるリンクをクリックしてみましょう。
すると、ネット上にあるフリー画像を自動的に集めてくれるのです!
いちいち素材を用意する必要がないので非常に便利な機能と言えるでしょう。
あとは、このまま【UPLOAD IMAGES】ボタンをクリックして【TRAIN】を実行してみましょう。
数分ほど待つと、自動的にトレーニングがおこなわれた結果が表示されるので【TEST】ボタンをクリックします。
学習した画像とその結果が表示されます!
結果はJSON形式で出力されており、以下のような感じで識別することができます。
{ "message": "Success", "result": [ { "message": "Success", "prediction": [ { "label": "トマト", "probability": 0.82213275 }, { "label": "イチゴ", "probability": 0.28786728 } ] } ] }
画像に写っているのはトマトですよね。そこで、上記のJSONデータを見ると【トマト】の箇所にある【probability】が0.8221・・・となっており、これは約82%の確率で画像に写っている食べ物がトマトであることを意味しているわけです。
この画面では任意の画像をアップロードすることも可能なので、トマトやイチゴが写っている画像をちゃんと認識できるか試すこともできます。
また、画面上部にある【INTEGRATE】をクリックしてみましょう!
すると、今作った学習モデルを利用するためのソースコードが表示されます。
Node.js, Python, GO, JavaScript, Ruby, C#, Java, Curlからすぐに利用できるので便利です。今回は、JavaScriptを使ってオリジナルの学習モデルが利用できるか試してみましょう。
なお、paizaラーニングではプログラミング言語の基礎を学べる動画学習講座を公開しています。JavaScriptはもちろん、Python、C#、Ruby、Javaなどの講座もありますのでぜひチェックしてみてください。学習講座はこちらから。
基本的には表示されているソースコードをコピペすればいいのですが、2点だけポイントを解説しておきます。
1つ目は識別する画像の指定について。
表示されているソースコードは【モデルID】と【画像】が一緒になっているのですが、次のように分けておくといいでしょう。
const imgURL = '/img/sample.jpg'; const data = 'modelId=【モデルID】&urls=' + imgURL;
今回は、以下の画像を使ってみます。
2つ目のポイントはレスポンスについて。
学習モデルによって識別された結果はJSONの文字列で返ってくるので、parse()などを使って変換しておくと扱いやすいでしょう。
xhr.onreadystatechange = function () { if (this.readyState === this.DONE) { console.log(JSON.parse(this.responseText)); } };
プログラムを実行すると、以下のようにレスポンスが返ってくるのが分かります。
トマトの【probability】を見ると76%の確率で識別できていることが分かりますね。
このように簡単なプログラムで自分が作った学習モデルを利用できるようになるので、アイデア次第でさまざまなWebアプリを開発できるようになるでしょう。
ちなみに、APIを活用すると結果の取得だけでなく、画像をアップロードしたりトレーニングをおこなったりなども独自にプログラミングすることが可能です。
■Airtableを利用した学習モデルの作成
実は、Nanonetsを使うと簡単にAirtableと連携することが可能で、自分が管理しているデータベースを有効活用できるのでご紹介しておきます。
以下の特設ページにアクセスして、【GET STARTED】ボタンをクリックしてください。
<特設ページのリンク>
Nanonets Airtable Models
(※あらかじめAirtableにもログインしておきましょう)
テンプレートを利用するかどうかを聞かれるので、今回は簡単にするため利用してみましょう。
3種類のテンプレートを選択できるので、試しに【Personal Photos】をクリックします。
Airtableのテンプレートが表示されて、人物などの画像が大量にデータベース化されているのが分かります。【Copy base】のリンクをクリックしてみましょう。
これにより、自分のAirtableにコピーされます。
あとは、ガイドに従って【APIキー】と【Base ID】を入力すれば準備は完了です!
【ACCESS YOUR MODEL】ボタンをクリックしてみましょう!
自動的にAirtableに登録されていた画像を元にして、独自の学習モデルがトレーニングされます。数分ほど待つと結果が表示されます。
冒頭でご紹介したように学習モデルをテストすることも可能です。
このテンプレートでは、【screenshot, selfie, group_photo, meme】という4種類のカテゴリで学習がおこなわれています。
上記の画像に対するレスポンスは以下の通りです。
"prediction": [ { "label": "group_photo", "probability": 0.99893874 }, { "label": "selfie", "probability": 0.00072597654 }, { "label": "meme", "probability": 0.0003084251 }, { "label": "screenshot", "probability": 0.00002689807 } ],
【group_photo】というラベルの箇所を見ると【probability】がほぼ100%に近いので、画像がグループ写真であることを識別していることになります。
この学習モデルもJavaScriptをはじめいくつかの言語で利用できます。また、Airtableのデータベースに任意の画像を追加したりラベルを置き換えたりして、再トレーニングしていくことも簡単にできるわけです。
■動画でプログラミングが学べるpaizaラーニング
動画でプログラミングが学べるpaizaラーニングでは、Python、Java、C言語、C#、PHP、Ruby、SQL、JavaScript、HTML/CSSなど、プログラミング初心者でも動画で学べる入門レッスンを公開しています。
「Python入門編」「C#入門編」「ITエンジニアの就活準備編」といった人気講座も完全無料となっておりますので、プログラミングを学びたい方・ITエンジニアを目指したい方はぜひごらんください。
また、人気声優の上坂すみれさんによる進行役のスベトラーナ・小百合・ベレフスカヤと一緒に、実際に画像認識技術を使いながら、初心者でも機械学習を体験・学習できる「Python×AI・機械学習入門編」を公開しています。
Python×AI・機械学習入門編について詳しくはこちら
ただいまpaizaラーニングでは、7/29(月)までに演習課題を解いた結果の正解画面からツイートをしていただくと、抽選でAmazonギフト券が当たるキャンペーンを実施しています。ツイートしていただくだけで応募完了です!
ツイートはどの講座・どの演習課題からでもOKなので、プログラミング初心者の方もぜひ挑戦してみてください。
■まとめ
今回は、誰でも簡単に独自の学習モデルを構築できるWebサービスをご紹介しました。
Nanonetsを使うと、自分が指定したオブジェクトを検出できたり、画像に写っている道路だけを抽出したりといった高度な使い方もできるように設計されています。つまり、活用次第でさまざまなケースに対応できる高度な学習モデルを簡単に作成できます。
ぜひみなさんもオリジナルの学習モデルを作成して、独自サービスを開発してみてはいかがでしょうか。
<参考リンク>
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら