vzな尺のblog

〜まだ 1 epoch 目〜

イメージ・セグメンテーション

Image segmentationで参考になったリンク。

Preferred Networksの動画(Saitohさん)

www.youtube.com

わかりやすい。

Negative Mindの人のブログ

FCN (Fully Convolutional Network):ディープラーニングによるSemantic Segmentation手法 | NegativeMindException

ブログとても参考になる。

TensorFlow 2.0のチュートリアル

Image segmentation  |  TensorFlow Core

  • tf.Kerasのサンプルコードがある。Unetの形。
  • Encoder部分はKerasの学習済みMobileNetから転移学習してる
  • このサンプルはMobileNetだけど他のKeras学習済みモデルを使う時も参考になる

SegNet

SegNet本家(Caffe)

SegNet GitHub - alexgkendall/caffe-segnet: Implementation of SegNet: A Deep Convolutional Encoder-Decoder Architecture for Semantic Pixel-Wise Labelling

SegNetのPyTouch実装

GitHub - delta-onera/segnet_pytorch: SegNet implemetation using PyTorch

色々なセグメンテーションのPyTouch実装

GitHub - meetshah1995/pytorch-semseg: Semantic Segmentation Architectures Implemented in PyTorch

Windows10 ライセンス認証情報の表示/編集

slmgr.vbs (ライセンスマネージャ)の起動

slmgr.vbsを実行する。オプションなしだとヘルプが表示される。

> rem 通常は以下でGUI表示される。
> slmgr.vbs

> rem 上記でダメな場合(拡張子関連付けがされていない場合)
> wscript c:\Windows\System32\slmgr.vbs 

> rem CUIで結果を表示したい時
> cscript c:\Windows\System32\slmgr.vbs 

※以降は便宜上CUIにて説明。

ライセンス情報表示(/dlv)

> rem 以下で現在のライセンス情報表示(表示内容は*でマスク)
> cscript c:\Windows\System32\slmgr.vbs  /dlv

Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

ソフトウェア ライセンス サービス バージョン: 10.0.18362.356

名前: Windows(R), Professional edition
説明: Windows(R) Operating System, RETAIL channel
ライセンス認証 ID: ********-****-****-****-************
アプリケーション ID: *******-****-****-****-***********
拡張 PID: *****-*****-000-000000-00-****-*****.0000-******
プロダクト キー チャネル: Retail
インストール ID: 36**750****505****0*0*21*19****755***590**8932****842***04*
使用ライセンス URL: https://activation-v2.sls.microsoft.com/SLActivateProduct/SLActivateProduct.asmx?configextension=Retail
検証 URL: https://validation-v2.sls.microsoft.com/SLWGA/slwga.asmx
プロダクト キーの一部: 3V66T
ライセンスの状態: ライセンスされています
残りの Windows 猶予期限リセット可能回数: 1001
残りの SKU 猶予期限リセット可能回数: 1001
信頼された時間: 2019/09/19 11:37:14

> rem 以下のように all をつけると、全種類のライセンス情報を表示
> cscript c:\Windows\System32\slmgr.vbs  /dlv  all

~~ずらずら-と表示される。~~
~~ Pro とか Education とか Workstation とか ~~
~~ VOLUMEライセンス とか OEM とか Retail とか ~~ 

新たにライセンスを認証する

~そのうち追記する予定~

認証済みのライセンスを削除する

~そのうち追記する予定~

ー以上ー

GPUマシン環境整備3 〜 外出先MacBook ⇨VPN ⇨自宅GPUマシン使用

目的

外出先から自宅GPUマシンを使えるようにする。 ※VPNは別途設定済み。

SSHのサーバとtmuxを入れる

sudo apt install -y openssh-server
sudo apt install -y tmux


クライアント側(Mac)で古い鍵を削除

sshdを再インストールするとssh-keygenでキーが再生成されるので、前のキーが登録されているクライアントから接続すると 「鍵が変わってるよ」旨のエラーがでる。以下のようにknown_hostsからホストのキーを削除することで対処。
(本当は鍵を取っておいて再利用するべきなのでしょうが・・・)

ssh-keygen -R example.com


ホームディレクトリを共有(samba)にする

ubuntu標準のネットワーク共有フォルダを設定。

  • Nautilusでプロパティ→ローカルネットワーウ共有 で設定。(ゲストはなし)
  • samba用パスワード設定
$ sudo smbpasswd -a hogeuser


VSCodeでRemoteDevelopemntを使う

