2017年5月30日火曜日

OpenCVの次期リリース予定 (OpenCV Milestones)


はじめに

本家のページには、3.3のリリースが掲載されていますが、どこまで当てにできるか分かりません。

そういえば、前回3.2.0-rcに関して、2016年12月20日に備忘録に記載したら、2016-12-23に
3.2が正式リリースされ、一体3.2.0-rcとは何だったのかと思うことありました。

今でも3.2.0-rcのタグは残っています。



OpenPoseでいろいろな画像を試してみた。その3 (Detected bones of various images with OpenPose sample program. Part3)

1 逆光画像 ほぼシルエット

はじめに

前回人ではないものを対象に、OpenPoseでボーンの検出ができるか試してみた結果、ロバスト性が非常に高いことが確認できた。

今回は、人を対処として、検出対象としては難しい逆光の画像で試してみた。
さらには、入力画像として白黒画像を試してみたが、問題はあるが検出できることが確認できた。

言い換えると入力は輝度信号1chだけでも検出出きるため、入力を3chとして計算しているモデルは、冗長性があるのでは推測される。

検出結果画像を載せておく。なお出力は、自動的に1280x720にリサイズされる。

写真は、登録するとSサイズ(640x427)は無料で使用できる photoAC さんのものを使用している。


2 少し逆光
3 白黒のバストショット
4 白黒の全身画像



GPU版のTensorFlow r1.1 をNVIDIA Docker上にインストールした。(Install the TensorFlow r1.1 of GPU version on the NVIDIA Docker)

TensorFlowのバージョンTag

はじめに

Caffe をベースとした新たなアルゴリズムのインストールに支障がでたため、いま流行りのTensorFlowを試してみることにした。
githubをみると、r1.1が新しそうなので、r1.1のソース一式ダウンロードし、展開した。

展開したフォルダーの tensorflow/tools/docker フォルダーに、ドッカーファイルが格納されている。今回は、Dockerfile.gpu を使用し、Docker Imageを作成した。


Dockerfile.gpu 内容のメモ

・fileの中を見てみると、ubuntu 16.04 と CUDA 8.0、 cuDNN 5 をベースにしている

  FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04

・Jupyter notebook と TensorBoard 用にそれぞれ8888、 6666 ポートを使用するように設定されている。

・Dockerfileの最後の行にかかれている
  CMD ["/run_jupyter.sh", "--allow-root"]
は削除したほうがよい。

Dcokerコンテナ起動後、この記述のため、他のコマンドを試すために、いちいちJupyter notebookを殺さないといけない。

変更点

 tensorflowのGPU版のインストールは、PIPを使用し、下記のコマンドを実行する用に修正した。
オリジナルのままでは、バージョンのところが0になっている。

RUN pip --no-cache-dir install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.1.0-cp27-none-linux_x86_64.whl

Docker Build

ビルドは以下のコマンドで行う。

docker build -t hoge/tensorflow_r11 -f Dockerfile.gpu .

ビルド時間は記録していなかった。

その他

このTensorFlowをベースに他のアルゴリズムを試すために、

apt update && apt install -y --no-install-recommends libopencv-dev python-tk python-opencv

を追加したほうがよい。


 .whlでノーマル版をインストールしているので、実行時にCPUの最適化が利用できないとの警告が多数表示される。

>>> sess = tf.Session()
2017-05-31 13:44:43.467055: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-05-31 13:44:43.467078: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-05-31 13:44:43.467087: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-05-31 13:44:43.467095: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-05-31 13:44:43.467102: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.



2017年5月29日月曜日

SSD-Caffe を cuDNN Caffeにインストールを試みたが失敗した。(attempted to install SSD-Caffe on cuDNN Caffe but failed.)

はじめに

SSD (Single Shot MultiBox Detector) を cuDNN Caffe (ver 1.0) 上にインストールを試みたが、失敗した。その原因を備忘録として残しておく。

SSDに関しては、Takanori Ogata さんの SSD: Single Shot MultiBox Detector に概要が説明されている。

SSD-Caffeの取得

関連するファイル一式は、ここから取得する。中段右にある、Clone or Downloadのボタンを押し、
Download ZIPを押下すれば、一式のZIPファイルを取得できる。

上記ページにインストール方法の説明が記載されており、これに従えば問題なくインストール出きると推測される。(今は試してはいない)

cuDNN Caffe でSSD CaffeのExsampleを動作させてみる

