AIと設備制御勉強会

【動画】OpenCVで顔認識したらKNXで照明が点灯する実験をGIB Japanさんでやりました!

2020年の8月からAIアプリケーションの開発をしているGIB Japanスマートライト株式会社では、”AIと設備制御勉強会”という勉強会を開催しています。

今回は2回目ということで、GIB Japanの宮本さんと中丸さんと一緒に、ラズパイ上で作成した顔認識プログラム(OpenCVを利用)で顔を認識したらKNX-IoTゲートウェイサーバーで動くNode-REDにWebSocketでメッセージを送り、KNXからDALIゲートウェイを通して、照明を点灯させるという実験を行いました。

その動画と文字起こし、そして宮本さんがつくられたPythonのコードをご紹介します。

また、設備制御とAIとの関係性は、今後、”人感センサーのように人工知能が使われるようになる”と考えています。

それについての説明資料もSlideShareで公開しておりますので、ぜひ、こちらもご覧ください。

ラズパイ側のPythonコード

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from picamera.array import PiRGBArray
from picamera import PiCamera
import cv2, time
from websocket import create_connection


# フレームサイズ
FRAME_W = 320
FRAME_H = 240
# 正面顔検出データ
cascPath = 'lbpcascade_frontalface.xml'
faceCascade = cv2.CascadeClassifier(cascPath)
camera = PiCamera()
camera.resolution = (FRAME_W, FRAME_H)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(FRAME_W, FRAME_H))
time.sleep(0.1)
# メインループ
for image in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
    frame = image.array
    # 顔検出
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    gray = cv2.equalizeHist( gray )
    faces = faceCascade.detectMultiScale(gray, 1.1, 3, 0, (10, 10))
    # 検出時の処理
    for (x, y, w, h) in faces:
        # websocket送信
        ws = create_connection("ws://192.168.1.222:1880/ws/light")
        ws.send("Hello,World")
        # 見つけた顔を矩形で囲む
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    frame = cv2.resize(frame, (540,300))
    # ビデオに表示 
    cv2.imshow('Video', frame)
    key = cv2.waitKey(1) & 0xFF
    rawCapture.truncate(0)
    if key == ord("q"):
        break
ws.close()
cv2.destroyAllWindows()

宮本さんのGithubリンク
equipment_control_ai/client.py at master · miyamotok0105/equipment_control_ai · GitHub

文字起こし

文字起こし


はい!みなさん、こんにちは!
『スマートライト』の中畑と
『GIB Japan』の中丸と『GIB Japan』の宮本です
どうもよろしくお願いします
今回は『AIと設備制御勉強会』第二弾です
今回は宮本さんの方に『OpenCV』を使って
『人の顔を認識したらそのデータを送ってもらう』
というようなプログラムを作ってもらって
それで照明を『KNX』と『DALI』で
点灯させるというものを作りました
まずは早速やってみたいと思います
じゃあ、ちょっと宮本さん
やってみてください
はい!こちらのカメラで顔を検出しますと光ります
今、人の顔が映ったかどうかっていうのを
こちらの『ラズベリーパイ』のカメラで…
はい、映してください
はい!判別すると『KNX』の方から
『DALI』の信号で照明を…
じゃあ、1回顔を認識させてください
はい
『ONにする』という信号を送って
その5秒後に『OFFにする』という信号を出しています
はい、という風になっています
フローなんですけど
今回『Python』から『Websocket』で
『Node-RED』のサーバーのほうに
その『顔が映った』→『ONにする』
というデータだけを送ってもらって
それを受け取って『Node-RED』も
『Delayノード』を使って
『5秒後にOFF』というのを出しています
そうすると、こちらの『KNX』のノードで
『001』、これは『KNX』の話なんですけど
グループアドレスの『001』に対して
『OFF』という信号を送って
この『001』というのが
照明を全部点灯するという信号を出しています
というようなことを
今回かなり簡単なことなんですけど
実験してみたということです
0:01:59.860,0:02:04.100
これから人工知能が
色んなところで使われるようになるんですけど
やっぱり設備制御との繋がりというのは
『人工知能』が『人感センサー』みたいに
使われるようになると
すみません。今日、僕ばかりしゃべってるんですけど
要は『人感センサー』はこれまで
人が『いる』か『いない』でしか
判断できなかったのが
監視カメラとかの映像を人工知能で
推論することによって
『そこに人の顔が写ってるのか』
『人が立っているのか』『笑っているのか』
『泣いているのか』というのが判断できて
そのデータを設備制御側に送って
照明を動かすのか、他の設備を制御する
というようなことができるようになります
この辺りはまずはいろいろ楽しみながら試して
今後宮本さんの方にも、もっとちょっと
今回は顔の判断だったんですけど
もっと『こんなことできるんだよ』っていうのを
テスト的に作ってもらって
それと照明とか他の設備を繋げることを
やっていきたいと思っています
ということで、宮本さん
今回『KNX』も『DALI』も初めて…
そうなんですよ
めちゃくちゃ面白そうですよね
あ!はい、ありがとうございます!
ちなみに今回はこんな感じですね
なにかイメージしてた事とかありましたか?
イメージしてたのは
例えばインターホンとかですね
人が来た時に荷物を持ってたら
『これは宅配の人だなぁ』とか
そういうのも始めに分かるようになるので
そういうのは便利だなという風に思ってます
そうですよね
宅配の人だと部屋の中の『照明が点滅する』とか
『色を変える』とか直感的に分かるような形で
照明で伝えられたら良いですね
それともう1つ、例えば
扉の向こうに人がいるか分からない状態で
バン!と開けちゃったりとか
そういうのもこういうセンサーを使えば
未然に防ぐことができるかなと思っています
そういう新しいものにも
チャレンジしてみたいと思っています
そうですね
また次回も第3回もやっていきながら
より僕たちの仕事に繋がるように
『人工知能』といえば『GIB Japan』さん
『設備制御』といえば『スマートライト』
そして『営業』といえば『中丸さん』
なので皆さんの色々『やりたい』とか
『こんなことできないの?』とかそういうものを
やっぱりある程度実験しながらじゃないと
なかなかできないので
色々僕たちも実験しながら
それを見ていただいて
なにか『こんなことできないの?』というのがあれば
お便りやコメントから
チャンネル登録20万人くらいいますよね?(笑)
あともうちょっとなんですけど(笑)
あと、19万…(笑)
1%の人がコメントしてくれれば
2000コメントくらいくるので
厳選してなにかやりたいですね
ということで『AIと設備制御勉強会』については
外の人の参加も…
もちろん
そうですね!
ぜひ、なにか面白そうなことやってるなって思ったら
『人工知能』に関係なくても関係あっても
『設備制御』に関係あっても関係なくても
なにか楽しそうなことを
やっている人たちがいるって思ったら
ぜひ連絡していただいて
一緒に何か面白いことをやりましょう
じゃあ皆さん、チャンネル登録お願いします!
今日は僕ばっかりしゃべっちゃったんですけど
今後もっともっと色々楽しみながらやりますので
よろしくお願いします!
では、みなさん!さようなら!

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。IoTソリューションの開発、スマートホーム&オフィスのコンサルティング、DALI,KNX,EnOceanなどのインテグレーションを行っています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です