2021年の活動記録(LINE関連)
イベント主催やプロトタイプ制作の講師を中心に、LINEプロダクトを利用したのプロトタイプの開発しやすさや開発の楽しさを発信していきます。
SNS
- Twitter:@mitsuoka0423
- GitHub:mitsuoka0423
- Qiita:@mitsuoka0423
- Zenn:@tmitsuoka0423
- Facebook:@mitsuoka0423
- connpass: mitsuoka0423
講師業
- ものづくり医療センター 0期講師
- LINE Bot制作に関する授業を実施。
- 卒業制作では、9作品中5作品でLINEプロダクトを用いた作品が制作された。
- プロトアウトスタジオ 5期講師
イベント
- (主催)写真を送ると AI が分析してくれる LINE Bot を 1 時間で作ってみよう ~プロトアウト授業体験会~
- 2021/03/06
- ソースコード
- ハンズオン資料
- ハンズオンスライド
- ハンズオンツイートまとめ
- ハンズオン動画
- (主催)【第 2 回】AI が写真を分析してくれる LINE Bot を 1 時間で作ってみよう~プロトアウト体験会
- (主催)画像分析AIを使ったLINE Botを1時間で作ってみよう(顔検出編)~プロトアウト体験会~
- 2021/04/24
- ソースコード
- ハンズオン資料
- ハンズオンツイートまとめ
- ハンズオン動画
- (主催)画像分析AIを使ったLINE Botを1時間で作ってみよう(顔認証編)~プロトアウト体験会
- (主催)【朝活】AIを使ったLINE Botを1時間で作ってみよう FaceAPI編 ~プロトアウト体験会~
- 2021/08/28
- ソースコード
- ハンズオン資料
- ハンズオンツイートまとめ
- ハンズオン動画
- (主催)【第6回】AIを使ったLINE Botを1時間で作ってみよう~プロトアウト体験会~ - connpass
- 2021/09/25
- ソースコード
- ハンズオン資料
- ハンズオンツイートまとめ
- ハンズオン動画
記事
Azure Percept DKを触ってみる③ - サンプルモデルデプロイ編
はじめに
前記事でカメラモジュールの動作確認が完了しました。 今回はAzure Percept Studioで事前に学習が完了しているサンプルモデルをAzure Percept DKにデプロイしてみようと思います。
こちらを参考に進めていきます。
サンプルモデルをデプロイする
Azure Percept Studioを開き、サイドメニューのデバイス
を選択します。
https://portal.azure.com/#blade/AzureEdgeDevices/Main/overview
セットアップしたデバイスを選択します。
Viewsタブを開き、サンプルモデルのデプロイ
を選択します。
好きなモデルを選択し、デバイスへのデプロイ
をクリックします。
- 一般的なオブジェクトの検出
- 人やペン、車など一般的なオブジェクトの検出ができます。
- デフォルトでデプロイされているモデルはこれっぽい。
- 人物検出
- 人を検出します。
- 棚の製品
- お店の商品管理などで利用されるものと思われます。
- 車検出
- 車を検出します。
今回は人物検出を行ってみます。
デプロイは数秒〜数十秒で完了します。
完了するとポップアップが表示されるので、ストリームを表示します。
人の検出ができました。
Azure Percept DKを触ってみる② - ビデオストリーム&物体検出編
はじめに
前記事でセットアップが終わったので、今回はAzure Percept DKのカメラモジュールを使ってビデオストリーミングを行おうと思います。
下記を参考に進めていきます。
ビデオストリームを表示する
まずは、カメラがちゃんと映るか動作確認しようと思います。
Azure Percept Studioのデバイスストリーム
を利用して、リアルタイムに物体検出してみます。
Azure Percept Studioを開きます。
https://portal.azure.com/#blade/AzureEdgeDevices/Main/overview
前記事で作成したデバイスを選択します。
Viewsタブを開き、デバイス ストリームの表示 > ストリームを表示します
を選択します。
右上にポップアップが表示されるので、ストリームを表示します
を選択します。
すると、物体検出が動き始めます。
とりあえず手元にあったオリーブオイルを映してみました。
視覚モジュールからIPを取得できません
とエラーが表示されましたが、Type-Cのケーブルを差し直すことで解消されました。
Azure Percept DKを触ってみる① - セットアップ編
Azure Percept DK
2021年3月にAzure Percept
が発表されました。
Azure Percept は、IoT と AI をエッジで使用してビジネス変革を促進するために設計されたハードウェア、ソフトウェア、およびサービスのファミリです。
とのことです。
まずは
- Azure Percept DK
- エッジAI開発キット
- Azure Percept DK キャリア ボード
- 本体。Raspberry Piのような小型のコンピュータが搭載されている。
- Azure Percept Vision システム オン モジュール
- カメラモジュール。キャリアボードに接続して使用する。
- Azure Percept DK キャリア ボード
- また、アクセサリとして音声を扱うためのAzure Percept Audioも合わせて販売されている。
- エッジAI開発キット
- Azure Percept Studio
- エッジAIモデルとソリューションを作成できます。
を抑えておけば良さそうです。
本記事では、Azure Percept DKのセットアップを進めていきます。
セットアップ手順はこちら。
セットアップ中は、Azure Percept DKのWi-Fiアクセス ポイントに接続して作業を行うので、一時的にインターネットに接続できなくなります。
あらかじめドキュメントを開いておく、スマホで表示するなどで対応しましょう。
WiFiに接続する
Azure Percept DK キャリア ボードに電源を接続すると、Wi-Fi アクセス ポイントが見つかるので接続します。
- SSIDは
scz-
またはapd-
から始まります。 - パスワードは付属のウェルカム カードに記載されています。
セットアップエクスペリエンス
http://10.1.1.1をChromeなど普段お使いのブラウザで開きます。
Azure Percept DKにWiFi接続すると、自動でセットアップエクスペリエンスが起動しますが、後ほどAzureにサインインするところでうまく進みませんでした。
普段お使いのブラウザで開き直すのがおすすめです。
手順を進めていきます。
利用規約に同意します。 スクロールするとチェックボックスがあるので、チェックするとNextボタンをクリックできるようになります。
ユーザーを作成します。
パスワードの条件は12桁以上、英数字混合
です。(たしか)
IoT HubにPercept DKを登録します。 選択肢は2つあります。
Setup as a new device
←今回はこちらで進めます。- とりあえずPercept DKを触ってみたい方は、こちらがおすすめです。
- セットアップエクスペリエンスに沿って作業すれば、IoT Hubに登録してくれます。
Connect to an existing device
- IoT Hubで作成済みのIoTデバイスにPercept DKを紐付けたい場合は、こちらを選択します。
- 自身で接続文字列を取得する必要があります。
ということで、Setup as a new device
を選択します。
新しいタブが開くので、Azureにサインインします。
画面に表示されているコードをコピーしておきます。
コードをペーストします。
サインインできたらタブを閉じてOKです。
Percept DKを割り当てるIoT Hubを選択 or 生成します。
今回は時間短縮のため、作成済みのIoT Hubのインスタンスを選択しました。
IoTエッジデバイス名を入力します。
名前は任意です。
セットアップ完了まであと少し...
完了しました!
Continue to the Azure Percept Studio
をクリックすると、サンプルアプリケーションを動かしたりできます。
まとめ
セットアップエクスペリエンスに沿って進めて、問題なくセットアップを完了させられました。
セットアップはハマりやすいのでわかりやすいのはありがたいですね。
次回はAzure Percept Studioを触っていこうと思います。
Raspberry Pi ImagerでSDカードをフォーマットする方法
はじめに
今までRaspberry Pi用のmicro SDカードをフォーマットするのにSD Card Formatterを利用していましたが、Raspberry Pi Imagerでもフォーマットできることがわかったので手順をメモします。
Raspberry Pi Imagerをインストールする
公式サイトからRaspberry Pi Imagerをダウンロード&インストールします。
SDカードをフォーマットする
Raspberry Pi Imagerを起動し、Operating System → Erase
を選択します。
StorageはフォーマットしたSDカードのドライブを選択します。
※選択したドライブの中身がすべて消去されてしまうので、間違えないように注意!
最後にWRITE
をクリックします。
選択したドライブの中身を消去する確認ダイアログが出てくるので、問題なければYESをクリックします。
数秒~数分でフォーマットが終わります。
まとめ
Raspberry Pi Imagerを使ったSDカードのフォーマット手順について記載しました。
他のアプリを使わずに簡単にフォーマットができるようになったので、OSの焼き直しもスムーズに行えるようになりますね!
ラズパイとOpenCVで顔認証するメモ
はじめに
こちらの記事を参考に、Raspberry Pi+Open CVで顔認証を行う手順のメモです。
用意したもの
- Raspberry Pi 4 Computer Model B 8GB RAM
- Raspberry Pi カメラモジュール V2
- SDカード 32GB
- ケース
- 電源ケーブル (USB Type C)
- キーボード
- マウス (なくてもキーボードで操作できます)
ラズパイのセットアップ
SDカードにOSをインストールする
今回はRaspberry Pi Imager
を利用してOSをインストールしていきます。
Raspberry Pi Imagerをダウンロード&インストールする
こちらから最新版をダウンロードします。
ダウンロードが終わったら、Raspberry Pi Imagerをインストールします。
チェックをつけてFinish
をクリックすると、Raspberry Pi Imagerが起動します。
スタートメニューからも起動できます。
OSを書き込む
Raspberry Pi Imagerを使えば、3ステップでOSを書き込むことができます。
まずはラズパイにインストールするOSを選択します。
今回はRaspberry Pi OS (32-bit)
を選択しました。
他にもUbuntu
やKodi
なども簡単にインストールできるようです。
続いて、書き込み対象のSDカードを選択します。
最後にWRITE
ボタンをクリックして、書き込み処理を開始します。
書き込みには数分~数十分かかります。
OSを書き込む際にSDカードのフォーマットが必要となるので、YES
をクリックします。
これでOSの書き込みが終わりました。
Raspberry Piを起動する
SDカードをRaspberry Piに差し込んで、電源を入れます。
無事起動しました!
セキュリティ対策として、以下の記事の手順を一通り行いました。
ラズパイカメラの動作確認をする
OpenCVをインストールする
こちらの記事を参考にOpenCVをインストールしていきます。
詳細は記事をご覧ください。
ここではインストールコマンドだけを抜き出します。
sudo apt update sudo apt upgrade sudo apt install -y cmake build-essential pkg-config git sudo apt install -y libjpeg-dev libtiff-dev libjasper-dev libpng-dev libwebp-dev libopenexr-dev sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libdc1394-22-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev sudo apt install -y libgtk-3-dev libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 sudo apt install -y libatlas-base-dev liblapacke-dev gfortran sudo apt install -y libhdf5-dev libhdf5-103 sudo apt install -y python3-dev python3-pip python3-numpy sudo cp /etc/dphys-swapfile /etc/dphys-swapfile.org sudo sed -i -e 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=2048/g' sudo systemctl restart dphys-swapfile git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git mkdir ~/opencv/build cd ~/opencv/build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D CMAKE_SHARED_LINKER_FLAGS=-latomic \ -D BUILD_EXAMPLES=OFF .. make -j$(nproc) sudo make install sudo ldconfig
上のコマンドをgistにアップしたので、wget
で取得して実行することもできます。
curl https://gist.githubusercontent.com/tmitsuoka0423/b0e87293be375df11032589e465037e6/raw/0e931540c42128757a0e013e3b31a4a97ec55a9b/install-opencv-rpi.sh | bash
pip経由でインストールする方法もありますが、私の環境では失敗してしまいました。
https://pypi.org/project/opencv-contrib-python/
OpenCVがインストールできたか確認します。
PythonのREPLを起動します。
python3
以下、PythonのREPL上で実行します。
import cv2 cv2.__version__
以下のようなにバージョンが出力されればOKです。
カメラの動作確認をする
まずはシンプルに写真と撮ってみる
下記のコマンドを実行します。
sudo raspistill -o image.jpg
こんな感じの写真が撮れました。カメラの接続は大丈夫ですね。
CV2を使ったカメラの動作確認
公開されているサンプルコードを一部改修したものを利用します。
もとのサンプルコードはこちら。
https://github.com/Mjrovai/OpenCV-Object-Face-Tracking
好きなディレクトリに移動し、クローンします。(ここではホームディレクトリにクローンします)
cd ~ git clone https://github.com/tmitsuoka0423/OpenCV-Object-Face-Tracking
Raspberry Piにカメラを接続します。
(raspi-configのインターフェース設定でカメラを有効にしておいてください。)
先程クローンしたOpenCV-Object-Face-Tracking
の中にsimpleCamTest.py
があるのでこちらを実行します。
cd OpenCV-Object-Face-Tracking python3 simpleCamTest.py
実行すると以下のように、ウィンドウが2つ立ち上がり、カメラの出力がカラーとグレースケールで表示されます。
かなりピンぼけしていますが、カメラの動作確認ができました。
(オプション)ピントを調節する
ピントの調節には、付属の白いパーツを利用します。
レンズの周辺の凹凸に白いパーツがはまるので、はめた状態で左右に回してピント調節します。
simpleCamTest.py
を実行した状態でピント調節すると、リアルタイムで確認できるのでおすすめです。
エラーが発生する場合
こちらのエラーを修正済みのリポジトリを作成しました。 https://github.com/tmitsuoka0423/OpenCV-Object-Face-Tracking のコードを利用しているか確認してください。
エラー内容
$ python3 simpleCamTest.py [ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_gstreamer.cpp (2057) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Failed to allocate required memory. [ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_gstreamer.cpp (1034) open OpenCV | GStreamer warning: unable to start pipeline [ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_gstreamer.cpp (597) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created [ WARN:0] global /home/pi/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video0): can't open camera by index Traceback (most recent call last): File "simpleCamTest.py", line 16, in <module> gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.error: OpenCV(4.5.2-dev) /home/pi/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
こちらの記事を参考に、simpleCamTest.py
に下記の変更を加えると動きました。
cap = cv2.VideoCapture(0) ↓ cap = cv2.VideoCapture(-1)
cv2.VideoCapture
の引数に-1
を指定するとカメラを自動指定してくれるそうなのですが、OpenCVのドキュメントを読んでもその記載が見当たりませんでした。(もやもや)
顔検出してみる
https://github.com/Mjrovai/OpenCV-Face-Recognition のリポジトリのコードを一部変更したものです。
git clone https://github.com/tmitsuoka0423/OpenCV-Face-Recognition.git
リポジトリの中に、OpenCV-Face-Recognition/FaceDetection/faceDetection.py
があるので実行します。
cd OpenCV-Face-Recognition/FaceDetection python3 faceDetection.py
するとウィンドウが立ち上がるので、顔を写すと枠が表示されるようになります。
顔認証する
顔認証を行うには、
- 顔写真を集める
- 顔写真を使って顔認証モデルを作成する
- 顔認証モデルを使って推論する
というステップを踏む必要があります。
まずは顔写真を集めていきます。
こちらのリポジトリをクローンしていない方はクローンしておいてください。
git clone https://github.com/tmitsuoka0423/OpenCV-Face-Recognition.git
顔写真を集める
ラズパイに接続したカメラを利用して、顔写真を撮影してくれるプログラムが用意されています。
画像はdataset
フォルダに出力されるようになっているので、先にフォルダを作成しておきます。
cd FacialRecognition mkdir dataset python3 01_face_dataset.py
ユーザーIDの入力を求められるので、学習させる人ごとにIDを振りましょう。
(今回は自分と坂本龍馬の顔を学習させるので、自分:0、坂本龍馬:1、という風にしました。)
enter user id end press <return> ==> 0
[INFO] Initializing face capture. Look the camera and wait ...
と言われるのでカメラの方を向くと、自動で学習用の顔写真が撮影されていきます。
dataset
フォルダに画像が溜まっていき、30枚撮影が終わったタイミングでプログラムが終了します。
撮影が進まない場合は、ピントの調節や光の当たり方を変えると進むようになったので、試してみてください。
顔認証モデルを作成する
画像処理ライブラリpillow
を使用するので、先にインストールしておきます。
pip install pillow
学習用のプログラムを実行します。
mkdir trainer python3 02_face_training.py
学習が終わると以下のように表示され、trainer
フォルダにtrainer.yml
が作成されます。
[INFO] Training faces. It will take a few seconds. Wait ... [INFO] 2 faces trained. Exiting Program
顔認証する
認証結果にラベルを表示させるため、03_face_recognition.py
の26行目にあるnames
を修正します。
顔写真を撮影したときのIDが配列のインデックスになるように、ラベルを設定します。
(ID=0→配列の0番目:mitsuoka、ID=1→配列の1番目:ryoma)
names = ['None', 'Marcelo', 'Paula', 'Ilza', 'Z', 'W'] ↓ names = ['mitsuoka', 'ryoma']
変更できたら、プログラムを実行します。
python3 03_face_recognition.py
するとカメラウィンドウが立ち上がり、顔が写ると枠が表示され、ラベルと顔の一致度が表示されました!
まとめ
Raspberry PiとOpenCVを使った顔認証のチュートリアルを実施し、手順をメモしました。
3ステップで顔認証システムのプロトタイプが作れるのはとても良いですね。
光の当たり方や写る角度によって顔認証されないので、学習データの集め方に工夫する余地がありそうです。
参考サイト
日本語でざっくり概要を掴みたい方におすすめ ai-coordinator.jp
英語。解説してるおじさんが良い。 www.instructables.com
2021年の活動記録
SNS
- Twitter:@mitsuoka0423
- GitHub:mitsuoka0423
- Qiita:@mitsuoka0423
- Zenn:@tmitsuoka0423
- Facebook:@mitsuoka0423
- connpass: mitsuoka0423
イベント
- (主催)写真を送ると AI が分析してくれる LINE Bot を 1 時間で作ってみよう ~プロトアウト授業体験会~
- (主催)【第 2 回】AI が写真を分析してくれる LINE Bot を 1 時間で作ってみよう~プロトアウト体験会
- (主催)画像分析AIを使ったLINE Botを1時間で作ってみよう(顔検出編)~プロトアウト体験会~
- (主催)画像分析AIを使ったLINE Botを1時間で作ってみよう(顔認証編)~プロトアウト体験会
- (主催)【朝活】AIを使ったLINE Botを1時間で作ってみよう FaceAPI編 ~プロトアウト体験会~
- 2021/08/28
- ソースコード
- ハンズオン資料
- ハンズオンツイートまとめ
- ハンズオン動画
- (主催)【第6回】AIを使ったLINE Botを1時間で作ってみよう~プロトアウト体験会~ - connpass
- 2021/09/25
- ソースコード
- ハンズオン資料
- ハンズオンツイートまとめ
- ハンズオン動画
記事
- Node.js で Azure IoT Hub にテレメトリを送信するサンプルコードを動かすメモ
- Azure IoT Hub に HTTP POST でメッセージを送信するメモ
- M5ATOM Lite で HTTP POST するシンプルなサンプルコード
- Azure IoT Hub の REST API を使って M5ATOM Lite からデータを送信するメモ
- Azure IoT Central アプリケーションをデプロイする手順メモ
- Azure IoT Central にシミュレートしたデバイスを追加する手順メモ
- Azure IoT Central でカスタムデバイステンプレートを作成する