Visual Studio Code Insiders + Remote Development Extensionを入れると、あたかもローカルと同じようにリモートを操作できるようになる。 とても便利。

〜クライアント側の作業です〜

  • 現時点でRemoteDevelopmentするにはは、vscodeの通常版ではなく、Insiders版が必要なようです。
    Download Visual Studio Code Insiders からDLして入れます。

  • vscode(insiders版。以下vscode)を立ち上げ Remote Development Extension Pack」をインストール
    (このPackに、Remote-SSH / Remote-Containers / Remote-WSL 等が含まれる) f:id:vz-shark:20190902084859p:plain

  • 左下端のアイコン→Remote-SSH: Connect to Host.. を選択。
    SSHサーバを指定してログイン名+パスワード等を入れて接続。 f:id:vz-shark:20190902084941p:plain
  • 成功すると別Windowが開き、リモートの操作ができるようになります。以下のようなかんじ。
    リモートファイルがexploerに表示され、リモートデバックが行える。 f:id:vz-shark:20190902094206p:plain

jupyterをリモートアクセスできるようにする

デフォルトだと、ローカルからしかアクセスできないようなので変更する。 バインドを、127.0.0.1→0.0.0.0にする

$ ipython

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: [パスワードを入力]
Verify password: [パスワードを再度入力]

Out[2]: 'sha1: [ハッシュ化されたパスワード]'  
  • ~/.jupyter/jupyter_notebook_config.py を編集。
    存在しない場合は、$ jupyter notebook --generate-configで生成。 以下の設定を追加。
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'sha1:XXXXXXX' # 先ほどのハッシュ値

結論

上記、ssh + tmux + samba + vscode(remote development) + jupyter で快適。
リモートデスクトップも試しましたが、反応速度等がきになり使ってません。

番外編(リモートデスクトップ関係)

リモートデスクトップ系もいくつか試してみましたが使ってません。上記結論通りです。 以下は、試したことのメモ。

VNC(Vino)

  • 画面共有を有効にする アクティビティ→設定→共有→画面共有を「アクティブ」にする

  • VNCの 暗号化通信を無効にする。Mac標準のクライアントでは、暗号化未対応のため「互換性のないバージョン〜」というエラーになる。また暗号化無しの方が反応速度良い。

$ gsettings set org.gnome.Vino require-encryption false 

※若しくは ubuntuソフトウェアから「Dconf Editor」をインストールしてGUIから操作。

  • ubuntuにログインした状態でMacから接続。
    ubuntu側はログイン状態にしないと繋がらない。 結構、表示の遅延がきになる・・・



MacVNCクライアントは、Nulana - Remotix for Macが体感的に早いが$50とお高い。Download VNC Viewer for macOS | VNC® ConnectはフリーだがMac標準クライアントより機能は充実、体感速度は変わらない。

XRDP

上記vncが体感速度がイマイチなのでRDPを使ってみる。

#インストール
$ sudo apt-get -y install xrdp

#new_cursorsの無効化
sudo sed -e 's/^new_cursors=true/new_cursors=false/g' \
 -i /etc/xrdp/xrdp.ini
 
#xrdpサービスの再起動
sudo systemctl restart xrdp
 
#xsessionファイルの作成
D=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
cat <<EOF > ~/.xsessionrc
 export GNOME_SHELL_SESSION_MODE=ubuntu
 export XDG_CURRENT_DESKTOP=ubuntu:GNOME
 export XDG_DATA_DIRS=${D}
 export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
EOF
 
#Authentication Requiredダイアログの回避
cat <<EOF | \
   sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla
 [Netowrkmanager]
 Identity=unix-user:*
 Action=org.freedesktop.color-manager.create-device
 ResultAny=no
 ResultInactive=no
 ResultActive=yes
EOF
 
sudo systemctl restart polkit
  • ubuntu側をログオフした状態でMacから接続。 セッションが先優先となるようで、後にセッション開始しようとすると繋がらない。
    体感速度は大分いい感じ・・・

Mac側クライアントは、「Microsoft Remote Desktop 10」を使用。

GoogleChromeリモートデスクトップ

最後に、googleリモートデスクトップも試してみる。

リモートデスクトップ系では、googleが一番反応速度、機能面で使いやすかったです。



ー以上ー

GPUマシン環境整備2 〜 cuda / pytorch / tensorflow / chainer / jupyter を使えるようにする

目的

f:id:vz-shark:20190824174907p:plain

Cuda

