Power8上のLinuxでzshコンパイル

ソースコードを落としてきて普通に
./configure
make
make install

しようとすると,
configure: error: cannot guess build type; you must specify one
と表示されて ./configure の段階で失敗する.

この場合,ビルド先のアーキテクチャがわかってないのが原因なので,
./configure --build=ppc64-linux
という風に指定するとうまくいく.

OpenPoseの使い方メモ

OpenPoseとは

OpenPoseはDeep Learningを使って単眼カメラから人体姿勢を推定するライブラリで,CVPR2017でRealtime Multi-Person 2D Pose Estimation using Part Affinity Fieldsというタイトルで発表されたもの.

OpenPose

公式ページの情報を要約すると,画像,ビデオ,webcam,IPカメラから18点のキーポイントが検出可能.各種フォーマットで結果を保存可能.

他にも,左右の手から21点,顔から70点のキーポイントを検出するオプションもある.

これらはUbuntu,Windows,Nvidia TX2で動作する.

 

というわけで,色々な用途に使えるので,よく使うオプションのメモ.

実行方法

例えば,USBカメラを使う場合は以下の通り.

./build/examples/openpose/openpose.bin

ディレクトリ内の画像を一括で処理する場合

./build/examples/openpose/openpose.bin -image_dir /path/to/image

ビデオに対して処理する場合

./build/examples/openpose/openpose.bin -video /path/to/vieo

IPカメラの場合

./build/examples/openpose/openpose.bin -ip_camera (RTSPかHTTPでURLを指定)

姿勢推定結果の画像を保存したい

以下のオプションを追加

-write_images /path/to/directory

元画像を保存したい

以下のオプションを追加

-render_pose 0 -write_images /path/to/output_directory

ちなみに,-render_pose 1 でCPUを使った描画になり,デフォルトの -render_pose 2 よりも高速.

姿勢推定結果の座標値を保存したい

以下のオプションを追加

-write_keypoint /path/to/output_directory

デフォルトではyml形式で保存される.ファイルは,-write_imageをした時の画像と同じ番号が割り振られるので,画像とほぼ同じファイル名で1画像1ファイルで保存されていく.

evervimでリストの入れ子が出来るようにした

vimにはEvervimというプラグインがあり,Evernoteのノートをvimから直接編集できます.
しかも,markdownを使って書くことができます(要pythonのmarkdownモジュール).

が,しかし

以前使っていた時に,保存して再度開くと,書いたものが消えている,ということが何度かあったので,しばらく使っていませんでした.

今回,そのバグフィックスをしました.
調べてると幾つか問題がありましたが,その一つが,ulやolのリストを入れ子にすると,再度開いた時に,入れ子構造が壊れて,入れ子の上の階層に戻って以降が消える,というもの.

evervimのコードを見ていくと,Evernote用のXML形式であるENMLをパースしてmarkdownへと変換する関数が,入れ子に対応していなかったのを発見.
修正してプルリクエストしておきました.

VimRepress導入してみた

VimRepressというvimプラグインがあって,vimからwordpressに投稿できる.
今回,ブログ更新のために導入してみた.

markdownと組み合わせると,ブログ書きたくなった時に

  1. vimを起動
  2. :BlogNew
  3. ブログをMarkdownで書く
  4. :BlogSave publish

でサクッとブログ更新できるので超捗る.
今までWordPress開いて記事書いて…ってやるのが面倒でブログ記事が滞っていたけどこれなら….

色んなサイトで紹介されているので参考まで.

シェル上でsleep

sleep というコマンドがある.
これは,一定時間処理をストップさせ,その後継のコマンドを実行するもの.
引数で時間(秒)を指定できる.
例えば,

sleep 100
echo "wake up"

で,100秒間スリープさせることができる.

その引数を調べていたら,GNU sleepの場合 smhd という単位指定ができることを知った.

sleep 20m
echo "wake up"

という風に単位を追加すると,上の例だと20分間スリープさせることができる.

やっぱりダメかも

昨日RAIDが死んで,色々やった結果復活したと思ったが,やはりいくつかファイルが壊れていたようだ.

特に痛いのが,RAID上に作った大きな仮想マシン用ディスクイメージ.
どうやらこれがダメージを受けていたようで,仮想マシンのファイルシステムがおかしくなっていた.

gitのリポジトリ内のファイルがおかしくなっていたのは痛い.
仕方ないのでマウントを外した上で fsck をかけてみている.

RAIDが死んでも一旦挿しなおしてみよう

今日RAID 6で運用しているRAIDのHDDが3つ同時にエラーランプ点灯した.
RAID 5ではHDDが2台同時に壊れたらアウト,RAID 6では3台同時に壊れたらアウトなので,かなり焦ったが,一旦取り出して挿し直したら復活…(?)

一応データは大丈夫っぽいけど,念の為にバックアップを取って,エラーが出てたHDDを取り替えて再構築しよう.

しかし容量が大きすぎてバックアップ取るのに時間がかかる….

avastが悪かった(?)ようだ

自宅のWindows7が入っているPC,しょっちゅう起動時にブルー・スクリーンで落ちて,再起動→スタートアップ修復の繰り返しだった.

これまでアンチウイルスソフトとして,無料のAvast!を入れていたが,試しにアンインストールしてみたら,上記症状がでなくなった(今のところ).

代わりにMicrosoft謹製のMicrosoft Security Essentialsを入れてみた.

しばらくこれで様子を見てみる.

Macでtmuxを使うときのメモ

Macには,pbcopy/pbpasteという標準入力をクリップボードへコピー/クリップボードの内容を標準出力へ出すコマンドがある.
とても便利で,次のように使う.

# hoge.txtのうち,行頭が「abc」以外の行をコピー
cat hoge.txt | grep -v ^abc | pbcopy

こうすることで,Command+vで他のプログラム等に貼り付けることができる.
例えば,ブログにプログラムのコードや実行結果を貼り付ける時などに役立つ.

逆に,Webからコピったものをコマンドラインプログラムの入力として使いたい場合,

# クリップボードの内容をソートして最後の20行を出力
pbpaste | sort | tail -20

という風に使える.

が,問題があって,tmuxを使っている場合うまく動かない.
そこで,reattach-to-user-namespaceというのを使う.
詳しくは

X環境のクリップボードやOS Xのペーストボードとtmuxのバッファを連携する方法

あたりを参照.

ざっくりいうと

git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git
cd tmux-MacOSX-pasteboard
make
mkdir -p /usr/local/bin
cp reattach-to-usernamespace /usr/local/bin

しておき,tmuxの設定ファイル, ~/.tmux.confに以下を追記する.

# tmuxでコピーが働かない問題
set-window-option -g automatic-rename off
set-option -g default-command "reattach-to-user-namespace -l zsh"
set-window-option -g automatic-rename on

ちなみに,/usr/local/binにPATHを通しておくこと.

これで,tmux環境下でもpbcopy/pbpasteが利用できる.

Metafile to EPS Converter

これまで論文に図を乗せるときは,PowerPointで作ってwmf2epsを使って変換していた.
wmf2epsの詳細についてはこちらのページが参考になる.

これを入れると,PowerPointで作った図をコピー&ペーストするだけでemfかwmfファイルが作れ,そこからボタンひとつでepsに変換できる.

が,Windows 8にしてから使えなくなった.ドライバがWindows 7までのようで.

そこで途方に暮れていたが,先日Metafile to EPS Converterというものを見つけた.

これも同じぐらい簡単で,ほぼコピー&ペーストでepsファイルが作れる.