前回の記事以降、5カ月ほど時間が経ちました。当時と今とでは、JetPackもOpenCVも新しくなっていますので、これからセットアップする場合には、過去の記事はあてになりません。
今回、OpenCVでの動作を確認すべく、Xavierの再セットアップを実行しました。
しかし・・・・ここからが苦行でした。まさに、苦行。己の無知との遭遇。思い出すだけでも心のダメージが蘇るほどでした。(実は、OpenCV4の導入で3-4日悶々してしまったことだけは秘密にしておいてください。)
様々なサイトで、Xavier上でOpenCV4をセットアップする方法が議論されていますが、私が最終的に救われたのが、install-opencv.shです。
以下、XavierでOpenCV4(==4.2.0)をセットアップした私の足跡をご紹介します。
既存のXavierの大事なデータをバックアップ(単純コピーです)してから、最新のJetPack(==4.3)を入れ、その上でOpenCV(==4.2.0)とYOLOv3を入れました。YOLOv3はcmakeでビルドしました。
まずは、既存のXavierをまっさらにしてしまう前に、必要なデータをバックアップします。
darknet以下のcfg、data、backupあたりの.cfg、.data、.weightは取っておくと良いです。
自分で作成したり、他所から手を入れた.pyも取っておきます。
※JetPackで上書きしてしまってから「ああ!」とならないように、慎重に。
NVIDIAのDeveloperサイトから最新のJetPackを入手します。今回は、JetPack4.3をダウンロードしました。
https://developer.nvidia.com/embedded/jetpack
JetPack4.3を入れて、どんな環境になったのでしょうか?主にcuda周りが気になります。
$ nvprof --version
nvprof: NVIDIA (R) Cuda command line profiler
Copyright (c) 2012 - 2018 NVIDIA Corporation
Release version 10.0.326 (21)
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Mon_Mar_11_22:13:24_CDT_2019
Cuda compilation tools, release 10.0, V10.0.326
こちらはOpenCVのConfigurationの情報です。
-- NVIDIA CUDA: YES (ver 10.0, CUFFT CUBLAS FAST_MATH)
-- NVIDIA GPU arch: 72
-- NVIDIA PTX archs: 72
--
-- cuDNN: YES (ver 7.6.3)
日本語環境もちゃんとしておきましょう(前回同様)
・日本語入力設定動作モードをフルパワーに設定します
・動作モードの変更と環境の確認
今回、私の場合は、鬼のような依存関係やら、自分の無知と直面しながら、最終的に、install-opencv.shに出会い、解決に至りました。
下記、install-opencv.shの修正が必要な部分は、二か所です。OpenCVのバージョンとopencv-contribを入れるかどうかです。
動作確認環境としてUbuntu 18.04 LTS で OpenCV 4.1.0 を入れた人が 22 Jun 2019 にありますね。
最新の4.2.0でチャレンジしてみます。(→成功しました!)
######################################
# INSTALL OPENCV ON UBUNTU OR DEBIAN #
######################################
# -------------------------------------------------------------------- |
# SCRIPT OPTIONS |
# ---------------------------------------------------------------------|
OPENCV_VERSION='4.2.0' # Version to be installed
OPENCV_CONTRIB='YES' # Install OpenCV's extra modules (YES/NO)
# -------------------------------------------------------------------- |
# | THIS SCRIPT IS TESTED CORRECTLY ON |
# |------------------------------------------------------|
# | OS | OpenCV | Test | Last test |
# |------------------|--------------|------|-------------|
# | Debian 10.2 | OpenCV 4.2.0 | OK | 26 Dec 2019 |
# |----------------------------------------------------- |
# | Debian 10.1 | OpenCV 4.1.1 | OK | 28 Sep 2019 |
# |----------------------------------------------------- |
# | Ubuntu 18.04 LTS | OpenCV 4.1.0 | OK | 22 Jun 2019 |
# | Debian 9.9 | OpenCV 4.1.0 | OK | 22 Jun 2019 |
# |----------------------------------------------------- |
# | Ubuntu 18.04 LTS | OpenCV 3.4.2 | OK | 18 Jul 2018 |
# | Debian 9.5 | OpenCV 3.4.2 | OK | 18 Jul 2018 |
# 1. UBUNTUやDEBIANのアップデート
sudo apt-get -y update
# sudo apt-get -y upgrade # Uncomment to install new versions of packages currently installed
# sudo apt-get -y dist-upgrade # Uncomment to handle changing dependencies with new vers. of pack.
# sudo apt-get -y autoremove # Uncomment to remove packages that are now no longer needed
# 2. 依存関係のインストール
# Build tools:
sudo apt-get install -y build-essential cmake
# GUI (GTKを選択する場合は,'qt5-default'を'libgtkglext1-dev'に変えて、ビルドオプションの'-DWITH_QT=ON'を削除する):
sudo apt-get install -y qt5-default libvtk6-dev
# Media I/O:
sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev \
libopenexr-dev libgdal-dev
# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev \
libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm \
libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev
# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev
# Python関係:
sudo apt-get install -y python-dev python-tk pylint python-numpy \
python3-dev python3-tk pylint3 python3-numpy flake8
# Java:
sudo apt-get install -y ant default-jdk
# Documentation and other:
sudo apt-get install -y doxygen unzip wget
# 3. OpenCV本体とオプション機能
wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip
unzip ${OPENCV_VERSION}.zip && rm ${OPENCV_VERSION}.zip
mv opencv-${OPENCV_VERSION} OpenCV
if [ $OPENCV_CONTRIB = 'YES' ]; then
wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip
unzip ${OPENCV_VERSION}.zip && rm ${OPENCV_VERSION}.zip
mv opencv_contrib-${OPENCV_VERSION} opencv_contrib
mv opencv_contrib OpenCV
fi
cd OpenCV && mkdir build && cd build
if [ $OPENCV_CONTRIB = 'NO' ]; then
cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON \
-DWITH_XINE=ON -DENABLE_PRECOMPILED_HEADERS=OFF ..
fi
if [ $OPENCV_CONTRIB = 'YES' ]; then
cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON \
-DWITH_XINE=ON -DENABLE_PRECOMPILED_HEADERS=OFF \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
fi
make -j8
sudo make install
sudo ldconfig
$ python3 -c "import cv2; print( cv2.__version__ )"
4.2.0
$ pkg-config --modversion opencv
4.1.2
※pkg-configが返す結果が違うみたいですね。(3と4の混在ではないので、気持ち悪いですけど、とりあえずそのままにします)
Alexeyab氏のGithubを見ていると、ちょくちょく変更があります。最新のソースコードを落として、こまめにリビルドしましょう。(ソースコードを魔改造している場合は要注意です!)
・cmakeからdarknetをbuild
USBカメラ周りの環境を整えます。
■カメラの解像度を変更する
$ apt-get install v4l-utils
・デバイスの情報を表示
$ v4l2-ctl -d /dev/video0 --all
・対応解像度の表示
$ v4l2-ctl -d /dev/video0 --list-formats-ext
・解像度の変更
$ v4l2-ctl -d /dev/video0 --set-fmt-video=width=
・コントロール一覧の表示
$ v4l2-ctl -d /dev/video0 --list-ctrls-menu
・コントロールの変更
$ v4l2-ctl -d /dev/video0 -c
▼この記事を書いたひと
R&Dセンター 松井 良行
R&Dセンター 室長。コンピュータと共に35年。そしてこれからも!
●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711 地図
交通部 R&Dセンター