Raspberry PI 5活用術(物体認識編)

組み込みシステム

不特定物体検出

  1. 焦電型赤外線センサー
    • 物体(主に生物)からの赤外線放射による温度変化で検出
    • Amazon等でも購入可能だが、センサーにより検出性能が異なるので注意が必要
  2. Raspberry Pi5のGPIOに接続
    • センサーのOUT端子を適当なGPIOピン(GPIO 18=12ピンなど)
    • センサーの電源ピン(+5VとGND)をGPIOの電源ピンと接続(+5V=2 or 4ピン、GND=6ピン)
  3. Pythonスクリプト
 import gpiod
 GPIO_PIN = 18
 chip = gpiod.Chip('gpiochip0', gpiod.Chip.OPEN_BY_NAME)
 pin = chip.get_line(GPIO_PIN)
 pin.request(consumer="SENSSOR", type=gpiod.LINE_REQ_DIR_IN)
 if pin.get_value() == 1:
    # 赤外線を放射する物体に動きが有る場合の処理

物体認識

  1. リアルタイム物体識別環境
  2. Pythonスクリプト
    • モジュール
      • from picamera2 import Picamera2
    • 必要なファイルを指定
      • classFile(物体名を定義)  保存ディレクトリ/coco.names
      • configPath(コンフィグファイル)  “ssd_mobilenet_v3_large_coco_2020_01_14.pbtxt”の保存ディレクトリ
      • weightsPath(モデルの重み)  “frozen_inference_graph.pb”の保存ディレクトリ
    • カメラ関係
      • camera = Picamera2()
      • camera.configure(camera.create_preview_configuration(main={“format”: ‘RGB888‘, “size”: (640, 480)}))
      • camera.start()
    • 画像表示
      • img = camera.capture_array()
      • result, objectInfo = getObjects(img,0.45,0.2)
      • cv2.imshow(“Output”,img)
      • cv2.waitKey(1)
  3. カスタマイズ
    • 特定物体を定義
      • classFile(物体名を定義)をcoco.namesから独自定義に変更
      • 例えば動物だけに絞るのであれば
        • animals = [‘person’, ‘bird’, ‘cat’, ‘dog’, ‘horse’, ‘sheep’, ‘cow’, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’]
      • if len(objects) == 0: objects = classNames ⇒ objects = animals
    • 検出処理
      • 検出日時をファイル名とした静止画を保存
        • import datetime
        • result, objectInfo = getObjects(img,0.45,0.2)  # 物体検出
        • for item in objectInfo:  # 検出物体s ループ 
          • dt_now = datetime.datetime.now()  # 検出日時を取得
          • fname = ‘保存ディレクトリ’ + dt_now.isoformat() + ‘.jpg’  # 保存ファイル名を定義
          • cv2.imwrite(fname ,img)  # ファイルを保存
      • 更に検出物体を名前で絞りたい場合
        • 上記 item[1] == ‘物体名’ で絞り込む

コメント

タイトルとURLをコピーしました