cuDNN Caffe の環境に、上記ZIPファイルを展開する。
展開したら、学習済みデータ(93M)をここから取得する

展開すると
models/VGGNet/VOC0712/SSD_300x300
のフォルダーに、prototxt ファイルと caffemodel ファイルが格納されている

サンプルはプログラムは、exsamplesの下にいくつか準備されている

examples/ssd/ssd_pascal_video.py を使用すると、一緒に提供されていているビデオファイル( examples/videos/ILSVRC2015_train_00755001.mp4) 内のオブジェクトの検出と分類を行う

python examples/ssd/ssd_pascal_video.py

エラー

cuDNN Caffe 上で上記コマンドを実行すると、
model_libs.py がないとのメッセージが表示されエラーとなる。

ssd/python/caffe/model_libs.py を /opt/caffe/build/python/caffeに コピーして再び実行させると

net_spec.py 内の関数がおかしいとのエラーとなる。

根本的原因

SSD-Caffe は、BLVC Caffeのバージョン 1.0.0-rc3 をブランチしたものである。
これは、CMakeLists.txtをみれば分かる。

# ---[ Caffe version
set(CAFFE_TARGET_VERSION "1.0.0-rc3" CACHE STRING "Caffe logical version")
set(CAFFE_TARGET_SOVERSION "1.0.0-rc3" CACHE STRING "Caffe soname version")
add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION})

cuDNN Caffe 1.0 と SSD Caffe の python/caffe フォルダーを比較した結果以下のような差分が確認された。

左側 Caffe 1.0  右側 SSD Caffe (1.0.0-rc3 のブランチ)


これだけ、pythonのインタフェースに差があると、オリジナル上で動作させることは無理と考えられる。

注意

ブランチにmasterとあるが、これは単にCaffeをそのままブランチしたもんで、SSDではない



以上

2017年5月27日土曜日

OpenPoseのサンプルプログラムでいろいろな画像を試してみた。 その2 (drew a heat map of various images with OpenPose sample program)

1 例のマリオカート

初めに

OpenPoseを試せる環境ができたので、早速サンプルプログラムを試してみて、いろいろな画像を試してみた。

今回のサンプル tutorialの2_extract_pose_or_heatmat_from_image.bin は、ボーンの検出ではなく、ボーン検出の元になる特徴点のヒートマップを描画するものである。

使用例

使い方は、サンプル1と同じである。

./build/examples/tutorial_pose/tutorialの2_extract_pose_or_heatmat_from_image.bine.bin --image_path /opt/work/p1.png

前回同様に、準備したサンプル画像は、800x450画素に縮小している。 大きな画像だと検出時間が長くなる。

プログラムを実行させ、検出に成功すると元の画像にヒートマップが上書きされる。赤ほど可能性が高い点を示している。

終了するには、ESCキーを押せばよい。

検出例

説明をクリックすると別が面に大きな画像が表示されます

2 銅像
3 検出できないアニメパネル

CPU版の OpenPoseのビルドに失敗した。



準備されているサンプル画像 examples/media

はじめに

順序がGPU版と逆になるが、最初はOpenPoseをCPUのみの環境で動作させようと試みた。

OpenPoseのビルド手順を見ていたら、独自にCaffeが使用でき、なおかつMakefile.configのオプションに

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

などと期待をもたせる記述があった。

結果

残念ながら試みは失敗に終わった。OpenPoseは、Caffe上に独自のライブラリを構築しており、そこで明示的にCUDAの機能を利用している。
上記のオプションは機能してないようだ。

ソース(openpose-master/src/openpose/pose/poseExtractorCaffe.cpp)を見ると

error("ResizeAndMergeCaffe CPU version not implemented yet.", __LINE__, __FUNCTION__, __FILE__);

error("NmsCaffe CPU version not implemented yet.", __LINE__, __FUNCTION__, __FILE__);


などの記載があるので、今後様子を見てみる。

参考 GPU版

以下は、GPU版でのビルド中のメッセージである。

NVCC src/openpose/pose/bodyPartConnectorBase.cu
NVCC src/openpose/pose/poseRenderGpu.cu
NVCC src/openpose/experimental/face/faceRenderGpu.cu
NVCC src/openpose/experimental/hand/handRenderGpu.cu
NVCC src/openpose/core/nmsBase.cu
NVCC src/openpose/core/resizeAndMergeBase.cu

明示的にCUDAの機能を利用していることが確認できる。

