GoogleCloudずアヌムベヌスのRaspberryPiを䜿甚した犬の気分怜出噚の䜜成

ボブ䞻挔のKDPV、デニスキンの歌



今日、スマヌトフォン、スマヌトりォッチ、フィットネストラッカヌはいたるずころにありたす。それらは、私たち自身、私たちの呚囲を監芖するのに圹立ち、通知を送信し、心房现動などの深刻な問題を怜出するこずさえできたす。そしお、私たちはマむクロモニタリング運動の始たりに過ぎたせん。



この蚘事では、犬の気分怜出噚のアむデアを芋おいきたす。呚囲の音を聞くデバむスを䜜成し、犬がいる堎合は、犬がどのような音を出しおいるかを刀断しようずしたす。友奜的な吠え声、おびえた泣き声、攻撃的な唞り声などです。ナヌザヌの奜みに応じお、犬をチェックする必芁があるず刀断したずきにデバむスが振動したす。これは、飌い䞻が犬の耳が聞こえなくなったずきに犬を远跡するのに圹立぀可胜性がありたす。もちろん、これは単なるプロトタむプであり、このアむデアの結果はただ実際の条件でテストされおいたせん。



ArmベヌスのRaspberryPiコンピュヌタヌを䜿甚しお、このデバむスのプロトタむプを䜜成したす。これは、゚ンドナヌザヌデバむスに機械孊習を実装するための優れたプラットフォヌムです。 Armプロセッサは、Raspberry Piで䜿甚されるだけでなく、倚くの携垯電話、モバむルゲヌムコン゜ヌル、およびその他の倚くのデバむスでも動䜜したす。これらのコンピュヌタヌの゚ネルギヌ効率の高いプロセッサヌは十分な凊理胜力を備えおおり、どこでも手頃な䟡栌で賌入できたす。






残念ながら、これたでのずころ、小型デバむスの機胜は、凊理胜力、むンタヌネット接続の欠劂、および原則ずしお少量のデヌタストレヌゞによっお制限されるこずがよくありたす。このようなデバむスは短時間で倚くの芳枬を完了するこずができたすが、ストレヌゞの制限のためにむンタヌネット接続がない堎合、埌で同期するためにすべおの芳枬を保存するこずはしばしば䞍可胜です。さらに、倧量のデヌタをワむダレスで送信するず、すでに少量のバッテリヌ電力も消費したす。



蚘録された信号を最倧限に掻甚するには、信号凊理ステヌゞを゚ンドナヌザヌのデバむス自䜓に移動するこずが䞍可欠です。



過去10幎間、 機械孊習画像内のオブゞェクト怜出、ビデオゞェスチャ認識、音声認識など、倚くの信号凊理タスクの粟床が倧幅に向䞊したした。今日、私たちは可胜性の衚面を匕っ掻いおいるだけです。小さなデバむスでMLを䜿甚するず、人々の生掻を改善する他の無数の方法が提䟛されたす。



開始



トレヌニング甚のGoogleAudioSetを芋おみたしょう 。これは、YouTubeビデオからの10秒のオヌディオクリップの最倧のコレクションです。デヌタは、YouTube-8Mスタヌタヌキットず互換性のある前凊理された圢匏で提䟛され たす。オヌディオクリップを分類できるモデルをトレヌニングするために䜿甚されたす。



このモデルのトレヌニングには時間がかかる堎合があるため、凊理をGoogle CloudAIプラットフォヌムに移行し たす。完了したら、モデルをロヌドしたす。すべおのコンポヌネントの準備ができたら、モデルをRaspberryPiに転送したす。たた、接続されたマむクからの入力をキャプチャし、識別された犬の音を1秒おきに予枬するPythonスクリプトを䜜成したす。



目的のモデルを䜜成する



たず、これから行うすべおの䜜業甚のフォルダヌをどこかに䜜成したしょう。



モデルを䜜成するには、デヌタセットをロヌドする必芁がありたす 。これは、「機胜デヌタセット」ずいう芋出しの䞋のリンクから入手できたす。最も簡単な方法は、1぀のgzipアヌカむブアヌカむブをロヌカルコンピュヌタヌにダりンロヌドするこずです。

 

次に、それを解凍しおファむルを抜出したす。このパッケヌゞには3぀のフォルダヌがありたす。1぀はバランスの取れたトレヌニングセット、もう1぀は評䟡セット、3぀目はアンバランスのトレヌニングセットです。各フォルダには4000を超えるファむルが含たれおいたす。



TFRecordファむルには、前凊理されたタグが含たれおいたす。ファむル名は、YouTubeビデオIDの最初の2文字で始たりたす。ビデオIDでは倧文字ず小文字が区別されるため、Windowsのようにロヌカルファむルシステムで倧文字ず小文字が区別されない堎合は、ファむルを抜出するずきに泚意する必芁がありたす。



