POSTS
TensorFlow 1.3/AMD Radeon Vega 56/ROCm上でStyleTransfer
Introduction
Source | Style Transfer |
---|---|
今回は画像生成や変換の分野で人気の、StyleTransferをTensorFlow(ROCm) on Radeon Vega 56で動かしてみます。
使用フレームワークは、ROCm-TensorFlow1.3, ROCm1.7.137を使用します。 Logan Engstromという方のリポジトリからFast StyleTransferのソースを流用します。
https://github.com/lengstrom/fast-style-transfer.git
Setup TensorFlow on Radeon GPU
近日、HIP-TensorFlow1.0.1から1.3へアップデートされ、同時に名前がのHIPという部分が取れてリポジトリも別になり、旧HIP-TensorFlowのリポジトリが見えなくなっています。旧HIP−TensorFlowはこちらのリポジトリですがすでにリンク切れになっています。 https://github.com/ROCmSoftwarePlatform/hiptensorflow
新しいTensorFlowはなんと呼べば良いかわからないので、ROCm−TensorFlowという風に呼びたいと思います。 https://github.com/ROCmSoftwarePlatform/tensorflow
以下のコマンドを叩くと、Python3上にROCm-TensorFlow1.3を簡単に構築できます。なおOpenCV3.3.0、ビデオコーデック、CythonやPillowイメージ等々も含まれます。
curl -sL http://install.aieatr.com/setup_rocm_tensorflow_p3
[Ubuntu16.04用]
Fast Style Transfer
まずは、fast-style-transferをクローンし、必要なパッケージをインストールします。 内部に動画変換用モジュールをロードしている部分があるので、moviepyをpip3経由でインストールが必要になります。
git clone https://github.com/lengstrom/fast-style-transfer.git
sudo pip3 install moviepy
gitリポジトリのReadmeに書いてある、学習済みモデルを持ってきます。 Google Drive - udnie.ckpt
stylesディレクトリを作って、
mkdir -p fast-style-transfer/styles
fast-style-transfer/styles/udnie.ckpt として設置します。
実行
fast-style-transfer/examples/content以下にテスト用の画像が含まれますので、それを学習済みネットワークのudnie.ckptと一緒に指定して実行します。
python3 evaluate.py --checkpoint styles/udnie.ckpt --in-path examples/content/chicago.jpg --out-path output.jpg --allow-different-dimensions
johndoe@sonoba:~/projects/fast-style-transfer$ python3 evaluate.py --checkpoint styles/udnie.ckpt --in-path examples/content/chicago.jpg --out-path output.jpg
2018-04-16 00:42:46.922074: W tensorflow/stream_executor/rocm/rocm_driver.cc:405] creating context when one is currently active; existing: 0x7f6d67384a80
2018-04-16 00:42:46.922178: I tensorflow/core/common_runtime/gpu/gpu_device.cc:907] Found device 0 with properties:
name: Device 687f
AMDGPU ISA: gfx900
memoryClockRate (GHz) 1.622
pciBusID 0000:04:00.0
Total memory: 7.98GiB
Free memory: 7.73GiB
2018-04-16 00:42:46.922194: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929] DMA: 0
2018-04-16 00:42:46.922200: I tensorflow/core/common_runtime/gpu/gpu_device.cc:939] 0: Y
2018-04-16 00:42:46.922208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:997] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Device 687f, pci bus id: 0000:04:00.0)
2018-04-16 00:42:47.295424: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
2018-04-16 00:42:47.591796: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
2018-04-16 00:42:47.690422: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
2018-04-16 00:42:47.746517: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
2018-04-16 00:42:47.753080: I tensorflow/core/kernels/conv_grad_input_ops.cc:858] running auto-tune for Backward-Data
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
2018-04-16 00:42:47.835384: I tensorflow/core/kernels/conv_grad_input_ops.cc:858] running auto-tune for Backward-Data
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
2018-04-16 00:42:47.897467: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
以下に出力されます。 fast-style-transfer/output/output.jpg
違うスタイルにしたい場合は、 Google Drive - wave.ckpt からwave.ckptなどの別の学習済みネットワークを持ってきて、
python3 evaluate.py --checkpoint styles/wave.ckpt --in-path examples/content/chicago.jpg --out-path output.jpg --allow-different-dimensions
として指定するのみです。
johndoe@sonoba:~/projects/fast-style-transfer$ python3 evaluate.py --checkpoint styles/wave.ckpt --in-path examples/content/chicago.jpg --out-path output.jpg
2018-04-16 00:43:40.259885: W tensorflow/stream_executor/rocm/rocm_driver.cc:405] creating context when one is currently active; existing: 0x7f37ff404050
2018-04-16 00:43:40.259977: I tensorflow/core/common_runtime/gpu/gpu_device.cc:907] Found device 0 with properties:
name: Device 687f
AMDGPU ISA: gfx900
memoryClockRate (GHz) 1.622
pciBusID 0000:04:00.0
Total memory: 7.98GiB
Free memory: 7.73GiB
2018-04-16 00:43:40.259993: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929] DMA: 0
2018-04-16 00:43:40.259999: I tensorflow/core/common_runtime/gpu/gpu_device.cc:939] 0: Y
2018-04-16 00:43:40.260007: I tensorflow/core/common_runtime/gpu/gpu_device.cc:997] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Device 687f, pci bus id: 0000:04:00.0)
2018-04-16 00:43:40.634307: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
2018-04-16 00:43:40.893959: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
2018-04-16 00:43:40.987932: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
2018-04-16 00:43:41.043334: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
2018-04-16 00:43:41.049861: I tensorflow/core/kernels/conv_grad_input_ops.cc:858] running auto-tune for Backward-Data
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
2018-04-16 00:43:41.130803: I tensorflow/core/kernels/conv_grad_input_ops.cc:858] running auto-tune for Backward-Data
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
2018-04-16 00:43:41.191681: I tensorflow/core/kernels/conv_ops.cc:670] running auto-tune for Convolve
MIOpen(HIP): Warning [FindRecordUnsafe] File is unreadable: /opt/rocm/miopen/share/miopen/db/gfx900_56.cd.pdb.txt
Style変換自体も、一般的なCNN系の技術の組み合わせでできていますので、ROCm−TensorFlowでも十分に動作するようです。
source
wreck
wave
udnie
scream
rain_princess
la_muse
絵をベースとしたニューラルネットはユニークなものが多く、視覚的にも非常に楽しいです!
References
- ROCm-TensorFlow https://github.com/ROCmSoftwarePlatform/tensorflow
- ROCm https://github.com/RadeonOpenCompute/ROCm
- MIOpen https://gpuopen.com/compute-product/miopen/
- GPUEater https://www.gpueater.com/help#hiptensorflow
- OpenCV https://github.com/opencv
- lengstrom repos https://github.com/lengstrom/fast-style-transfer
- Controlling Perceptual Factors in Neural Style Transfer https://arxiv.org/pdf/1611.07865.pdf
エンジニア募集中
GPU EATERの開発を一緒に行うメンバーを募集しています。
特にディープラーニング研究者、バックエンドエンジニアを積極採用中です。
募集職種はこちら
GPU EATER - AMD GPU-based Deep Learning Cloud
- Cloud
- GPU
- OpenCL
- MIOpen
- AMD
- ROCm
- DeepLearning
- Style Transfer
- TensorFlow
- HIP-TensorFlow
- DCGAN
- DeepDream
- Image Recognition