GPU版 BVLC/Caffe を Docker 上でビルドした。(Installation of cuDNN Caffe on NVIDIA Docker)

はじめに

多くの新しいアルゴリズムがCaffeをベースにしているが、発表の時期により要求されるCUDAとcuDNNのバージョンの組み合わせが異なることが多いため、nVidia Dockerを使用することで、バージョンの違いを吸収できるようにした。

最初にオリジナルのBVLC/Caffeをビルドした。

Dockerfileの入手

BVLC/CaffeのDockerfileはここから入手できる

ビルドした時点では、
CUDA    8.0
cuDNN    6.0
ubuntu    16.04
をベースとしている。

取得しているCaffeは、Dockerfile内の CLONE_TAG で 1.0 と指定されている (5/29 追記)

そのままコピーし、Docker buildを行ったが、予想以上に時間(ざっくり1時間以上かかる)がかかった。

ビルド中 CUDA のアーキテクチャを指定しないため、多数の警告が表示される

nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).

再度ビルドするときは、時間短縮を含めて、CUDAのバージョン指定が必要か思われる。

ビルドした結果は、
/opt/caffe/build
に格納される。

テスト

正しくビルドできたかは、make runtest -j4 を実行し、PASSEDが表示されれば、問題ない。

[----------] Global test environment tear-down
[==========] 2101 tests from 277 test cases ran. (343557 ms total)
[  PASSED  ] 2101 tests.

メモ

nccl のソースを所得しビルドしているが、ncclは分散環境の協調の基盤であるため、個人には不要と思われるので削除したほうがよいかも


nccl: Optimized primitives for collective multi-GPU communication

注意点