圹立぀アドバむス 7zipプログラムは、このような特性ファむルを抜出するために䜿甚されたす。 7zipはコマンドラむンオプションをサポヌトしおいたす。これにより、既存のファむルの名前を自動的に倉曎しお、ファむルが䞊曞きされるのではなく名前が倉曎されるようにするこずができたす。



正しく抜出されたデヌタセットを受け取ったら、YouTube-8MGithubリポゞトリのクロヌンを䜜成 したすこれには、モデルをトレヌニングするためのコヌドが含たれおいたす。抜出されたデヌタセット甚に䜜成されたフォルダヌにクロヌンを䜜成するこずをお勧めしたす。



そしお、曎新readers.pyファむル の叀いAudioSet TFRecordファむルをサポヌトするために、YouTubeの-8Mフォルダ内を。このプロセスには、次の2぀の段階がありたす。



  • 「id」のすべおの出珟箇所を「video_id」に倉曎したす。
  • num_classesパラメヌタヌのデフォルト倀を527に倉曎したす。この数倀は、このオヌディオデヌタセット内のさたざたなカテゎリの数に察応したす。



識別子は5箇所で倉曎し、num_classesは2箇所で倉曎する必芁がありたす。



このプログラムを実行するには、新しいPython 3.6以降の仮想環境をデプロむし、tensorflow == 1.14をむンストヌルしたす。たた  ã€æ¬¡ã®ã‚¹ãƒ†ãƒƒãƒ—で䜜成する出力スクリプトの芁件を蚭定するず䟿利 です。バヌゞョン番号はパッケヌゞごずに異なりたすが、唯䞀の難しい芁件は、tensorflowバヌゞョン1.14を䜿甚するこずです。その他のパッケヌゞに぀いおは、最新バヌゞョンをむンストヌルするだけです。



この時点で、モデルをトレヌニングする準備が敎いたした。たず、トレヌニングスクリプトをロヌカルで実行しおテストしたす。バランスの取れたトレヌニングセットでは、それほど時間はかかりたせん。コマンドプロンプトりィンドりを開き、このセクションの最初の手順で䜜成したフォルダヌに移動しお、次のコマンドを入力したすこれはすべお1行であるこずに泚意しおください。



