버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

문서 이력

...

일자

...

변경내용

...

작성자

...

2023. 01. 01

...

문서 초안 작성

...

@

목차

...

문서개요

Jetson Nano (jetpack version 4.6.1) 에서 mediapipe를 설치하고, USB 카메라를 사용하여 Hand Tracking 예제를 실행하는 과정을 서술합니다.

...

mediapipe를 이용하기 위해서는 tensorflow가 설치되어야 합니다.

...

아래 링크를 참고하여 tensorflow를 설치해주세요.

https://allai0811.atlassian.net/wiki/spaces/JCB/pages/214171660/Jetson+Tensorflow+GPU#Jetpack-4.x-%EC%97%90%EC%84%9C-%EC%84%A4%EC%B9%98-%EA%B3%BC%EC%A0%95-(Nano)

opencv 설치

swap 공간 할당

정보

opencv 전체 빌드에는 약 8GB 이상의 램이 필요하며, Jetson nano는 ram이 4GB 이기 때문에 swap 공간을 할당해주어야 합니다.

  1. dphys-swapfile 설치

코드 블럭
$ sudo apt update

...

-get install dphys-swapfile

  1. /sbin/dphys-swapfile 수정

코드 블럭
$ sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
$ sudo apt-get install python3-pip
$ sudo pip3 install -U pip testresources setuptools
$ sudo ln -s /usr/include/locale.h /usr/include/xlocale.h
$ pip3 install Cython==0.29.36
$ pip3 install pkgconfig
$ git clone https://github.com/h5py/h5py.git
$ cd h5py
$ H5PY_SETUP_REQUIRES=0 pip3 install . --no-deps --no-build-isolation
$ sudo pip3 install -U numpy==1.19.4 future mock keras_preprocessing keras_applications gast==0.2.1 protobuf pybind11 packaging
$ sudo pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v461  tensorflow
  1. tensorflow gpu 사용 확인

코드 블럭
$ python3
>>> tf.test.is_gpu_available() 
Use ‘tf.config.list_physical_devices(‘GPU’)’ instead.

또는 

$ python3
>>> tf.test.is_gpu_availble()
True

위 결과처럼 나올 경우 GPU 사용

mediapipe, opencv 설치

  1. opencv 삭제

코드 블럭
$ sudo apt-get install python3-opencv 
$ sudo apt-get remove python3-opencv
  1. swap 공간 할당

정보

opencv 전체 빌드에는 약 8GB 이상의 램이 필요하며, Jetson nano는 ram이 4GB 이기 때문에 swap 공간을 할당해주어야 합니다.

코드 블럭
# 현재경로 : ~/
$ git clone vi /sbin/dphys-swapfile

CONF_SWAPSIZE=4096

CONF_SWAPFACTOR=2

CONF_MAXSWAP=4096

  1. /etc/dphys-swapfile 주석 해제 및 수정

코드 블럭
$ sudo vi /etc/dphys-swapfile

CONF_SWAPSIZE=4096

CONF_SWAPFACTOR=2

CONF_MAXSWAP=4096

  1. reboot 후 swap 확인

코드 블럭
$ sudo reboot
$ free -m

...

opencv 설치

  1. openCV 4.1.1 삭제

코드 블럭
$ sudo apt purge libopencv-dev libopencv-python libopencv-samples libopencv*

 

  1. opencv가 남아있는지 확인

코드 블럭
$ pkg-config --modversion opencv4

 

  1. 패키지 업데이트 및 필요한 패키지 설치

코드 블럭
$ sudo apt update
코드 블럭
$ sudo apt install -y python3-pip python-dev python3-dev python-numpy python3-numpy
$ sudo sh -c "echo '/usr/local/cuda/lib64' >> /etc/ld.so.conf.d/nvidia-tegra.conf"
$ sudo apt install -y qt5-default
$ sudo apt install -y build-essential cmake git unzip pkg-config libswscale-dev
$ sudo apt install -y libcanberra-gtk* libgtk2.0-dev
$ sudo apt install -y libtbb2 libtbb-dev libavresample-dev libvorbis-dev libxine2-dev
$ sudo apt install -y curl

 

  1. 사진, 비디오 포맷 설치

코드 블럭
$ sudo apt install -y libxvidcore-dev libx264-dev libgtk-3-dev
$ sudo apt install -y libjpeg-dev libpng-dev libtiff-dev
$ sudo apt install -y libmp3lame-dev libtheora-dev libfaac-dev libopencore-amrnb-dev
$ sudo apt install -y libopencore-amrwb-dev libopenblas-dev libatlas-base-dev
$ sudo apt install -y libblas-dev liblapack-dev libeigen3-dev libgflags-dev
$ sudo apt install -y protobuf-compiler libprotobuf-dev libgoogle-glog-dev  
$ sudo apt install -y libavcodec-dev libavformat-dev gfortran libhdf5-dev
$ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt install -y libv4l-dev v4l-utils qv4l2 v4l2ucp libdc1394-22-dev

 

  1. opencv & contrib modules 설치 및 압축해제

