【備忘録】NVIDIA Docker環境構築メモ
NVIDIA Dockerの環境構築をメモる
Dockerの環境構築は基本的に1回やると後は頻繁に弄ることはないと思っています.実際ぼくは滅多に弄らないです.
ですので,いざ環境構築しようとすると,大体忘れてますし,かと言ってその都度調べるのも面倒です.
そこで,提供元のリンクと使用したコマンドをメモしました.
どう考えてもリンク先にあるドキュメントを読んでインストールした方が良いです.
Dockerのインストール
下のページを参考に
必要パッケージをインストール.
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
apt-keyを追加.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
指紋の最後の8文字を検索し,指紋が9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88のキーがあることを確認します.
$ sudo apt-key fingerprint 0EBFCD88
aptに追加.
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
aptを反映.
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
インストールできるDockerのバージョンを確認.
$ apt-cache madison docker-ce
今回は19.03.8をインストール.
$ sudo apt-get install docker-ce=5:19.03.8~3-0~ubuntu-xenial docker-ce-cli=5:19.03.8~3-0~ubuntu-xenial containerd.io
非推奨
Dockerのコマンドを打つたびにsuder権限を求められるのは面倒なので.セキュリティ?知らない子ですね...
$ sudo groupadd docker $ sudo gpasswd -a $USER docker $ sudo systemctl restart docker
NVIDIA Dockerをインストール
私の印象ではnvidia-dockerは見る度に姿名前が変わっているイメージ. 正直nvidia-docker2になったあたりから追えていません.
$ curl -sS http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04-core-amd64.tar.gz | tar --exclude 'dev/*' -C rootfs -xz $ nvidia-container-runtime spec $ sudo curl -sS http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04-core-amd64.tar.gz | tar --exclude 'dev/*' -C rootfs -xz
↑なんかhistoryにこのコマンドが残ってたんだけど何がやりたかったのかわからん.
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add - $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list
toolkitのインストールとDockerの再起動
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit $ sudo systemctl restart docker
ここ*3を参考にインストール.
$ sudo apt-get install nvidia-container-runtime
インストールできたか確認
以下のコマンドでnvidia-smiが表示されれば環境構築成功.
$ docker run --gpus all --rm nvidia/cuda nvidia-smi
参考
NVIDIA Docker って今どうなってるの? (19.11版) - Qiita
GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs
GitHub - NVIDIA/nvidia-container-runtime: NVIDIA container runtime
(備忘録)OpenCV4.3をソースからビルドする
OpenCVをソースからビルドする
職場でも趣味でもOpenCVを使うことになりそうなので,OpenCVの環境構築を行うことにしました. でも,どうせ使うなら最新版を使いたい. ということで,お試しでDockerコンテナの中にてOpenCV4.3.0をスースからビルドしました.
前提
- CUDA使用.
- ライブラリのソースは
/souce/
に入れる.
環境
各環境 | バージョン |
---|---|
メインOS | Ubuntu 16.04 LTS |
メインOSのkernel | 4.15.0-99-generic |
nvidia-driver | 418.87.00 |
docker環境 | Ubuntu 16.04 |
CUDA | 10.1 |
cudnn | 7.6.4.38 |
CMake | 3.17 |
gcc | 5.4.0 |
g++ | 5.4.0 |
CMakeの最新版をインストール
# git clone https://github.com/Kitware/Cmake.git # cd Cmake # ./configure --system-curl --system-zlib # make -jn #make install -jn # hash -r
PythonとPython関係のパッケージのインストール
# apt-get -y install python3-dev python3-pip python3-setuptools python3-numpy pylint3 flake8 python3-flake8
必要パッケージのインストール
# apt-get install build-essential gcc g++ gfortran make ccache qt5-qmake # apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # apt-get install openalpr openalpr-utils libopenalpr-dev \ libatlas-base-dev libopenblas-dev liblapack-dev libeigen3-dev libeigen3-doc \ libleveldb-dev liblmdb-dev libnccl-dev \ libguava-java libatlas3-base libatlas-base-dev \ libavresample-dev libgstreamer* # apt-get install pkg-config ccache ecm mesa-utils ffmpeg libavcodec-dev libavformat-dev \ libswscale-dev libogre-1.9-dev x264 libxvidcore-dev \ yasm libxine2-dev libv4l-dev libfaac-dev libmp3lame-dev \ libopencore-amrnb-dev libopencore-amrwb-dev \ libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg libdc1394-22 \ qt5-default tesseract-ocr tesseract-ocr-jpn libgflags-dev autoconf automake \ libtool autoconf-archive libleptonica-dev libtesseract-dev gphoto2 liblapacke-dev
VTKをソースからビルドする
初めはVTKをaptでインストールした上でOpenCVのビルドを試みていましたが,
ビルド時に以下のエラーが吐かれました.
/souces/opencv_contrib-4.3.0/modules/viz/src/precomp.hpp:56:30: fatal error: vtkVersionMacros.h: No such file or directory compilation terminated.
対策として,VTKをソースからビルドすることにしました*1.
諸事情により7.1.1をビルドしました.
# wget https://www.vtk.org/files/release/7.1/VTK-7.1.1.zip # unzip VTK-7.1.1.zip # cd VTK-7.1.1 # mkdir build # cd build
必要パッケージ*2をインストール.
# apt-get install libxt-dev
ビルドからインストール.
# cmake .. # make -jn # make install -jn
OpenCV4.3.0 + OpenCV4.3.0_contribのソースをダウンロード
# wget https://github.com/opencv/opencv/archive/4.3.0.zip # wget https://github.com/opencv/opencv_contrib/archive/4.3.0.zip # unzip opencv-4.3.0 # unzip opencv_contrib-4.3.0
OpenCV4.3.0のビルド
# cd opencv-4.3.0 # mkdir build # cd build
今回はお試しで以下のオプションにてMakefileを作成.
# cmake -D CMAKE_INSTALL_PREFIX=/usr/local/ -D WITH_PYTHON=ON \ -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_opencv_python2=OFF \ -D BUILD_opencv_python3=ON -D PYTHON_DEFAULT_EXECUTABLE=python3 \ -D WITH_CUDA=ON -D CUDA_FAST_MATH=ON -D WITH_CUBLAS=ON \ -D WITH_CUDNN=ON -D WITH_NVCUVID=ON -D OPENCV_DNN_CUDA=ON \ -D BUILD_opencv_cudaimgproc=OFF -D BUILD_EXAMPLES=ON -D WITH_MKL=OFF \ -D OPENCV_EXTRA_MODULES_PATH=/souces/opencv_contrib-4.3.0/modules \ -D CMAKE_BUILD_TYPE=RELEASE -D PYTHON_EXECUTABLE=$(which python3) ..
後はビルド.
# make -jn # make install -jn
最後の設定
# cd /usr/local/lib/python3.5/dist-packages/cv2/python-3.5/ # cp cv2.cpython-36m-x86_64-linux-gnu.so cv2.so
今後の課題
後はDockerfileにまとめてコンテナイメージをすぐに作れるようにすれば良いかなあ.
参考
OpenCV 最新版のビルドとインストール,CUDA 対応可能(ソースコードを使用)(Ubuntu, Debian 上)
Python 3.6 と OpenCV のインストール - アビントン・アカデミー
OpenCV Build · eiichiromomma/CVMLAB Wiki · GitHub
package management - How can I resolve gstreamer dependencies in Ubuntu - Super User
linux - Why does bash say No such file or directory when the file is on the path - Super User
ヴイストン直営店が存在した時代のチラシが発掘された話
今年度を以て大学の研究室を出る私ですが,研究室の掃除中に以下の広告を発見しました.
ロボット製品の開発,販売を行っているヴイストン*1が,かつて直営店で配布していたティッシュに挟んでいたチラシです.
直営店で買い物をすると上のチラシが入ったポケットティッシュを袋に入れてくれました.
直営店は秋葉原にあったのですが,今や過去のものとなってしまいました*2.
やはりネット通販が台頭する現代では店舗の賃料や人件費がかかる実店舗は厳しいようです.まして下手すると鉄道模型よりニッチなロボット製品となると......
この直売店では10個で5000円のDCサーボモータとか4個で1万円を切るメカナムホイールとか買いました.
他にも色んなロボットがディスプレイに並んでいたりとか,Sota*3のセットアップとかが店内で行われていたりして,正にロボット尽くしのお店でした.懐かしいですね.
過去にこの様な直売店が存在していたことの記録としてここに.
*1:ヴイストン株式会社HP https://vstone.co.jp/index.html
*2:ヴイストン ロボットセンター秋葉原店は2019年8月25日に閉店 https://vstone.co.jp/shop/index.html
*3:普及型社会的対話ロボット「Sota(ソータ)」 https://www.vstone.co.jp/products/sota/
【メモ用】東海道・山陽・九州新幹線のフリーWi-Fi利用手順~スマートフォン編~
スマートフォンから東海道新幹線のフリーWi-Fiを利用する
【メモ用】東海道・山陽・九州新幹線のフリーWi-Fi利用手順~PC編~ - 都の外部ストレージのスマートフォン編.手順は同様です.
手順
認証画面へ進む
Wi-Fi設定にて「Shinkansen_Free_Wi-Fi」を選択し,認証画面へ進もうとしますが...
出ない.いつまで経っても表示されない.認証画面へ辿り着く前に躓くのは大学のWi-Fi認証とカナダでのフリーWi-Fi認証依頼でした.まあ今回は長時間の乗車が前提だし待ってみるかと思いましたが,それにしても重い.最初はトンネルを疑いましたが,トンネル内でも使用できるよう設備を設けられているそうなので*1,単純にキャパの問題でしょうか.詳しく調べたいところです.
約3分ほど経過しようやく認証画面が表示されました.
複数の言語に対応しているようですね.アラビア語も用意されていたりとやたら充実している.インバウンド観光客を何が何でも取り込んでやるぞという鋼の意志を感じます.しかし,そもそも外人がフリーWi-Fiの存在知ってるのかよとも思いましたが,以下のリンク先が存在するように周知はされていそうですね.
https://www.japan-rail-pass.com/japan-by-rail/travel-tips/free-wifi-shinkansen
利用規約の同意から認証へ進む際にまた3分ほどかかりました.
上の図にある通り,SNSアカウントなどを利用して認証を行う方式です.
私は適当なGoogleアカウントを使用しました.
認証が完了すると上の図の様なページに飛び,フリーWi-Fiが使用できるようになります.
通信速度の検証
フリーWi-Fiで気になるのは通信速度ですね.Googleスピードテストを用いて検証を行いました.
山間部を走る区間の場合
トンネルが無く,平野部を走る区間の場合
思っていた以上に快適でした.
【メモ用】東海道・山陽・九州新幹線のフリーWi-Fi利用手順~PC編~
新幹線のフリーWi-Fiが使いたい
交通機関にフリーWi-Fiが設定されていることはここ数年でもはや珍しいものではなくなりました.新幹線とて例外ではありません*1.
しかし,多くのフリーWi-Fiは認証だの事前会員登録だの電話しろ*2だの利用までの手続きが煩雑で,場合によっては利用を諦めてしまう場合も少なくないかと思います.
私個人としては,東海道・山陽・九州新幹線のフリーWi-Fiサービスもその1例と思っており,これまで利用を避けていました.しかし,1度手順を把握できればサービス利用時の抵抗も薄らぐだろうと思い,メモを残すことにしました.
手順
Wi-Fiを選択し認証画面へ
PCのWi-Fi設定にて「Shinkansen_Free_Wi-Fi」を選択し,ブラウザから認証画面へ移ります.ブラウザは特に推奨されているものは無いので,蛇の目*3でも炎狐*4でもご自由にということでしょうか.
そもそもどうやって認証画面に行けるんだという所で問題に当たりました.認証画面へ辿り着く方法がわからない.多くの記事では「Webページへ複数回アクセスを試みると認証画面へ行ける」という旨が書かれていました.
スマホだとプッシュ通知から直接認証画面へ飛べたりできるケースが多いので,こういうRPGの障害物排除みたいな試行と手順は煩わしさを覚えてしまう.とりあえずhttps://google.comに2~3回アクセスを試みた所,認証画面へ飛びました.
利用規約への同意
明らかにスマホ向けのUIをそのまま転用している認証画面へ繋がりました.
利用規約に同意すると,認証に使用するアカウントの選択を迫られます.顔本*5や青い鳥*6のアカウントも認証に利用できましたが,とりあえず適当なGoogleアカウントを使用して認証を行いました.にしてもUIが崩れていてとにかく見難い.PCでの利用をハナから想定していないのでは無いかと疑うレベルで崩壊してます.
認証が成功すると自己主張の激しいUIが現れ,晴れてWi-Fiが使用できます.なお,フリーWi-Fiは接続から30分が経過すると再度認証が必要となります.
使用感
思っていた以上に快適に利用できます.少なくともTweetDeckは遅延と言った問題は一切生じずサクサクと動きました.ただ,フリーWi-Fiの利用者は一定数いるのでしょうか.乗車率が上がるに連れやや通信速度が遅くなる実感がありました(実測していないので表現が曖昧).とは言え,ブラウジング程度であれば問題ありませんでした.
ubuntuのキーボードレイアウト設定
ubuntuのキーボード設定
数年前にUbuntuでキーボード設定をしたときの備忘録.
最近(2019年5月現在)PCから以下の画像が発掘されたが,そのまま削除するのも惜しいのでメモ代わりに手順をまとめた.
環境
環境 | 名 |
---|---|
PC | MSI GE72MVR-7RG-059JP |
OS | Ubuntu16.04LTS |
kernel | 4.15 |
手順
ターミナルにてkeyboard-configuration
を起動.
$ sudo dpkg-reconfigure keyboard-configuration
以下のようなGUIが表示される.以降は画像とともに説明.
Generic 105-key PC (intl.)
を選択
Japanese
を選択
Japanese
を選択
The default for the keyboard layout
を選択
No compose key
を選択
No
を選択
最後に,再起動する
🥞を複数の写真から3次元モデル化した話
“インスタ映え”における課題点
“インスタ映え”と呼ばれるものが流行っていますね.本記事における“インスタ映え”とは,別段美味しそうにも見えないスイーツ(🥞)の写真に,意味不明なハッシュタグをこれでもかというほど添えて投稿し,片っ端から“いいね”を貰うことで承認欲求を満たすことを目的とする試みを指します.
マンネリ化した投稿
“インスタ映え”が広く一般化したことにより,“インスタ映え”を狙った投稿は指数関数的に増大しました.よって,従来どおりに🥞の写真を投稿するだけでは,主目的である承認欲求の満足は難しくなっています.たとえ同じ🥞を題材としたものでも,新しい手法による投稿が必要と考えます.
昨今のインスタの潮流に一石を投じなければならない
— 都(Miyako) (@MiyakoNorth) 2019年5月21日
🥞の3次元モデルの投稿
筆者は,🥞の写真の代替手段として,🥞の3次元モデルを投稿する手法を提案しました.本記事では,🥞の3次元モデルを投稿することにより,独自性を確保する手法を検証することを目的としています.
🥞の3次元復元方法
🥞の3次元モデルの作成には,Structure from motion(SfM)を使用します.SfMについては,MathWorksのドキュメントが最も簡潔にまとめられています.クソ雑魚ナメクジの筆者が説明するよりわかり易い.
2視点から撮影した画像による3次元復元は,第二次大戦期の戦艦にある測距儀と原理が同じでありイメージしやすいのに対し,本手法はカメラの内部パラメータを得ているわけでもないのに何故3次元復元ができるのか,イメージが難しい.
ともあれこの手法は,土木工事現場の進捗管理や土砂量推定にて広く実用,研究されており,建機メーカーやゼネコン各社が開発を進めています.
🥞の3次元復元手順
画像の撮像
上記の手法による3次元復元には,多数の画像が必要です.本記事では,252枚の🥞の画像を使用しました.
SfMの実行
SfMの実行には既存のソフトウェアを使用しています.SfM自体は土木工事現場にてある程度実用されているだけあり,商用のソフトウェアとして提供されています.
本記事では,PhotoScanを使用しています.
3次元モデルの可視化
作成した3次元モデルをCloudCompareにて可視化し,動画にしました.
投稿
既にInstagamに投稿されているものから文体とハッシュタグを参考に,適当に作成します.SfM結果の動画を添付して投稿したものは以下のものとなります.
まとめ
本記事では,昨今の“インスタ映え”に一石を投じることを目的とし,3次元復元した🥞を添付する形で新たな“インスタ映え”の検証を行いました.
🥞以外のスイーツを用いた場合の検証が今後の課題となります.