python youtube-8m/train.py \ --train_data_pattern=./audioset_v1_embeddings/bal_train/*.tfrecord \
--num_epochs=100 \
--feature_names="audio_embedding" \
--feature_sizes="128" \
--frame_features \
--batch_size=512 \
--train_dir ./trained_models/yt8m \
--model=FrameLevelLogisticModel \
--start_new_model
      
      





たた、改行文字\はLinuxシステムでは正垞に機胜したすが、Windowsでは^文字に眮き換える必芁があるこずにも泚意しおください。



100゚ポックの埌、これは玄ステップ8500に達するたで続きたす。FrameLevelLogisticModelは玄58〜59の最倧粟床で動䜜したす。私たちのテストシステムでは、プロセス党䜓に20分匱かかりたした。



このスタヌタヌキットには、DbofModelやLstmModelなどの他のモデルが含たれおいたす。これらはそれぞれ、トレヌニングデヌタに察しおほが完党な粟床を提䟛したすが、スコアセットでテストするず、バランスの取れたトレヌニングセットでは䞡方ずも倧幅に過剰適合したす。



クラりドでモデルをトレヌニングする



別の方法は、䞍均衡なデヌタセットを䜿甚しおサりンドのフルセットをトレヌニングするこずです。この堎合、凊理にははるかに時間がかかりたすが、Google CloudAIプラットフォヌムに基づくGPUが非垞に圹立ちたす。単玔なロゞスティックモデルは、䞍均衡なトレヌニングセットで玄88の粟床を達成したす。



クラりドでこのプロセスを実行するには、Google Cloud AIプラットフォヌムアカりントにサむンアップしおログむンし、課金を有効にしお、ここで詳しく説明されおいるコマンドラむンツヌルをダりンロヌドし たす。



すべおの蚭定が完了したら、 クラりドコン゜ヌルに移動したす、新しいプロゞェクトず新しいストレヌゞバスケットを䜜成したす。ストレヌゞバケット名はグロヌバルに䞀意である必芁がありたす。ナヌザヌアカりントの名前が含たれおいるず最も簡単です。 audioset_v1_embeddingsフォルダヌずyoutube-8mフォルダヌ党䜓をこのストレヌゞバスケットにロヌドしたす。



正しく実行されれば、Google Cloud SDKシェルを開き、以䞋のコマンドを実行しお開始できるはずです。 your-project-nameずyour-storage-bucket-nameを適切なアカりント倀に眮き換えおください。これはUnixベヌスのシステム甚に曞かれおいたす。 Windowsシステムに適切な修正を加えたす。



BUCKET_NAME=gs://${USER}_yt8m_train_bucket

gsutil mb -p your-project-name $BUCKET_NAME

JOB_NAME=yt8m_train_$(date +%Y%m%d_%H%M%S)

gcloud --verbosity=debug ml-engine jobs submit training $JOB_NAME 
--python-version 3.5  --package-path=youtube-8m --module-name=youtube-8m.train --staging-bucket=$BUCKET_NAME --region=us-east1 --config=youtube-8m/cloudml-gpu.yaml -- --train_data_pattern='gs://your-storage-bucket-name/audioset_v1_embeddings/unbal_train/*.tfrecord' --model=FrameLevelLogisticModel --train_dir=$BUCKET_NAME/yt8m_train_frame_level_logistic_model
      
      





繰り返しになりたすが、gcloudの最埌の呌び出しは、構成オプションを含む1぀の長いコマンドであるこずに泚意しおください。

完了するたでに半日以䞊かかりたす。すべおが完了したら、クラりドストレヌゞバケットからモデル出力をロヌドしたす。



$BUCKET_NAME/yt8m_train_frame_level_logistic_model
      
      





RaspberryPiでの実行



このアプリケヌションは、Python3がむンストヌルされたRaspbianOSを実行しおいるArmベヌスのRaspberryPi4コンピュヌタヌでデモンストレヌションしおいたす。このデバむスにPyAudioをむンストヌルしたす。問題が発生した堎合は、 この回答が圹立぀はずです。



USBマむクを接続したすテスト甚のオヌディオ出力甚のオプションのヘッドセット付き。この時点で、マむクをデフォルトのデバむスずしお構成するのが最も簡単です。 Raspianデスクトップに移動し、右䞊隅の時蚈の暪にあるスピヌカヌアむコンをクリックしお、䜿甚するマむクを遞択したす。



最埌の重芁なステップは、AudioSetず同じ128D圧瞮で生のオヌディオを凊理する楜噚を入手するこずです。これに䜿甚されるツヌルはに含たれおいたす 前述のTensorflowモデルのGithubリポゞトリ。 Piでたったく同じむンストヌル手順に埓い、Python 3むンスタンスにむンストヌルするこずを忘れないでください。たた、このリポゞトリを、YouTube-8Mデヌタセットずリポゞトリを耇補したのず同じフォルダに耇補したす。



vggish_smoke_test.pyスクリプトを実行しお、すべおが正しくむンストヌルされおいるこずを確認したす。

 

次に、Google Cloudプラットフォヌムからダりンロヌドしたモデルを、マむクリスニングスクリプトを䜿甚しおフォルダヌにコピヌし たす。



このスクリプトを実行したす。デフォルトのデバむスでリッスンを開始し、予枬をコン゜ヌルに曞き蟌みたす。

 

目的のデバむスをデフォルトのデバむスずしお構成できない堎合は、コマンド「python model-run.py list」を実行しお、すべおのデバむスのリストをむンデックス別に衚瀺したす。デバむスむンデックスを芋぀けお、そのむンデックスを䜿甚しおコマンドを再実行したす。䟋えば



python model-run.py 3
      
      





このフォルダヌの内容党䜓をRaspberryPiにコピヌし、コヌドを䜿甚しおスクリプトを再床実行したす。1秒に1回、犬が発しおいるずデバむスが考えるノむズの量を予枬する必芁がありたす。撀退フェヌズは、デバむスずタヌゲットナヌザヌに最も適したメカニズムに眮き換えるこずができたす。



結論



今日は、Armベヌスのモバむルデバむスでサポヌトされおいるサりンドベヌスの機械孊習の1぀の可胜なアプリケヌションを怜蚎したした。この抂念は、垂堎に出す前にさらに詳现にテストする必芁がありたすが、モバむルデバむスで任意のオヌディオ怜出モデルを実行する機胜はすでに存圚したす。

 

AudioSetデヌタには、郜垂の音の堅牢なオントロゞヌを備えた527個のタグが含たれおいたす。カクテルパヌティヌアルゎリズムを適甚したり、各音源をvggishフィルタヌに通したりするなど、予枬子に枡す前にサりンド凊理を改善する可胜性もあり たす。



Armマむクロプロセッサを搭茉したRaspberryPiで犬の気分怜出噚を実行するこずは非垞に゚キサむティングです。これをさらに面癜くするために、TensorFlowパッケヌゞのツヌルを䜿甚しおモデルを倉換およびデゞタル化し、TensorFlowLiteマむクロコントロヌラヌパッケヌゞを䜿甚しお䜎コストで䜎電力のArmマむクロコントロヌラヌで実行できたす 。



興味深いですねこのアプロヌチで解決できる問題を実隓しお芋぀けおください。あなたはあなたが誰かの人生にどれだけ圱響を䞎えるこずができるかを決しお知りたせん。そしお、機械孊習が右手で他に䜕ができるかを知るために、孊びに来おくださいもちろん、HABRプロモヌションコヌドを忘れないでください。





その他の職業やコヌス


画像



All Articles