公式CUDA Toolkit 10.2 Download | NVIDIA Developer をみると、cuda10からnvidiaリポジトリからインストールできるようになったのでこれを使う。 以下の説明の通りにインストールで得に問題なし。以前のnouveauの苦労はない。すばらしい。
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=debnetwork

# CUDAインストール
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
$ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
$ sudo apt-get -y update
$ sudo apt-get -y install cuda

#再起動
$ reboot

#動作確認
$ nvidia-smi

Anaconda

公式からインストーラダウンロードしてインストール。
https://www.anaconda.com/

$ wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh
$ sh Anaconda3-2019.07-Linux-x86_64.sh

Pytorchの仮想環境構築

(base) $ conda create -y --name pytorch python=3.7 jupyter
(base) $ conda activate pytorch
(pytorch) $ conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorch
(pytorch) $ conda deactivate

Tensorflow-gpuの仮想環境構築

(base) $ conda create -y --name tf-gpu python=3.7 jupyter
(base) $ conda activate tf-gpu
(tf-gpu) $ conda install -y tensorflow-gpu keras
(tf-gpu) $ conda deactivate

Chainerの仮想環境構築

(base) $ conda create -y --name chainer python=3.7 jupyter
(base) $ conda activate chainer
(chainer) $ conda install -y chainer
(chainer) $ pip install chainerui
(chainer) $ conda deactivate

Jupyterにカーネルを追加

jupyterで仮想環境のカーネルを追加して切り替えられるようにする。

#pytorchのカーネル追加
(base) $ conda activate pytorch
(pytorch) $ ipython kernel install --user --name=pytorch --display-name=pytorch
(pytorch) $ conda deactivate

#tensorflow-gpuのカーネル追加
(base) $ conda activate tf-gpu
(tf-gpu) $ ipython kernel install --user --name=tf-gpu --display-name=tf-gpu
(tf-gpu) $ conda deactivate

#chainerのカーネル追加
(base) $ conda activate tf-chainer
(chainer) $ ipython kernel install --user --name=chainer --display-name=chainer
(chainer) $ conda deactivate

#カーネルの一覧を表示
(base) $ ipython kernelspec list
Available kernels:
  chainer    /home/ma/.local/share/jupyter/kernels/chainer
  pytorch    /home/ma/.local/share/jupyter/kernels/pytorch
  tf-gpu     /home/ma/.local/share/jupyter/kernels/tf-gpu
  python3    /home/ma/anaconda3/share/jupyter/kernels/python3


コマンドのメモ


jupyterのカーネル

#一覧
$ ipython  kernelspec list

#追加(カレントの環境が追加される)
$ conda activate test
$ ipython  kernel install --user --name=test --display-name=test

#削除
$ ipython  kernelspec uninstall test


conda 仮想環境

#一覧
$ conda env list
$ conda info -e

#作成
$ conda create --name test python=3.7 jupyter

#削除
$ conda remove --name test --all



ー以上ー

GPUマシン環境整備1 〜 Ubuntu18.04へ移行(再インストール)

また再インストールしそうな気がするのでメモ。

Ubuntu18.04インストール

  • Homepage | Ubuntu Japanese Teamの日本語Remixを利用
  • 全てデフォルト値(標準構成)でインストール
  • まずは、sudo apt update -y && sudo apt upgrade -yする。

grub設定変更

  • 起動時にコンソールログがズラズラでるようにする(quiet splashをやめる) 。見た目がアレだけど問題発生時に備えておく。
  • grubのメニューがでるようにする(GRUB_TIMEOUT_STYLEを変更)
  • nomodesetは今回はなくて大丈夫だった。
  • タイムアウトも短めに変更(10秒→5秒)
#バックアップ
$ sudo cp /etc/default/grub /etc/default/grub.bak

#編集
$ sudo vi /etc/default/grub

#変更差分
$ diff -u /etc/default/grub.bak /etc/default/grub
 GRUB_DEFAULT=0
-GRUB_TIMEOUT_STYLE=hidden
+GRUB_TIMEOUT_STYLE=menu
- GRUB_TIMEOUT=10
+ GRUB_TIMEOUT=5
 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
-GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
+GRUB_CMDLINE_LINUX_DEFAULT=""
 GRUB_CMDLINE_LINUX=""

#grupのブートローダー本体のアップデート
$ sudo update-grub

#再起動
$ sudo reboot

RTCローカルタイム設定

vz-shark.hatenablog.com

# RTCをローカルタイムとして扱うように設定
$ timedatectl set-local-rtc 1


