主旨
StereoLabs のZE2カメラを使って、検出結果をZED SDKの点群との連動を可能にするコードを書いた。
その経緯を書いた。
ZED SDK のCustom Detectorの状況
ZED SDKと物体検出との連動は、StereoLabsのユーザーのほとんどが願っていることだと思います。
また、その物体検出のライブラリが商業利用可能なライブラリであることを願っていると思います。
ただ、現時点でのcustom detectorにあるYoloはAGPL-3.0 License: です。
https://github.com/stereolabs/zed-sdk/tree/master/object%20detection/custom%20detector/python
そのため、それらのYOLOでは、商業利用ができないという制限が加わってしまいます。
対策
- そこで、MIT LICENSE であるYOLOX とのbinding を作成した。
開発手順
- CUDAの使えるマシンを確保する。
- Jetson AGX Orinを使用した。
- YOLOXをDocker環境で動作させた。
- pytorchのモデルファイルをTensorRTに変換する。
- 変換したTensorRTにモデルを使って推論するように書き換える。
- ZED SDKで取得した画像からYOLOXでの検出を動作させた。
- 参照するcustom detecorのpytorch_yolov8 を用意する。
- それをもとにpytorch_yolox を作る。
- それが動作するように修正する。
- ドキュメントを修正する。
- Docker環境を使わないで直接インストールしても動作するように改変する。
公開手順
- ドキュメントを英語に書き換える。
- 商用利用もできるライセンスで、StereoLabs のZED-SDKと整合性のよいライセンスを設定する。
- StereoLabsでZED SDKに含めやすいようにフォルダ構成などを修正する。
公開するメリット
- ZED SDK のバージョンが上がるたびに、自分で対応する必要がなくなる。
- OSS化してあれば、組織を移動しても自由に使える。
- 利用しているプラットフォーム、3Dカメラに着目する人が増える。
- 書き捨てじゃないちゃんとしたコードを書く訓練になる。
公開先
もっと改善したいところ
- OpenGL での表示を有効化させたい。
freeglutのエラーが解読できていない。 - PyPI に登録されていないものをpip install でgit+https:でなんとかしたい。