코드 블럭
# 현재 경로 : ~
$ curl -L https://github.com/opencv/opencv/JetsonHacksNano/installSwapfile.git  
$ cd installSwapfile
$ ./installSwapfile.sh
  1. mediapipe source clone

코드 블럭
$ cd ~
$ git clone https://github.com/google/mediapipe.git 
$ cd mediapipe

...

archive/4.5.1.zip -o opencv-4.5.1.zip
$ curl -L https://github.com/opencv/opencv_contrib/archive/4.5.1.zip -o opencv_contrib-4.5.1.zip
코드 블럭
$ unzip opencv-4.5.1.zip
$ unzip opencv_contrib-4.5.1.zip

 

  1. build 폴더 생성 및 이동

코드 블럭
# 현재 경로 : ~/opencv-4.5.1
$ mkdir build
$ cd build

 

  1. opencv와 contribs modules 빌드 (시간 많이 소요됨)

코드 블럭
$ sudocmake apt-get install -y libopencv-core-dev  libopencv-highgui-dev libopencv-calib3d-dev libopencv-features2d-dev libopencv-imgproc-dev libopencv-video-dev
$ sudo chmod 744 setup_opencv.sh
$ ./setup_opencv.sh
코드 블럭
$ sudo pip3 install opencv_contrib_python
$ sudo apt install curl

...

-D WITH_CUDA=ON \
        -D ENABLE_PRECOMPILED_HEADERS=OFF \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules \
        -D WITH_GSTREAMER=ON \
        -D WITH_LIBV4L=ON \
        -D BUILD_opencv_python2=ON \
        -D BUILD_opencv_python3=ON \
        -D BUILD_TESTS=OFF \
        -D BUILD_PERF_TESTS=OFF \
        -D BUILD_EXAMPLES=OFF \
        -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules \
        -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
        -D CUDA_ARCH_BIN="7.2" \
        -D CUDA_ARCH_PTX="" \
        -D WITH_CUDNN=ON \
        -D WITH_CUBLAS=ON \
        -D ENABLE_FAST_MATH=ON \
        -D CUDA_FAST_MATH=ON \
        -D OPENCV_DNN_CUDA=ON \
        -D ENABLE_NEON=ON \
        -D WITH_QT=OFF \
        -D WITH_OPENMP=ON \
        -D WITH_OPENGL=ON \
        -D BUILD_TIFF=ON \
        -D WITH_FFMPEG=ON \
        -D WITH_TBB=ON \
        -D BUILD_TBB=ON \
        -D WITH_EIGEN=ON \
        -D WITH_V4L=ON \
        -D OPENCV_ENABLE_NONFREE=ON \
        -D INSTALL_C_EXAMPLES=ON \
        -D INSTALL_PYTHON_EXAMPLES=ON \
        -D BUILD_NEW_PYTHON_SUPPORT=ON \
        -D BUILD_opencv_python3=TRUE \
        -D OPENCV_GENERATE_PKGCONFIG=ON \
        -D BUILD_EXAMPLES=OFF ..
코드 블럭
# 코어 개수에 따라 옵션을 주세요 
# 예) make -j4

$ make
$ sudo make install
$ sudo ldconfig

 

  1. swap 제거

정보

swap 을 사용한 경우에만 이 과정을 따라해주세요.

코드 블럭
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo apt-get remove --purge dphys-swapfile

 

mediapipe 설치

https://drive.google.com/file/d/1lHr9Krznst1ugLF_ElWGCNi_Y4AmEexx/view?usp=sharing 다운로드

...

코드 블럭
$ unzip mediapipe-bin.zip
$ cd mediapipe-bin
$ sudo pip3 install numpy-1.19.4-cp36-none-manylinux2014_aarch64.whl mediapipe-0.8.5_cuda102-cp36-none-linux_aarch64.whl
$ pip3 install dataclasses

mediapipe (

...

HandTracking) 예제 실행

코드 블럭
$ git clone https://github.com/Melvinsajith/How-to-Install-Mediapipe-in-Jetson-Nano.git 
$ cd How-to-Install-Mediapipe-in-Jetson-Nano
코드 블럭
$ python3 Hand_counter.py

또는

$ python3 HandTrackingModule.py

참고사이트

https://github.com/Melvinsajith/How-to-Install-Mediapipe-in-Jetson-Nano