HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2020/06/28

Jetson Nano、Jetson Xavier NX 開発者キット tf-pose-estimation on Jetson Platform 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の便利スクリプト
【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
cat


cat



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


cat



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


cat



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


golf



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


p1



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


p2



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


p3



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


ski



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


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の便利スクリプト
【2020年版】NVIDIA Jetson Nano、Jetson Xavier NXの便利スクリプト

  Jetsonの面倒な初期設定やミドルウェアのインストールを bashスクリプトの実行だけで簡単にできます

NVIDIA Jetson Xavier NXに電源スイッチ、リセットスイッチ、電源 LEDを増設する方法
NVIDIA Jetson Xavier NXに電源スイッチ、リセットスイッチ、電源 LEDを増設する方法

  Xavier NXに電源スイッチ、リセットスイッチ、電源 LEDを増設する方法、DOS/Vパソコンのパーツを流用可能

【2020年】Jetson Xavier NX 開発者キットが安かったので衝動買いした件、標準販売価格5万円が4万4千円!
【2020年】Jetson Xavier NX 開発者キットが安かったので衝動買いした件、標準販売価格5万円が4万4千円!

  【ザビエル元年】Jetson Xavier NX 開発者キットを最安値で購入で、しかも国内在庫で注文から翌日で到着、ザビエル開封レビュー

Jetson Nano、Xavier NX 開発者キットを電源と USBケーブルだけの接続で最初の初期設定を行なう方法
Jetson Nano、Xavier NX 開発者キットを電源と USBケーブルだけの接続で最初の初期設定を行なう方法

  NVIDIA Jetson Nano、Xavier NX Developer Kit HEADLESS MODE Setup、ヘッドレス セットアップ

【2020年版】NVIDIA Jetson Xavier NXの初期設定、最高速で動かす設定、空きメモリを増やす方法等
【2020年版】NVIDIA Jetson Xavier NXの初期設定、最高速で動かす設定、空きメモリを増やす方法等

  2020年の JetPack 4.4になっても nvccのパスがデフォルトで通って無いとか、初期設定が必要です

Jetson Xavier NX 開発者キットに M.2 NVMe SSDを増設する方法
Jetson Xavier NX 開発者キットに M.2 NVMe SSDを増設する方法

  Jetson Xavier NXに NVMe SSDを増設してフォーマットとパーティション作成してマウントする方法

【2020年版】NVIDIA JetPack 4.4 DP Developer Previewで OpenPoseのビルドエラーの対策方法
【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年版】NVIDIA Jetson用に最新の CMake 3.17.3をビルドしてインストールする方法

  2020年の JetPack 4.4になっても CMakeのバージョンが 3.10.2と古く OpenPoseのビルドでエラー発生の原因

Jetson Nano、Jetson Xavier NX 開発者キット TensorFlow on Jetson Platform
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
NVIDIA Jetson Nano 開発者キットを買ってみた。メモリ容量 4GB LPDDR4 RAM

  Jetson Nanoで TensorFlow PyTorch Caffe/Caffe2 Keras MXNet等を GPUパワーで超高速で動かす!

【2020年版】NVIDIA Jetson Nano JetPackのバージョン情報まとめ、JetPack 4.4は仕様変更の影響が大きい
【2020年版】NVIDIA Jetson Nano JetPackのバージョン情報まとめ、JetPack 4.4は仕様変更の影響が大きい

  最新の JetPackでは 2019年当時の殆どの記事の内容がそのままではエラーが出て動かない様になりました

【2020年版】NVIDIA Jetson Nano対応の FFmpegをビルドする手順
【2020年版】NVIDIA Jetson Nano対応の FFmpegをビルドする手順

  NVIDIA Jetson Nano対応の FFmpegをビルドする手順、x264と x265にも対応

【2020年版】NVIDIA Jetson Nano対応の OpenPoseをビルドする手順
【2020年版】NVIDIA Jetson Nano対応の OpenPoseをビルドする手順

  NVIDIA Jetson Nano対応の OpenPoseをビルドする手順

NVIDIA Jetson Nanoで OpenCV 3をビルドしてインストールする方法、NVCaffe等の OpenCV 4未対応を動かす
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で Visual Studio Code Open Sourceをビルドして実行する

  NVIDIA Jetson Nanoで VSCode Open Source Code - OSSをビルドして実行する、1.35.0

【2020年版】NVIDIA Jetson Nanoで TensorFlowの StyleGANを動かして、顔画像を生成
【2020年版】NVIDIA Jetson Nanoで TensorFlowの StyleGANを動かして、顔画像を生成

  NVIDIA Jetson Nano JetPack StyleGAN、敵対的生成ネットワーク AIで自然な顔画像を生成する

【2020年版】NVIDIA Jetson Nanoで StyleGANの改良版の StyleGAN2で自然な画像を生成
【2020年版】NVIDIA Jetson Nanoで StyleGANの改良版の StyleGAN2で自然な画像を生成

  NVIDIA Jetson Nano JetPack StyleGAN2、敵対的生成ネットワーク AIで自然な顔画像を生成する

【2020年版】Jetson Nanoで StyleGANを動かして可愛い美少女のアニメ顔を大量生産する方法
【2020年版】Jetson Nanoで StyleGANを動かして可愛い美少女のアニメ顔を大量生産する方法

  【俺の嫁】Jetson Nanoで StyleGANと StyleGAN2のそれぞれで、敵対的生成ネットワーク AIでアニメ顔を生成

【メモリ8GB】Raspberry Pi 4 Model B 8GBを KSYで最安値で購入。ベンチマークレビュー
【メモリ8GB】Raspberry Pi 4 Model B 8GBを KSYで最安値で購入。ベンチマークレビュー

  【技適取得】ラズパイ4B 8GBモデルを入手。従来の Pi3、Pi3B+と速度比較

【Vulkan】Raspberry Pi 4 Model Bで Vulkanドライバをビルドして 3Dグラフィックのデモを動かす
【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機器が複数有る場合に便利
PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利

  ピクチャ イン ピクチャ機能付き 4K入力対応の 4入力 1出力 HDMI切り換え機 HDSFX0401P

EDID保持機能付きの 4K対応の 4入力 2出力の マトリックス切り替え HDMIセレクター、液晶画面 2台と使用で最強
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/