この ラボ 4 では、i.MX8 ボードで eIQ ソフトウェアの推論エンジン を使用して TensorFlow Lite アプリケーションのデモを開始する方法について説明します。
Code Auroraで入手可能なソースコードを取得します。
TensorFlow Lite MobileFaceNets MIPI/USBカメラ
OpenCVを使用した顔検出
このアプリケーションデモでは、Haar Feature based Cascade Classifiers を使用してリアルタイムの顔検出を行います。XML という名前の顔用の事前トレーニング済みの Haar Feature ベースのカスケード分類子は、OpenCV に既に含まれています。face の XML ファイルは、code aurora と同様に opencv/data/haarcascades/ フォルダに保存されています 。詳細については、「Haar Cascades を使用した顔検出」をお読みください。
MobileFaceNets の TensorFlow Lite 実装
MobileFaceNets は、より高いパフォーマンスを得るために、より小さなバッチ サイズと入力サイズのホスト PC で再トレーニングされます。このデモでは、トレーニング済みのモデルがソース ファイルとして読み込まれます。
ボードの設定
ステップ1 - eIQ Sample Appsからデモをダウンロードし、/opt/tfliteフォルダに入れます。次に、srcフォルダを入力します。
root@imx8mmevk:~# cd /opt/tflite/examples-tflite/face_recognition/src/
root@imx8mmevk:/opt/tflite/examples-tflite/face_recognition/src#
このフォルダには、次のファイルが含まれている必要があります。
.
├── face_detect_helpers.cpp
├── face_detect_helpers.h
├── face_detect_helpers_impl.h
├── face_recognition.cpp
├── face_recognition.h
├── haarcascade_frontalface_alt.xml
├── メイクファイル
├── MFN.H
├── プロファイリング.h
└── ThreadPool.h
ステップ2 - ボード上のソースコードをコンパイルします。
root@imx8mmevk:/opt/tflite/examples-tflite/face_recognition/src# make
ステップ3 - デモを実行します。
root@imx8mmevk:/opt/tflite/examples-tflite/face_recognition/src# ./FaceRecognition-c 0 -h 0.85
注:-cは、カメラインデックスを指定するために使用されます。「0」は、MIPI/USBカメラが/dev/video0にマウントされていることを意味します。-h は予測スコアのしきい値です。
ステップ4 - 顔データ セットに新しい人物を追加します。
デモの実行中は、リアルタイムで one biggest の顔を検出します。顔が検出されたら、GUIの右側にあるキーボードをクリックして、新しい人の名前を入力できます。次に、[新しい人物を追加] をクリックして、顔をデータ セットに追加します。
簡単に言うと、
1.顔を検出します。
2. 新しい人の名前を入力します。
3. 「新しいユーザーを追加」をクリックします。
注:新しいフェイスが追加されると、現在のディレクトリに「data」という名前のフォルダが作成されます。データセットから新しい顔を削除する場合は、「データ」で削除してください。
Hi,
ページ上部の「TensorFlow Lite MobileFaceNets MIPI/USB Camera」へのリンクは、NXPがCode Auororaからgithubに移動したため、アクセスできなくなりました。githubにはC ++の顔認識の例が見つからず、Pythonのものしか見つかりません。
C ++の例はどこにあるのかお尋ねしてもよろしいですか?
こんにちはマニバナン、
ローカルのconfから、OpenCVをイメージに含める必要があります。Linuxコマンドの「find」を使用して、ターゲットのOpenCVヘッダーファイルパスを取得し、そのパスをインクルードパスに追加して、アプリを再度コンパイルできます。
例えば
/usr/ -name opencv2 を検索します
そうしたら
export CPLUS_INCLUDE_PATH=/usr/
作成する
または、i.MX8ボードへのeIQサンプルアプリのデプロイに従って、Yoctoプロジェクトですべてのeiqサンプルアプリをビルドすることもできます。
こんにちはデヴィン、
返信をありがとう、私はローカルconfに以下を追加しました、それは画像にあります、何が欠けている可能性があります。
OpenCVパッケージ #Configure:
IMAGE_INSTALL_append = "opencv python-opencv"
PACKAGECONFIG_remove_pn-opencv_mx8 = "python3"
PACKAGECONFIG_append_pn-opencv_mx8 = " dnn jasper openmp test neon python2 qt5 gtk "
#Add CMake for SDK のクロスコンパイル:
TOOLCHAIN_HOST_TASK_append += " nativesdk-cmake nativesdk-make"
IMAGE_INSTALL_append = " \
フラットバッファ \
arm-compute-library \
テンソルフローライト \
armnn \
armnn-onnx \
"
PREFERRED_VERSION_opencv = "4.0.1%"
PREFERRED_VERSION_tensorflow-lite = "1.12.0%"
Manivannan様
このアプリにはOpenCVが必要です。エラーは、rootfsにOpenCVヘッダーファイルがないために発生します。OpenCVがSDカードイメージにインストールされているかどうかを再確認できますか?
Hi,
imx8mqevkボード上でtfliteビルドを使用してこの顔認識アプリを実行しようとしていますが、このエラーに直面しています.。ソリューションは何ですか
imx8mqevk:/opt/face_recognition/src# make
g++ -o FaceRecognition -I /usr/include/tensorflow/contrib/lite/tools/make/downloads/flatbuffers/include/ face_recognition.cpp face_detect_helpers.cpp -ltensorflow-lite -lpthread -ldl -g -lopencv_objdetect -lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_videoio -lopencv_imgcodecs
face_recognition.cpp:59から含まれたファイル:
face_detect_helpers.h:18:10: 致命的なエラー: opencv2/objdetect.hpp:該当するファイルやディレクトリはありません
#include 「opencv2/objdetect.hpp」
^~~~~~~~~~~~~~~~~~~~~~~
コンパイルが終了しました。
face_detect_helpers.cpp:13からインクルードされたファイル:
face_detect_helpers.h:18:10: 致命的なエラー: opencv2/objdetect.hpp:該当するファイルやディレクトリはありません
#include 「opencv2/objdetect.hpp」
^~~~~~~~~~~~~~~~~~~~~~~
コンパイルが終了しました。
Hi Rod,
新しい TF-Lite バージョンでは、これらのヘッダーは tensorflow/lite にあります。
face_recognition.cpp と face_detect_helpers_impl.h のこれらのヘッダーのパスは、次のように置き換えることができます。
#include "tensorflow/lite/kernels/register.h" #include"tensorflow/lite/model.h"#include"tensorflow/lite/optional_debug_tools.h"#include「tensorflow/lite/string_util.h」
次に、対応するtensorflow-lite.aをリンクしてアプリをビルドします。#include 「tensorflow/lite/builtin_op_data.h」
#include "tensorflow/lite/interpreter.h"
#include "tensorflow/lite/kernels/register.h"
#include 「tensorflow/lite/string_util.h」
BRや
デヴィン
HI Diego,
これはまだ古いTensorflowバージョンを参照しており、r1.13からTensorflow LiteはTensorflow Contribから移行されました
face_recognition.cpp:52:10: 致命的なエラー: tensorflow/contrib/lite/kernels/register.h:該当するファイルやディレクトリはありません
52 |#include "tensorflow/contrib/lite/kernels/register.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
コンパイルが終了しました。
face_detect_helpers.h:23からインクルードされたファイルでは、
face_detect_helpers.cpp:13より:
face_detect_helpers_impl.h:30:10: 致命的なエラー: tensorflow/contrib/lite/builtin_op_data.h:該当するファイルやディレクトリはありません
30 |#include "tensorflow/contrib/lite/builtin_op_data.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
よろしくお願いいたします。
Rod