Vitis AIの構造を勉強してみる(1日目)

先日、やってみた「Vitis AIをやってみる(メモ)」を元にVitis AIがどんなことをしているか勉強する。

ここでは顔認識のfacedetectを次のようにビルドして、SDカードを作成してZCU104上で実行しました。

$ bash -x build.sh

ソフトウェアはどうやって作っている?

ソフトウェア自体はbuild.shで完結していると考えられます。

では、build.shの中身を確認してみました。

CXX=${CXX:-g++}
$CXX -std=c++11 -I. -o test_accuracy_facedetect test_accuracy_facedetect.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lvitis_ai_library-facedetect  -lvitis_ai_library-model_config -lvitis_ai_library-math -lglog 
$CXX -std=c++11 -I. -o test_jpeg_facedetect test_jpeg_facedetect.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lvitis_ai_library-facedetect  -pthread -lglog 
$CXX -std=c++11 -I. -o test_performance_facedetect test_performance_facedetect.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lvitis_ai_library-facedetect  -lvart-util -pthread -lglog 
$CXX -std=c++11 -I. -o test_video_facedetect test_video_facedetect.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lvitis_ai_library-facedetect  -pthread -lglog 

Vitis-AI/demo/Vitis-AI-Library/samples/facedetect/に存在する次の4つのソースコードをコンパイルしているだけです。

  • test_accuracy_facedetect.cpp
  • test_jpeg_facedetect.cpp
  • test_performance_facedetect.cpp
  • test_video_facedetect.cpp

実機で実行したのはtest_jpeg_facedetectです。

ということは、使ったソースコードはtest_jpeg_facedetect.cppだけということです。

test_jpeg_facedetect.cppをビルドしたところだけを抜き出してみました。

$CXX -std=c++11 -I. \
  -o test_jpeg_facedetect \
  test_jpeg_facedetect.cpp \
  -lopencv_core \
  -lopencv_video \
  -lopencv_videoio \
  -lopencv_imgproc \
  -lopencv_imgcodecs \
  -lopencv_highgui \
  -lvitis_ai_library-facedetect \
  -pthread \
  -lglog 

$CXXg++なので特に独自ツールを使っているわけではなさそうです。

ライブラリはOpenCVとvitis_ai_library-facedetectを使っています。

ライブラリのパスはVitisのインストール先ではなく/opt/petalinux/2020.2/sysroots/aarch64-xilinx-linux/usr/libです。

試しにfindしてみると次のようにライブラリが見つかりました。

これと同じものがZCU104のSDカードのrootfsの/usr/libにあるということです。

$ find /opt/petalinux/2020.2/sysroots/aarch64-xilinx-linux -name '*vitis_ai_library-facedetect*'
./usr/lib/libvitis_ai_library-facedetect.so.1
./usr/lib/libvitis_ai_library-facedetectrecog.so
./usr/lib/libvitis_ai_library-facedetect.so
./usr/lib/libvitis_ai_library-facedetect.so.1.3.0
./usr/lib/libvitis_ai_library-facedetect.so.1.2.0
./usr/lib/.debug/libvitis_ai_library-facedetect.so.1.2.0
./usr/lib/libvitis_ai_library-facedetectrecog.so.1
./usr/lib/libvitis_ai_library-facedetectrecog.so.1.3.0

ソフトウェアの構成はだいたいわかりました。

じゃぁ、次はソフトウェアの中身を見ていこう。

write: 2021/01/08/ 00:00:00