セキュリティX線スキャンナイフ検出
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
ナイフ検出: reComputer を基盤としたTriton推論サーバーにデプロイされた物体検出モデル
セキュリティチェックは、乗客や輸送業界の安全を考慮した警報であり、危険を遠ざけるために通常空港、鉄道駅、地下鉄駅などで適用されます。既存のセキュリティ検査分野では、セキュリティ検査機が公共交通機関の入場通路に配置されています。一般的に、複数のデバイスが同時に動作する必要があります。
しかしながら、セキュリティ検査中に検出された物体が重なり合うため、X線画像での禁止物品の検出性能は依然として理想的ではありません。この問題に対処するために、Triton Interface Serverのデオクルージョンモジュールに基づいて、X線画像で禁止物品検出アルゴリズムをデプロイすることで、より良い結果を得ることができます。
したがって、Yanlu Wei, Renshuai Tao et al.の研究に基づき、禁止物品(ナイフ)を検出するDeep LearningモデルをreComputer J1010にデプロイする基本プロジェクトを提供します。このプロジェクトでは、Raspberry PiとreComputer J1010を使用し、reComputer J1010を推論サーバーとして使用し、2台のRaspberry Piをセキュリティ検査機として画像を送信するシミュレーションを行います。reComputer 1020、reComputer J2011、reComputer J2012、およびNvidia Jetson AGX Xavierもサポートされています。
はじめに
Triton Inference Serverは、CPUとGPUの両方に最適化されたクラウドおよびエッジ推論ソリューションを提供します。TritonはHTTP/RESTおよびGRPCプロトコルをサポートしており、サーバーが管理する任意のモデルに対してリモートクライアントが推論を要求することができます。ここでは、Triton(Triton推論サーバー)をローカルサーバーとして使用し、検出モデルをデプロイします。
ハードウェア
必要なハードウェア
このプロジェクトで必要なデバイスは以下の通りです:
- Raspberry Pi 4B*2
- reComputer J1010
- HDMIディスプレイ画面、マウス、キーボード
- PC
ハードウェアセットアップ
2台のRaspberry PiとreComputerを電源オンにし、すべてが同じインターネットに接続されている必要があります。このプロジェクトでは、セキュリティ検査機が多くの場合複数のデバイスで使用されるため、2台のRaspberry Piを使用してセキュリティ機械の動作をシミュレーションします。そのため、両方の

1台のRaspberry Piだけでもこのプロジェクトに適用可能です。しかし、2台のデバイスでの同時ナイフ検出のデモンストレーションは、Triton推論サーバーのより良い動的バッチ処理能力を提供できます。次の手順では、Raspberry PiとreComputer J1010にソフトウェアをセットアップする方法を紹介します。
ソフトウェア
ここではX線画像データセットを入力データとして使用し、これをRaspberry Piに配置します。その後、reComputerが処理された推論結果をRaspberry Piに出力します。最後に、Raspberry Piが最終的な作業を完了し、画面に表示します。つまり、推論モデルの最終層がRaspberry Piにデプロイされます。
Raspberry Piのセットアップ
ここでは、Raspberry Piに必要なソフトウェアをセットアップする方法を示します。以下を含みます:
ステップ1. 公式ウェブサイトからRaspbian Busterシステムをインストールし、基本設定を行います。このプロジェクトでは、RASPBERRY PI OS(64ビット)をオペレーティングシステムとして使用します。

ステップ2. Raspberry PiのSSHポートを設定します(オプション)。
環境をデプロイする前に、Raspberry PiのSSHポートを開き、PC上でSSHインターフェースを使用してリモートで呼び出すことができます。
注意:PCとRaspberry Piが同じLAN内にあることを確認してください。

ステップ3. Python環境を設定します。
推論モデルに必要な環境としてPython、PyTorch、Tritonclient、TorchVisionをデプロイし、画像表示にはOpenCVを使用します。以下に手順を示します:
Python
python –V
を実行してPythonバージョンが3.9.2であることを確認します。Pythonバージョン3.9.2に対応するPyTorch、Torchclient、TorchVisionをインストールする必要があります。こちらを参照してダウンロードとインストールを行ってください。
PyTorch
Pythonバージョンが正しい場合、次にPyTorchをインストールします。
注意:PyTorchをインストールする前に、Raspbianのバージョンを確認する必要があります。