Caffeの依存環境しているライブラリをインストールする最後の行で、
rm -rf /var/lib/apt/lists/*
が実行されている。
Dockerimageのサイズを小さくするためと思われれが、これにより、ライブラリ取得用のデータがすべて削除される。

この後、
apt install -y upzip などのインストールを試みると、
Unable to locate package unzip
のようなエラーとなり困ることとなる。

OpenPoseのサンプルプログラムでいろいろな画像を試してみた。(Detected bones of various images with OpenPose sample program)

1 例のマリオカート

初めに

OpenPoseを試せる環境ができたので、早速サンプルプログラムを試してみて、いろいろな画像でボーンが検出できるか試してみた。

OpenPoseのサンプルは、./build/examplesのフォルダーにいくつか提供されており、今回は、tutorialの1_extract_from_image.bin を試してみた

使用例

./build/examples/tutorial_pose/1_extract_from_image.bin --image_path /opt/work/p1.png

今回使用したサンプルは800x450画素に縮小している。大きな画像だと検出時間が長くなる。

プログラムを実行させ、検出に成功すると元の画像にボーンが上書きされる。終了するには、ESCキーを押せばよい。

検出例

説明をクリックすると別が面に大きな画像が表示されます

2 大道芸
3 人のパネル
4 アニメパネル
5 銅像

6 レゴ人形

7 トップハム・ハット卿とトーマス

8 アニメパネル2

9 アニメ壁画

2017年5月26日金曜日

既存の Caffe 上に OpenPose のみビルドした。 (built OpenPose on my own Caffe)

 
サンプル画像の検出結果

はじめに

OpenPoseは今月の初め普通のWebカメラの画像からボーンが取得できると、一部の界隈で話題になったので、試してみようとした。
当初、処理時間がかかってもCPUで何とかなるだろうと考え試してみたが、残念ながらこの試みは無駄に終わった。(後日簡単ないきさつをまとめる予定)
しかたがないのでGPUボードを新規に購入し、CUDA環境を整え、こちらも新規にGPU版のCaffeをビルドし、その環境の上に再度OpenPoseのビルドを試みた。

インストールの仕方は、ここを参考にした。それによれば、 install_openpose.sh を実行すればよいとのことだが、試してみるといくつか問題あった。結局、 install_openpose.sh の中の処理を手動で実行することで回避した。スクリプトの内部は以下手順がかかれている。

1 ubuntuのバージョンチェック
   14.04 と 15以降を別扱いに

2 CPUのコア数をチェック

3 Makefile.config.Ubuntu16.exampleをMakefile.configにコピーする。
  CUDA8が前提となっている。
  CUDA7の場合は、Makefile.config.Ubuntu16.cuda_7.example を使用することになる

4 コア数を指定し make allを実行

5 models ディレクトリに移動し、getModels.sh を実行し、モデルを取得する

  coco ディレクトリには、
  wget http://posefs1.perception.cs.cmu.edu/Users/tsimon/Projects/coco/data/models/coco/pose_iter_440000.caffemodel

  mpi ディレクトリには
  wget http://posefs1.perception.cs.cmu.edu/Users/tsimon/Projects/coco/data/models/mpi/pose_iter_160000.caffemodel

 によりモデルデータが取得される。

 モデルデータは、約200Mbyteぐらいあり、サーバが遅いのでそれぞれの取得に1時間以上かかる。

つまづいたポイント

オリジナルのMakefile.configでmakeを行うと

./include/openpose/core/netCaffe.hpp:8:25: fatal error: caffe/net.hpp: No such file or directory


/usr/bin/ld: cannot find -lcaffe
などのエラーが生じmakeに失敗する。

対策としてMakefile.configにCaffeのパスを追加すれば解決する。

INCLUDE_DIRS := /usr/local/include /usr/include/hdf5/serial /opt/caffe/build/include
LIBRARY_DIRS := /usr/local/lib /usr/lib /opt/caffe/build/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial


サンプルのプログラムに関しては次回に続く


環境

ubuntu 16.04  GPUボード GTX 1050Ti
CUDA 8.0 cuDNN 6

以上

2017年5月25日木曜日

人工知能学会全国大会(第31回)の気になった発表

はじめに

昨日立命館大学の発表で一部で話題になっている2017年度 第31回 人工知能学会全国大会(5/23-26 ウインクあいち)で気になったものをまとめた。
PDFファイルがダウンロードできるので、時間があれば見る

発表一覧はここ
twitterのハッシュタグ #jsai2017
 
ディープラーニングによる建物特性の抽出と台風被害想定の手法

絵コンテ識別のための深層畳み込みニューラルネットワークの進化的獲得

深層学習による胸部X線写真からの診断補助

クックパッドにおけるDeep Learningを用いた料理画像判別の取り組み

家庭やオフィス内の動作認識用大規模動画データセットの構築

アメリカンフットボールにおけるオフェンシブライン選手の動作認識

地球観測衛星画像上で自動検知した熱源の深層学習による自動種別判定

深層特徴量を用いた類似間取り図検索

DCGANの作る仮想世界と現実空間のMap

車いすセンシングと畳み込みニューラルネットを利用した路面特徴の分類と評価

Deep Learningでの地図タイル活用の検討 5/30 追加

補足

twitterで知ったのだがManga109というサイトがあるとのこと

日本漫画のメディア処理の学術研究使用のために,東京大学 大学院情報理工学系研究科 電子情報学専攻 相澤・山崎研究室によりとりまとめらた漫画のデータセット
利用には申請が必要。

以上

2017年5月15日月曜日

CPU版のCaffe を ubuntu 16.04 でビルドした。 (Installation of CPU-only Caffe on ubuntu 16.04)

はじめに

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。

メインマシンのノートPCが、CUDAに対応していないため、CPU版でcaffeをビルドした。
なお、試したソースは、2107/5/13日なので、今後変わる可能性もある

準備

必要なライブラリを事前にインストールし、ここからソースをダウンロードする。

展開後、ディレクトリーを移動する。
そのままmakeを行うと、hdf5関連のエラーが生じるので下記のように修正する

Makefile
181行目
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

Makefile.config
94行目
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

修正後 make -j4を実行し、makeが成功すれば、次に、make runtestを行う

[----------] Global test environment tear-down
[==========] 1106 tests from 150 test cases ran. (58161 ms total)
[  PASSED  ] 1106 tests.

が表示されれば、問題なくmakeができている。

pycaffeの作成

sudo pip install setuptools
pip install --upgrade pip
sudo pip install -r python/requirements.txt

を実行。

最後に、
echo export PYTHONPATH=/home/hoge/caffe-master/python:$PYTHONPATH >> /home/hoge/.bashrc
でパスの設定を行う

pythonを起動し
import caffeが成功すればOK

以前はpythonでimportするときに、
libdc1394 error: Failed to initialize libdc1394
が表示されたが、いまは解決している。

以上

2017年5月14日日曜日

Dlib 19.04 を ubuntu 16.04 上でビルドした。(built Dlib 19.04 on ubuntu 16.04.)

はじめに

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。

Dlib関連は、なくなったHDD内にいくつかのメモを書いてあったが、バックアップや備忘録もなかったので、なくなく手探りで再構築している。

Dlibに関しては、2016アドベントカレンダー向けに作成した記事
OpenCVで顔向き推定を行う
で触れている。

ソースの取得とビルド

http://dlib.net/のページに移動

左メニュー下 ダウンロードボタンを押す
dlib-19.4.tar.bz2をダウンロード 9.0M

ホームに展開後、ディレクトリーに移動し、
cmake ..
cmake --build . --config Release
を実行する。

サンプルプログラムのコンパイルと実行

exsamplesのフォルダーに移動し、定番の顔検出 face_detection_ex.cpp を試してみる

コンパイルの仕方は、本家のページに、
g++ -std=c++11 -O3 -I.. ../dlib/all/source.cpp -lpthread -lX11 example_program_name.cpp

と書かれているが、実行すると
../dlib/all/../gui_widgets/nativefont.h:27:22: fatal error: X11/Xlib.h: そのようなファイルやディレクトリはありません
とエラーとなる。

対処
ubuntu16.4には、x11の開発環境がないため、
sudo apt-get install libx11-dev
を実行し、再度コンパイルを試してみると今度はうまくビルドできた。

exsamples/facesにサンプル画像が格納されているので、
./a.out faces/2009_004587.jpg を実行すると、

processing image faces/2009_004587.jpg

exception thrown!
Unable to load image in file faces/2009_004587.jpg.

が表示される。

googleで調べてみると、
-DDLIB_JPEG_SUPPORT と -ljpegのオプションが必要とのこと

最終的には、
g++ -std=c++11 -O3 -I.. ../dlib/all/source.cpp -lpthread -lX11 -ljpeg face_detection_ex.cpp -DDLIB_JPEG_SUPPORT
を行うことでaoutが作成され
./a.out faces/2009_004587.jpg を実行すると画面に検出結果が表示される。

以上

OpenCV 3.1.0 + contrib 3.1.0 をubuntu 16.04 64bitでビルドした (built OpenCV 3.1.0 with contrib 3.1.0 on ubuntu 16.04 64 bit)

はじめに

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。OpenCV関連は、自分の備忘録を手がかりに、再構築を行っている。

14.04 上では、問題なくビルドできた(Ubuntu 14.04上でOpenCV 3.1.0 + Contrib 3.1をビルドしてみた )が、16.04では、2点の問題が生じてしまったので、対処方法を残しておく

ビルド手順は、Raspberry Pi 2 で OpenCV 3.1.0 + contrib 3.1.0 をビルドした を参考としている。

修正点


/home/opencv/opencv_contrib-3.1.0/modules/tracking/include/opencv2/tracking/onlineMIL.hpp:57:22: error: expected unqualified-id before '>' token
 #define  sign(s)  ((s>0) ? 1 : ((s<0) ? -1 : 0))
のエラーに対しては、

opencv_contrib-3.1.0/modules/tracking/include/opencv2/tracking/onlineMIL.hpp
の57行目の定義をsignから別名に変更し

opencv_contrib-3.1.0/modules/tracking/src/onlineMIL.cpp
の310,339行目のsignを変更した名前とする


/home/opencv/opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory
のエラーに対しては、ファイル

opencv-3.1.0/modules/python/common.cmake
の最後に下記、2行を追加する

find_package(HDF5)
include_directories(${HDF5_INCLUDE_DIRS})

参考

1 まっさらなUbuntu16.04LTSにOpenCV3.1とopencv_contribをインストール
2 Opencv build for python crashes on link to hdf5.h on ubuntu 15.10

OpenCV 2.4.13.2をubuntu 16.04 64bitでビルドした (built OpenCV 2.4.13.2 on ubuntu 16.04 64bit)

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。OpenCV関連は、自分の備忘録を手がかりに、再構築を行っている。

ソースは、ここからダウンロードし展開を行う。

手順的には、
Raspberry Pi 3 で OpenCV 2.4.13.1 をビルドした
に記載した手順で問題なくビルドできる。

注意 -DENABLE_VFPV3=ON -DENABLE_NEON=ON はARM向けなので使用しない


ビルド中にtbb関連で赤い文字のメッセージが表示されるが、tbbが動作しているので気にしない。
ソースに添付されているtbbの3rdparty/tbb/CMakeLists.txtを見ると、

set(tbb_url "http://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb43_20141204oss_src.tgz")と定義されている。

tbbを自分で準備すれば、新しいバージョンを使用しビルドするようなので、別の機会に試してみる。

以上