検知結果のプレビュー表示機能

Contents

1

はじめに

AIBOX OSには、検知結果画像をブラウザでリアルタイムに確認する機能があります。
このページでは、デフォルトでは無効化されているこの機能の使い方を説明します。

AIBOX OSにログインして、ファイル等を確認・編集できる状態にしておいてください。

2

機能概要

AIBOX OSには、軽量HTTPサーバーのNginXがインストールされており、NginXの公開ディレクトリ(/var/www/html)には、検知結果画像を確認するためのpreview.htmlが標準で組み込まれています。


GitHub preview.htmlはこちら

このpreview.htmlは、同じディレクトリのresult.jpgを100ミリ秒毎に定期的に読み込んで表示する処理が記述されています。
検知プログラムは、検知結果画像をresult.jpgとして更新することで、リアルタイムに検知結果画像をウェブブラウザ上で確認することが可能になります。

3

機能の有効化

デフォルトでは、この機能(NginXのhttp配信機能)は無効化されていますので、この機能を利用するには、これを有効化する必要があります。

NginXの設定を変更するので、設定を永続化したい場合は、事前にramdiskコマンドでRAMディスクを無効化してください。

※一時的に機能を試す場合は、RAMディスクが有効なままでOKです。その場合はAIBOXの電源をOFFにすると、変更する前の状態に戻ります。

ramdhiskコマンド

RAMディスク化を解除したり、再度有効化するためのAIBOX OSの組み込みコマンドです。

OSの設定変更(パスワード変更やSSH有効化、WiFi接続など)を行う前には、以下のコマンドでRAMディスク化を無効化してから、設定変更を行ってください。(AIBOXは一旦再起動します)

コマンド
$ sudo ramdisk disable

設定変更後は、再度RAMディスク化を有効にします。(AIBOXは一旦再起動します)

コマンド
$ sudo ramdisk enable

NginXの設定変更は、以下のファイルの内容を変更することで行います。

設定ファイル
/etc/nginx/sites-available/default
このファイルをエディタ(nano)で開きます。(sudoが必要です)
エディタで開く
$ sudo nano /etc/nginx/sites-available/default

このファイルのコメントアウトされているserver{}の部分のコメントを外して保存します。


server {
        listen 443 ssl;
        listen [::]:443;
          (省略)
}

#------------------------------------
# プレビュー用
# 物体検知プレビューを有効にする場合は
# コメントを外す
#
# アクセス先
# http://xxx.xxx.xxx.xxx/preview.html
#
#------------------------------------

(この下の部分のコメントを外す)

# server {
#       listen 80 default_server;
#        listen [::]:80 default_server;
#
#        root /var/www/html;
#
#       location / {
#               try_files $uri $uri/ =404;
#       }
# }
            
ヒント

nanoエディタは、Ctrl+O で保存、Ctrl+X で終了します。

注意事項

設定ファイルには、アプリとの接続に使用するAPIサーバー(ポート443)の設定も記載してあります。
こちらの設定は変更すると、アプリとの接続ができなくなる恐れがありますので、変更しないようにしてください。

設定ファイルを保存したら、NginXを再起動して、設定を読み込ませます。

NginXの再起動
$ sudo systemctl restart nginx.service

この状態で、別のPC等からウェブブラウザで、AIBOXにアクセスしてみてください。

検知結果のプレビュー画像が表示されれば成功です!

プレビューの表示
http://[AIBOXのIPアドレス]/preview.html
注意事項

この機能はHTTPでの配信で、認証機能もありません。
基本的には開発用の機能として、公開先には十分注意してお使いください。

4

検知プログラムの処理

このプレビュー機能は、検知プログラムが、定期的に/var/www/html/result.jpgを更新することで実現されます。
標準搭載のAI検知プログラムの場合は、メイン関数の最後で保存処理を行っています。


# 結果確認用のプレビューイメージの保存
# PREVIEW_IMAGE_PATHは、/var/www/html/result.jpg
with open(PREVIEW_IMAGE_PATH, 'wb') as f:
    f.write(frame)
            

独自開発の検知プログラムでも、同様の処理を記述することで、検知結果画像の確認を行うことが可能になります。