Skip to main content

ナイフ検出:reComputerベースのTriton Inference Serverに展開されたオブジェクト検出モデル

セキュリティチェックは、乗客と交通部門の安全を考慮した安全警報であり、危険を遠ざけ、通常空港、鉄道駅、地下鉄駅などで適用されています。既存のセキュリティ検査分野では、セキュリティ検査機が公共交通機関の入場通路に配備されています。一般的に、複数のデバイスが同時に動作する必要があります。

それにもかかわらず、セキュリティ検査中に検出されたオブジェクトの重複により、X線画像における禁止物品の検出性能は依然として理想的ではありません。この問題に対して、Triton Interface Serverのde-occlusionモジュールに基づいて、X線画像に禁止物品検出アルゴリズムを展開することで、より良い方法を実行できます。

したがって、Yanlu Wei, Renshuai Tao et al.のおかげで、reComputer J1010にDeep Learningモデルを展開し、Raspberry PiとreComputer J1010で禁止物品(ナイフ)を検出できる基本的なプロジェクトを提供します。ここでは、1台のreComputer J1010を推論サーバーとして使用し、2台のRaspberry Piを画像送信のセキュリティ検査機のシミュレーションとして使用します。reComputer 1020reComputer J2011reComputer J2012Nvidia Jetson AGX Xavierもすべてサポートされています。

はじめに

Triton Inference Serverは、CPUとGPUの両方に最適化されたクラウドおよびエッジ推論ソリューションを提供します。Tritonは、リモートクライアントがサーバーによって管理されているモデルの推論を要求できるHTTP/RESTおよびGRPCプロトコルをサポートしています。ここでは、検出モデルが展開されるローカルサーバーとしてTriton(Triton Inference Server)を使用します。

ハードウェア

必要なハードウェア

このプロジェクトで必要なデバイスは以下の通りです:

ハードウェアセットアップ

2台のRaspberry PiとreComputerの電源を入れ、すべて同じインターネット環境下にある必要があります。このプロジェクトでは、ほとんどの場合セキュリティ検査機が複数のデバイスで使用されるため、2台のRaspberry piを使用してセキュリティ機械の動作をシミュレートします。

1台のRaspberry Piでもこのプロジェクトに適用できます。ただし、2つのデバイスでの同時ナイフ検出デモンストレーションは、Triton Inference Serverのより良い動的バッチング機能を提供できます。次の説明では、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環境を設定します。

Raspberry Piに推論モデル用の必要な環境として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をインストールします:

# get a fresh start
sudo apt-get update
sudo apt-get upgrade

# install the dependencies
sudo apt-get install python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev

# above 58.3.0 you get version issues
sudo -H pip3 install setuptools==58.3.0
sudo -H pip3 install Cython

# install gdown to download from Google drive
sudo -H pip3 install gdown

# Buster OS
# download the wheel
gdown https://drive.google.com/uc?id=1gAxP9q94pMeHQ1XOvLHqjEcmgyxjlY_R
# install PyTorch 1.11.0
sudo -H pip3 install torch-1.11.0a0+gitbc2c6ed-cp39-cp39-linux_aarch64.whl
# clean up
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のインストールに移ることができます。以下がコマンドです:

# download the wheel
gdown https://drive.google.com/uc?id=1oDsJEHoVNEXe53S9f1zEzx9UZCFWbExh
# install torchvision 0.12.0
sudo -H pip3 install torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl
# clean up
rm torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl

OpenCV

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

reComputer J1010のセットアップ

このプロジェクトでは、Triton Inference ServerをreComputer J1010にデプロイします。訓練されたモデルのインタラクティブ性とデプロイメントの利便性を向上させるために、モデルをONXX形式に変換します。

ステップ1. reComputer J1010にJetpack 4.6.1をインストールします。

ステップ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

Step 3. JetPack 4.6.1用のTritonのリリースをインストールします。これは添付のtarファイルで提供されています:tritonserver2.21.0-jetpack5.0.tgz

ここのtarファイルには、Tritonサーバーの実行ファイルと共有ライブラリが含まれており、C++およびPythonクライアントライブラリと例も含まれています。JetPackでのTritonのインストールと使用方法の詳細については、こちらを参照してください。

Step 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. モデルと関連ファイルをダウンロードします。

  1. GitHubからモジュールをクローンします。

新しいターミナルを開いて実行します:

git clone https://github.com/LemonCANDY42/Seeed_SMG_AIOT.git
cd Seeed_SMG_AIOT/
git clone https://github.com/LemonCANDY42/OPIXray.git
  1. このアルゴリズム「DOAM.pth」の訓練済み重みを保存するための新しいフォルダ「weights」を作成します。重みファイルをダウンロードして実行してください:
  • cd OPIXray/DOAM
  • mkdir weights
  1. X線画像データセットを保存するための新しい「Dataset」フォルダを作成します。

ステップ2. 推論モデルの実行。

python OPIXray_grpc_image_client.py -u 192.168.8.230:8001 -m opi Datasetを実行してください

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

トラブルシューティング

Tritonサーバーを起動する際に、以下のエラーが発生する場合があります:

  1. libb64.so.0dのエラーが発生した場合、以下を実行してください: sudo apt-get install libb64-0d
  1. libre2.so.2のエラーが発生した場合、以下を実行してください: sudo apt-get install libre2-dev
  1. エラー: creating server: Internal - failed to load all modelsが発生した場合、以下を実行してください: --exit-on-error=false

技術サポート & 製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。

Loading Comments...