シャットダウン時「Stopping Job 〜」で90秒待たされる件

長いので30秒未変更する。

$ sudo vi /etc/systemd/system.conf 

#DefaultTimeoutStopSec=90s
DefaultTimeoutStopSec=30s


Win+Tabで「アプリ内Window切替」に変更する

Macのように、Alt+Tabでアプリ切替、Win+Tabでアプリ内Window切替 にする。
※PCの場合は、Optionキーがないので変わりにWinキーを割り当てる。
Linux系では、WinキーはSuperキーとして扱われる。

  • Dconf Editerを起動。アプリケーション→Dconf Editer 。 または、$ dconf-editor 
  • org/gnome/desktop/wm/keybindings に移動

  • switch-applications から Super-Tab削除。
    ['<Super>Tab', '<Alt>Tab'] から
    ['<Alt>Tab']に変更。

  • switch-applications-backword から Shift-Super-Tab削除。
    ['<Super>Tab', '<Shift><Alt>Tab'] から
    [<Shift>'<Alt>Tab']に変更。

  • switch-group にSuper-Tab割当。
    ['<Super>Above_Tab', '<Alt>Above_Tab'] から
    ['<Super>Tab', '<Alt>Above_Tab'] に変更。

  • switch-group-backword に にShift-Super-Tab割当。
    ['<Shift><Super>Above_Tab', '<Shift><Alt>Above_Tab'] から
    ['<Shift><Super>Tab', '<Shift><Alt>Above_Tab'] に変更。


gdriveのマウント

ubuntu標準(設定→オンラインアカウント→googleのファイル)は何故か遅すぎて使えないので、
GitHub - astrada/google-drive-ocamlfuse: FUSE filesystem over Google Driveを使う。

  • インストール
sudo add-apt-repository -y ppa:alessandro-strada/ppa
sudo apt-get update -y 
sudo apt-get install -y google-drive-ocamlfuse
  • 以下のようにマウントポイントを引数にする。途中でブラウザによるoauthが入る。
mkdir ~/gdrive
google-drive-ocamlfuse ~/gdrive  


TimeShift でバックアップ設定

MacのTimeMachineのようなことができるらしい
https://teejeetech.in/2019/08/11/timeshift-v19-08/

  • インストール
sudo add-apt-repository -y ppa:teejee2008/timeshift
sudo apt update -y
sudo apt install -y timeshift
  • 設定
    基本的にWizardに従う。ホームディレクトリはデフォルトではバックアップされないので以下を行う。
    • TimeShift→Setting→Filters に進む。
    • バックアップ対象のホームディレクトリを選択する。(All Includeを選択)
    • ホーム以下にあるバックアップしたくないディレクトリを除外に追加。
      (以下では ~/gdrive を対象外にする)
      • Add Folderをクリックして ~/gdrive を選択する。
      • 「±」 の選択で「−」を選ぶ
      • Summaryでフィルタ一覧を確認。いろいろ試したら上優先のようです。
        うまくフィルタの順番が入れ替わらない時は、ホームディレクトリの選択を All Include / All Exclue を一度切り替えるとうまく反映されました。


git初期設定

いつも再インストールした後でやり方忘れて調べるるのでメモ。

  • インストール
sudo apt install -y git
  • ユーザ名とメアドとエディッタ
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git config --global core.editor vi
  • github等のユーザー名やパスワードを毎回聞かれないようにする
    Macのキーチェインみたいな感じ・・・。でも平文。暗号化する方法も調べたらあったが今回はここまで・・・・
git config --global credential.helper store
  • 設定の確認
git config --list
git config --global user.name



ー以上ー

Ubuntuでgoogle drive をマウントする

google drive をマウントする

Ubuntu標準でgoogleドライブをマウントする機能(設定⇛オンラインアカウント⇛googleの「ファイル」を「ON」する)があるが遅過ぎてダメなので以下を使う。
GitHub - astrada/google-drive-ocamlfuse: FUSE filesystem over Google Drive

#インストール
$ sudo add-apt-repository ppa:alessandro-strada/ppa
$ sudo apt-get update
$ sudo apt-get install google-drive-ocamlfuse

#マウント
$ mkdir ~/gdrive
$ google-drive-ocamlfuse ~/gdrive
 〜ここでブラウザでoauth認証して暫く待つ〜
Access token retrieved correctly.

#マウントできたか確認
$ ls -l ~/gdrive

環境

Ubuntu18.04LTS