以下のコマンドを実行してPyTorchをインストールします:
# 初期化
sudo apt-get update
sudo apt-get upgrade
# 依存関係をインストール
sudo apt-get install python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev
# バージョン58.3.0以上ではバージョン問題が発生
sudo -H pip3 install setuptools==58.3.0
sudo -H pip3 install Cython
# Google Driveからダウンロードするためにgdownをインストール
sudo -H pip3 install gdown
# Buster OS
# ホイールをダウンロード
gdown https://drive.google.com/uc?id=1gAxP9q94pMeHQ1XOvLHqjEcmgyxjlY_R
# PyTorch 1.11.0をインストール
sudo -H pip3 install torch-1.11.0a0+gitbc2c6ed-cp39-cp39-linux_aarch64.whl
# クリーンアップ
rm torch-1.11.0a0+gitbc2c6ed-cp39-cp39m-linux_aarch64.whl
インストールが成功した後、python
を起動した後に以下のコマンドでPyTorchを確認できます:
import torch as tr
print(tr.__version__)

注意: Raspberry Pi 4用のPyTorchホイールはhttps://github.com/Qengineering/PyTorch-Raspberry-Pi-64-OSで見つけることができます。
Tritonclient
pip3 install tritonclient[all]
を実行してTritonclientをダウンロードできます。

TorchVision
PyTorchがインストールされた後、TorchVisionのインストールに進むことができます。以下のコマンドを使用してください:
# ホイールをダウンロード
gdown https://drive.google.com/uc?id=1oDsJEHoVNEXe53S9f1zEzx9UZCFWbExh
# torchvision 0.12.0をインストール
sudo -H pip3 install torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl
# クリーンアップ
rm torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl

OpenCV
OpenCVをインストールするには、pip3 install opencv-python
を直接実行できます:

reComputer J1010 のセットアップ
このプロジェクトでは、reComputer J1010にTriton Inference Serverをデプロイします。トレーニング済みモデルのインタラクティブ性とデプロイの利便性を向上させるため、モデルをONNX形式に変換します。
ステップ 1. Jetpack 4.6.1をインストール reComputer J1010にインストールします。
ステップ 2. “home/server/docs/examples/model_repository”に新しいフォルダ“opi/1”を作成し、トレーニング済みで変換されたmodel.onnxをダウンロードして“1”フォルダに配置します。

別の一般的なサーバーが必要な場合は、以下の手順を実行できます。
新しいターミナルを開き、以下を実行します:
git clone https://github.com/triton-inference-server/server
cd ~/server/docs/examples
sh fetch_models.sh
ステップ 3. JetPack 4.6.1用のTritonリリースをインストールします。添付されたtarファイル:tritonserver2.21.0-jetpack5.0.tgzを使用します。

このtarファイルには、Tritonサーバーの実行ファイルと共有ライブラリ(C++およびPythonクライアントライブラリと例を含む)が含まれています。JetPack上でTritonをインストールおよび使用する方法についての詳細はこちらを参照してください。
ステップ 4. 以下のコマンドを実行します:
mkdir ~/TritonServer && tar -xzvf tritonserver2.19.0-jetpack4.6.1.tgz -C ~/TritonServer
cd ~/TritonServer/bin
./tritonserver --model-repository=/home/seeed/server/docs/examples/model_repository --backend-directory=/home/seeed/TritonServer/backends --strict-model-config=false --min-supported-compute-capability=5.3

これで、すべての準備が整いました。
プログラムの操作
必要な環境がすべて展開されているため、以下の手順に従ってプロジェクトを実行できます。
ステップ 1. モデルと関連ファイルをダウンロードします。
- GitHubからモジュールをクローンします。
新しいターミナルを開き、以下を実行します:
git clone https://github.com/LemonCANDY42/Seeed_SMG_AIOT.git
cd Seeed_SMG_AIOT/
git clone https://github.com/LemonCANDY42/OPIXray.git
- 新しいフォルダ「weights」を作成し、このアルゴリズムの学習済み重み「DOAM.pth」を保存します。重みファイルをダウンロードし、以下を実行します:
cd OPIXray/DOAM
mkdir weights

- 新しい「Dataset」フォルダを作成し、X線画像データセットを保存します。

ステップ 2. 推論モデルを実行します。
以下を実行します:
python OPIXray_grpc_image_client.py -u 192.168.8.230:8001 -m opi Dataset

結果は以下の図のように表示されます:

トラブルシューティング
Tritonサーバーを起動する際、以下のエラーが発生する可能性があります:
- libb64.so.0dに関するエラーが発生した場合、以下を実行してください:
sudo apt-get install libb64-0d
- libre2.so.2に関するエラーが発生した場合、以下を実行してください:
sudo apt-get install libre2-dev
- エラー: creating server: Internal - failed to load all modelsが発生した場合、以下を実行してください:
--exit-on-error=false
技術サポートと製品に関する議論
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。