カワリモノ息子の技術メモ的な~

カワリモノ息子とその母の技術メモ的な〜

学校が苦手な息子くんの作品とその母の作品、はたまた日常などいろいろを在宅エンジニア母が綴る

中2息子くんの作ったTeachable Machine用画像スクレイピングツールの紹介

機械学習

 私が説明するまでもないかもなのですが・・・。まずは機械学習の説明から。
 機械学習は、AIの技術のひとつです。

 機械学習の技術を使ってたとえば「犬」の画像を沢山コンピュータに見せて学習させると、新しい画像を見てもそれが犬かどうかを判定できるようになります。

 去年(2021年)、その機械学習を使って「このカメラ画像のときに直進/左折/右折する」というパターンで学習させて息子くんの部屋までルンバを自動運転させてたこともあります。
siroitori.hatenablog.com
 ちなみにその後エンジニアカフェでイベントにもしていただきました!感無量!
siroitori.hatenablog.com

Teachable Machine

 Teachable Machineというのがあります。
 Googleの提供する機械学習のツールで、前述の息子くんのルンバの時の機械学習にもこのTeachable Machineを使いました。
 
 Teachable Machineの良いところはわかりやすく使いやすい所だと思っていて、最近の子供プログラミングでもこれを使って学習させたデータをScratchで動かしているのを見かけたりします。

 ↓ これも2021年の過去ブログですが、こういうのが簡単にできます。音階ごとのハンドサイン(手のポーズの画像)を機械学習しています。
siroitori.hatenablog.com

 Teachable Machineが便利だなと思うのは、PCのカメラを連写して画像を保存・読み込みしてくれるところです。
f:id:toriko0413:20220114144930p:plain
 PCカメラの前で「ド」のハンドサインの手の画像を連写できます。いろいろ手の角度をかえて動かしていろいろな「ド」の画像を撮って、それを使って学習することが出来ます。

 ただこれ、自分の手などPCのカメラで撮影できるものだったら良いのですが、例えば「鳥」とかPCのカメラで自分ちの飼っている鳥を映すのも逃げたりして難しそうですし、ましてや屋外の野鳥なんかはPCカメラでは撮影困難ですね。
 そういう時は別途撮ってきた画像を読み込ませればいいのですが、データを収集するのが大変です。

 そこで息子くん、今回のツールを作ったそうです。

Teachable Machine用画像スクレイピングツール

 ネットから検索ワードで検索した画像を収集してきて、Teachable Machineで使えるファイルを作ってあげるというツールです。

 これが息子くんの作ったツールのメイン画面(日本語モードに設定後)。あえてGUIではなくTUI(テキストユーザーインターフェース)がカッコイイと思ってこれにしたんだそうです。
f:id:toriko0413:20220114153520p:plain
 私個人的にはGUIのほうが使いやすいと思うのですが…好みはそれぞれですね。それにしてもTUIなんて息子くんに言われて言葉を初めて知りました。CUIとは別物だそうです。
 
f:id:toriko0413:20220114153728p:plain
 クラス名:分類する名前
 検索ワード:画像取得のためにネット検索してくるための検索キーワード
 フォルダ名:画像を格納するフォルダ名
 ※いずれも日本語可能とのこと

 上記のクラス(分類)を複数作ることができます。
 
 メイン画面の「画像をスクレイピング(スクレイピングを開始)」にすると自動でWebブラウザが起動して画像収拾を始めます。
 ローカルにすべてダウンロードされて収集されるので、スクレイピングが終わったら確認してみてください。単純にキーワード検索をしているだけなので違うものが含まれている可能性があります(鳥で検索したら鳥人間が入ってたり?)。そのときは手動でフォルダから削除しましょう。

 その後メイン画面の「TMファイルをパック」すると拡張子tmのファイルが出力されます。
 このファイルをTeachable Machineで読み込むことができます。

f:id:toriko0413:20220114155355p:plain

 上記は文鳥とインコを息子くんツールでtmファイルにしたのを、Teachable Machineで読み込んだものです。うちのインコ(右側)が正しくインコ判定されています!

 この画像では正解でしたが、ただ文鳥とインコはなかなか判別が難しかったみたいで正解率は8割程度でした。
 →ただこの時は画像を目視確認で間引くことをほとんどしなかったこととパラメータを調整したりするともっと精度が上がるようにはできると思います。

 ツール完成後息子くん指導のもと私が試しに動作させたのを動画撮っていたのですが、それが最終的に紹介動画として仕立て上げられてましたので動作の様子よければご覧ください。この動画内では「bird」と「dog」で学習しています。
 動画のスクレイピング中のWebブラウザが自動起動して収拾されてる感が見た目に爽快です。

youtu.be

 動画にも書きましたが画像には著作権のあるものもあるのですが機械学習の学習済みデータの状態になってしまえば著作権は関係なくなるそうです。

自由に使えます

 息子くんソースコードと説明も書いてきれいにしてGitHubで公開してくれています。
 セットアップ方法もまとめてくれていますのでご興味ありましたら使ってみてもらえるととても嬉しいです。
github.com

 親バカですがソースコードがきれいに書けてると思います。
 言語ファイルもjsonで外出しにしてあり追加の言語も簡単にでき拡張性高そう!

 ソースの中のコメントは英語ばかりですが・・というか画面のメニューやGitHubのReadMeも英語を一番に作ってその後日本語対応してました。私が日本語化を要望しなかったらもしかしたら日本語版にしなかったかも。息子くん純粋な日本人のはずなのですが、あまり日本語が好きではないらしいです^^;;