先日、やってみた「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_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
$CXX
はg++
なので特に独自ツールを使っているわけではなさそうです。
ライブラリは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
ソフトウェアの構成はだいたいわかりました。
じゃぁ、次はソフトウェアの中身を見ていこう。