・2020/06/28
Jetson Nano、Jetson Xavier NX 開発者キット tf-pose-estimation on Jetson Platform
(NVIDIA Jetson Nano、Jetson Xavier NX Developer TensorFlow tf-pose-estimation Jetson)
Tags: [Raspberry Pi], [電子工作], [ディープラーニング]
● Jetson Nano、Jetson Xavier NXの便利スクリプト
・2020/07/03
【2020年版】NVIDIA Jetson Nano、Jetson Xavier NXの便利スクリプト
Jetsonの面倒な初期設定やミドルウェアのインストールを bashスクリプトの実行だけで簡単にできます
● NVIDIA Jetson Nano、Jetson Xavier NX 開発者キット TensorFlow on tf-pose-estimation
tf-pose-estimationを Jetson Nano、Jetson Xavier NXにインストールする方法。
ildoonet / tf-pose-estimation
TensorFlow Version 1.15.2で動作確認。
※ tf-pose-estimationは TensorFlow Version 2系には非対応
● tf-pose-estimation on Jetson Platform with JetPack
# https://github.com/ildoonet/tf-pose-estimation
# Pre-Install Jetson case
sudo apt-get -y install libllvm-7-ocaml-dev libllvm7 llvm-7 llvm-7-dev llvm-7-doc llvm-7-examples llvm-7-runtime
export LLVM_CONFIG=/usr/bin/llvm-config-7
# pip3 install -r requirements.txt
# Failed building wheel for matplotlib
# Failed building wheel for llvmlite
sudo apt-get -y install libfreetype6-dev
sudo apt-get -y install libpng-dev
# Install Clone the repo and install 3rd-party libraries.
cd
git clone https://github.com/ildoonet/tf-pose-estimation --depth 1
cd tf-pose-estimation
# pip3 install -r requirements.txt
# ERROR: scikit-image 0.17.2 has requirement scipy>=1.0.1, but you'll have scipy 0.19.1 which is incompatible.'
pip3 install scipy==1.0.1
# sed -i 's/llvmlite/llvmlite==0.31.0/g' requirements.txt
pip3 install llvmlite==0.31.0
# sed -i 's/numba/numba==0.48.0/g' requirements.txt
pip3 install numba==0.48.0
# Successfully installed llvmlite-0.31.0 numba-0.48.0
# requirements.txt
pip3 install -r requirements.txt
# post-processing for Part-Affinity Fields Map implemented in C++ & SWIG
# Build c++ library for post processing
# https://github.com/ildoonet/tf-pose-estimation/tree/master/tf_pose/pafprocess
cd tf_pose/pafprocess
# -bash: swig: command not found
# Need to install SWIG Simplified Wrapper and Interface Generator
# http://www.swig.org/
sudo apt -y install swig
swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace
# debconf: delaying package configuration, since apt-utils is not installed
# ↑これは無視しても大丈夫
# ENV DEBCONF_NOWARNINGS yes
# ENV DEBIAN_FRONTEND noninteractive
cd ../..
cd models/graph/cmu
bash download.sh
cd ../../..
# python3 run.py --model=mobilenet_thin --resize=432x368 --image=./images/p1.jpg
python3 run.py --model=mobilenet_thin --image=./images/p1.jpg
python3 run.py --model=mobilenet_thin --image=./images/p2.jpg
python3 run.py --model=mobilenet_thin --image=./images/p3.jpg
python3 run.py --model=mobilenet_thin --image=./images/cat.jpg
run.py
黄色行が追加、変更の行。
import argparse
import logging
import sys
import time
import os
from tf_pose import common
...
try:
import matplotlib.pyplot as plt
basename = os.path.splitext(os.path.basename(args.image))[0]
plt.imsave(basename + "_org.png", cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
# plt.imsave(basename + "_orgr.png", image)
fig = plt.figure()
a = fig.add_subplot(2, 2, 1)
...
plt.colorbar()
fig.savefig(basename + "_graph.png")
# plt.savefig('output_graph.png')
# SSH terminal comment below "plt.show()"
plt.show()
except Exception as e:
logger.warning('matplitlib error, %s' % e)
上記の変更を行なう diff patch
# diff -u run.py run_mod.py > run_py_diff.patch
# patch -u < run_py_diff.patch
cp run.py run_mod.py
patch -u run_mod.py < run_py_diff.patch
# patching file run_mod.py
run_py_diff.patch
--- run.py 2020-07-02 20:44:28.191246781 -0400
+++ run_mod.py 2020-07-02 08:26:13.000000000 -0400
@@ -2,6 +2,7 @@
import logging
import sys
import time
+import os
from tf_pose import common
import cv2
@@ -55,6 +56,10 @@
try:
import matplotlib.pyplot as plt
+ basename = os.path.splitext(os.path.basename(args.image))[0]
+ plt.imsave(basename + "_org.png", cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
+ # plt.imsave(basename + "_orgr.png", image)
+
fig = plt.figure()
a = fig.add_subplot(2, 2, 1)
a.set_title('Result')
@@ -85,6 +90,10 @@
# plt.imshow(CocoPose.get_bgimg(inp, target_size=(vectmap.shape[1], vectmap.shape[0])), alpha=0.5)
plt.imshow(tmp2_even, cmap=plt.cm.gray, alpha=0.5)
plt.colorbar()
+
+ fig.savefig(basename + "_graph.png")
+ # plt.savefig('output_graph.png')
+ # SSH terminal comment below "plt.show()"
plt.show()
except Exception as e:
logger.warning('matplitlib error, %s' % e)
cmu (trained in 656x368)
mobilenet_thin (trained in 432x368)
mobilenet_v2_large (trained in 432x368)
mobilenet_v2_small (trained in 432x368)
python3 run.py --model=mobilenet_thin --image=./images/cat.jpg
・cat


python3 run.py --model=mobilenet_v2_large --image=./images/cat.jpg
・cat


python3 run.py --model=mobilenet_v2_small --image=./images/cat.jpg
・cat


python3 run.py --model=mobilenet_thin --image=./images/golf.jpg
・golf


python3 run.py --model=mobilenet_thin --image=./images/p1.jpg
・p1


python3 run.py --model=mobilenet_thin --image=./images/p2.jpg
・p2


python3 run.py --model=mobilenet_thin --image=./images/p3.jpg
・p3


python3 run.py --model=mobilenet_thin --image=./images/ski.jpg
・ski


python3 run.py --model=mobilenet_thin --image=./images/valid_person1.jpg
・valid_person1


● Demo
Python3
# Test Inference
# You can test the inference feature with a single image.
python3 run.py --model=mobilenet_thin --resize=432x368 --image=./images/p1.jpg
# 動いた
Pi Camera --camera=0
WebCamera --camera=1
Pi Camera none
WebCamera --camera=0
# Realtime Webcam + WebCamera
python3 run_webcam.py --model=mobilenet_thin --resize=432x368 --camera=0
# 動いた
# Apply TensoRT + WebCamera
python3 run_webcam.py --model=mobilenet_thin --resize=432x368 --camera=0 --tensorrt=True
# 動かない
# Traceback (most recent call last):
# File "run_webcam.py", line 45, in <module>
# e = TfPoseEstimator(get_graph_path(args.model), target_size=(w, h), trt_bool=str2bool(args.tensorrt))
# File "/home/jetson/tf-pose-estimation/tf_pose/estimator.py", line 327, in __init__
# use_calibration=True,
# TypeError: create_inference_graph() got an unexpected keyword argument 'use_calibration'
# remove obsolete "use_calibration" option #501
https://github.com/ildoonet/tf-pose-estimation/pull/501
tf_pose/estimator.py
327行目の
use_calibration=True,
を削除しても、次に進んだ所で、、、
# Apply TensoRT + WebCamera
python3 run_webcam.py --model=mobilenet_thin --resize=432x368 --camera=0 --tensorrt=True
# 動かない
# 2020-07-03 12:07:13,119 DEBUG finished+
# select timeout
# VIDIOC_DQBUF: Resource temporarily unavailable
# [2020-07-03 12:07:23,457] [TfPoseEstimator-WebCam] [DEBUG] image process+
# 2020-07-03 12:07:23,457 DEBUG image process+
# Traceback (most recent call last):
# File "run_webcam.py", line 57, in <module>
# humans = e.inference(image, resize_to_default=(w > 0 and h > 0), upsample_size=args.resize_out_ratio)
# File "/home/jetson/tf-pose-estimation/tf_pose/estimator.py", line 536, in inference
# raise Exception('The image is not valid. Please check your image exists.')
# Exception: The image is not valid. Please check your image exists.
# Realtime + Pi Camera
python3 run_webcam.py --model=mobilenet_thin --resize=432x368 --camera=0
# 動かない
# VIDIOC_DQBUF: Resource temporarily unavailable
# Traceback (most recent call last):
# File "run_webcam.py", line 51, in <module>
# logger.info('cam image=%dx%d' % (image.shape[1], image.shape[0]))
# AttributeError: 'NoneType' object has no attribute 'shape'
下記は駄目
# Update estimator.py #560
https://github.com/ildoonet/tf-pose-estimation/pull/560
tf_pose/estimator.py
14行目の
import tensorflow.contrib.tensorrt as trt
を削除
# Refactored run_webcam.py #608
https://github.com/ildoonet/tf-pose-estimation/pull/608
色々改善
● TensorFlow version 2で No module named tensorflow.contribエラー
対応方法: TF 2.xで廃止なので、 TF 1.x系にダウングレードする。
tf-pose-estimationも TF 1.x系だけに対応。
# TensorFlow version 2
# TF-2.1.0
import tensorflow.contrib.tensorrt as trt
ModuleNotFoundError: No module named 'tensorflow.contrib'
Tags: [Raspberry Pi], [電子工作], [ディープラーニング]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
【2020年版】NVIDIA Jetson Nano、Jetson Xavier NXの便利スクリプト
Jetsonの面倒な初期設定やミドルウェアのインストールを bashスクリプトの実行だけで簡単にできます
NVIDIA Jetson Xavier NXに電源スイッチ、リセットスイッチ、電源 LEDを増設する方法
Xavier NXに電源スイッチ、リセットスイッチ、電源 LEDを増設する方法、DOS/Vパソコンのパーツを流用可能
【2020年】Jetson Xavier NX 開発者キットが安かったので衝動買いした件、標準販売価格5万円が4万4千円!
【ザビエル元年】Jetson Xavier NX 開発者キットを最安値で購入で、しかも国内在庫で注文から翌日で到着、ザビエル開封レビュー
Jetson Nano、Xavier NX 開発者キットを電源と USBケーブルだけの接続で最初の初期設定を行なう方法
NVIDIA Jetson Nano、Xavier NX Developer Kit HEADLESS MODE Setup、ヘッドレス セットアップ
【2020年版】NVIDIA Jetson Xavier NXの初期設定、最高速で動かす設定、空きメモリを増やす方法等
2020年の JetPack 4.4になっても nvccのパスがデフォルトで通って無いとか、初期設定が必要です
Jetson Xavier NX 開発者キットに M.2 NVMe SSDを増設する方法
Jetson Xavier NXに NVMe SSDを増設してフォーマットとパーティション作成してマウントする方法
【2020年版】NVIDIA JetPack 4.4 DP Developer Previewで OpenPoseのビルドエラーの対策方法
Jetson Nano、Jetson Xavier NX 開発者キット + JetPack 4.4 DPで OpenPoseをビルドする手順
【2020年版】NVIDIA Jetson用に最新の CMake 3.17.3をビルドしてインストールする方法
2020年の JetPack 4.4になっても CMakeのバージョンが 3.10.2と古く OpenPoseのビルドでエラー発生の原因
Jetson Nano、Jetson Xavier NX 開発者キット TensorFlow on Jetson Platform
NVIDIA Jetson Nano、Jetson Xavier NX Developer TensorFlow on Jetson Platform
NVIDIA Jetson Nano 開発者キットを買ってみた。メモリ容量 4GB LPDDR4 RAM
Jetson Nanoで TensorFlow PyTorch Caffe/Caffe2 Keras MXNet等を GPUパワーで超高速で動かす!
【2020年版】NVIDIA Jetson Nano JetPackのバージョン情報まとめ、JetPack 4.4は仕様変更の影響が大きい
最新の JetPackでは 2019年当時の殆どの記事の内容がそのままではエラーが出て動かない様になりました
【2020年版】NVIDIA Jetson Nano対応の FFmpegをビルドする手順
NVIDIA Jetson Nano対応の FFmpegをビルドする手順、x264と x265にも対応
【2020年版】NVIDIA Jetson Nano対応の OpenPoseをビルドする手順
NVIDIA Jetson Nano対応の OpenPoseをビルドする手順
NVIDIA Jetson Nanoで OpenCV 3をビルドしてインストールする方法、NVCaffe等の OpenCV 4未対応を動かす
NVIDIA Jetson Nanoに「古い」 OpenCV 3.4.10をビルドしてインストールする方法
NVIDIA Jetson Nanoで Visual Studio Code Open Sourceをビルドして実行する
NVIDIA Jetson Nanoで VSCode Open Source Code - OSSをビルドして実行する、1.35.0
【2020年版】NVIDIA Jetson Nanoで TensorFlowの StyleGANを動かして、顔画像を生成
NVIDIA Jetson Nano JetPack StyleGAN、敵対的生成ネットワーク AIで自然な顔画像を生成する
【2020年版】NVIDIA Jetson Nanoで StyleGANの改良版の StyleGAN2で自然な画像を生成
NVIDIA Jetson Nano JetPack StyleGAN2、敵対的生成ネットワーク AIで自然な顔画像を生成する
【2020年版】Jetson Nanoで StyleGANを動かして可愛い美少女のアニメ顔を大量生産する方法
【俺の嫁】Jetson Nanoで StyleGANと StyleGAN2のそれぞれで、敵対的生成ネットワーク AIでアニメ顔を生成
【メモリ8GB】Raspberry Pi 4 Model B 8GBを KSYで最安値で購入。ベンチマークレビュー
【技適取得】ラズパイ4B 8GBモデルを入手。従来の Pi3、Pi3B+と速度比較
【Vulkan】Raspberry Pi 4 Model Bで Vulkanドライバをビルドして 3Dグラフィックのデモを動かす
【v3dv】ラズパイ4Bで Vulkan APIを動かす、VK_ICD_FILENAMES broadcom_icd.armv7l.json
PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
ピクチャ イン ピクチャ機能付き 4K入力対応の 4入力 1出力 HDMI切り換え機 HDSFX0401P
EDID保持機能付きの 4K対応の 4入力 2出力の マトリックス切り替え HDMIセレクター、液晶画面 2台と使用で最強
TESmart HMA0402A30 マトリックス切り替えで液晶画面 2台に接続できて更に EDID保持の便利機能付き HDMI切り換え機
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2020 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/raspberry_pi/nvidia_jetson_jetpack_tf_pose_estimation_setup/