写真編集用PCを導入

Olympus Viewer 3を快適に使いたい

ふだん、OM-Dを使うときはRAW + JPEGで撮影していて、オリンパス社が同社製カメラのお客さん向けに無償で提供しているOlympus Viewer 3というソフトウェアを使ってRAW現像することが多い。

OLYMPUS VIEWER 3

RAW現像するといっても、明るさやハイライト/シャドウの調整、jpegの色味仕上げ(Natural, Vividなど)の適用、必要に応じてクロップ(トリミング)やノイズリダクション加減の変更といったところがおもな内容なので、画像自体の印象が大きく変わるような処理ではない。どちらかと言えば、その日撮影してきた写真のすべてをちょっと大きなモニターでちゃんと見て喜んだり悔しがったりすること、失敗/成功を切り分けて取捨選択すること、失敗理由を反省すること(?)が目的になっている。そして成果物はブログ用や日ごろの閲覧用に1000万画素程度にリサイズしたjpegファイルとして保存している。当然RAWも残してあるから、より大きな画像が必要な必要なら書き出せばよい。

ただ、今まで使っていたPC (32bit 版 Windows7 pro) では、 スペックが足りないからなのか快適な操作性とはほど遠く、ガマンやニンタイが必要だった。10枚ほどのRAW画像に対して調整をほどこしていると、ウィンドウ上に「応答がありません」なんてことを無情かつ爽やかに表示されることも多かった。そういうときは右手で握っているマウスを液晶モニタに投げつけそうになってしまう。これでは楽しく愉快な写真生活とは言えないので、4K動画の編集も前提に新しいPCに更新することにした。

PCのスペック

ネットでショップやメーカーのホームページでよさそうな性能のPCを検索してみると、「写真編集用PC」あるいは「クリエイターPC」と銘打たれた製品が目立つようになった。スペック的には3Dゲームを楽しむための「ゲーミングPC」に近いようで、ショップやメーカーとしてはゲーマー以外にも高スペックのPCを売りたい、というところだろう。
CPUパワーやメモリの速さや大きさ、ディスクの性能が高い方がいいのは共通していると思うが、写真編集時には高速な3Dレンダリングは要らないとは思う。しかしながら、グラフィクスボードに積まれたビデオメモリの大きさや、グラフィックプロセッサ(GPU)の性能は重要なポイントのようである。以下のようなスペックにした。

  • CPUとチップセットとしては、Intelの第7世代Core i7-7700とH270を選択。DIMMスロットは4つ。
  • 64bit OSになるのでメモリは8GBのDIMM(DDR4-2400)を2枚載せて16GBytesとした。足りないなら2枚追加する。
  • OSやプログラムを速やかに開始するため、ドライブC: 用に約5千億Bytes(公称512GBytes、実際は約470GBytes)のSSD(Solid State Disk)。メモリを大きくしたりアプリを追加していくことを考えると、公称256GBytes程度では不安がある。
  • データ専用ドライブとして、3兆Bytes(公称3TBytes、実際は2.7TBytes)のSATAハードディスク。データが溜まってきたら破たんする前により大容量HDDにコピーして置き換えるつもり。そのためHDDをすんなり増設できる大き目のタワー型ケースとした。
  • グラボはちょっと判断がつかなかったので、NVIDIA® GeForce® GTX1060というGPUにビデオメモリが6GBytes載った製品を盛ることにした。

Windows 10 にはWindows 7 にあったようなPCの総合性能を表示するGUI (エクスペリエンスインデックス) が備わっていないので、WinSATという評価ツールを使って数字を出してみたら、以下のようになっていた。

今まで使っていたPC(Core i-5 2400, 3.1GHz、HD Graphics 2000) のエクスペリエンスインデックスは以下のとおり。

さすがにすべての項目が大きく変わった。

Olympus Viewer 3のGPGPU機能は効果あり

このソフトの現在(2017年6月中旬)のバージョンは2.2だが、E-M1 markII に対応した2.1のときから、RAW現像処理時にGPUの演算能力を利用できるようになった。これは、グラボ上のGPUを本来の画像処理や描画以外の処理に利用するGPGPUと呼ばれる技術とのこと。

GPGPUの有効化

ツール/オプションのグラフィックプロセッサーの中に、GPGPU機能を有効するための設定があり、実装しているGPUを選択できるようになっている。「使用する」をチェックすると、しばらく準備したのちに利用可能となる(アプリの再起動後)。

どれほど効果があるのか、5月に写したバラの写真をRAW現像して比較してみた。GPGPU有りと無しとで、E-M1 markIIで撮影した50コマのRAW画像を、撮影時と同じパラメータ、同じサイズのまま、JPEG高品質でバックグラウンドで書き出させて時間を比較した。結果は以下のとおり。

GPGPU無効
GPGPU有効

1枚あたりの所要時間は、GPGPU無効のときが9.5秒、有効のときが5.4秒だからかなりの改善が見られた。

GPGPU無効 (Core i5)

なお、以前使っていたPC(当然GPGPUは無効)で同じことをやってみると、1枚あたりの所要時間が19.6秒だった。つまり、PCを新しくしてRAW現像の処理時間が3.6倍短縮したことになる。1枚あたり14秒の差ということは、1,000枚処理する間に3.8時間も余計な時間を費やしていたわけで、もっと早く導入しておけばよかったなんて思ってしまう。

GPGPUはCPUにやさしい

RAW現像してる最中にタスクマネージャでもって、CPUの稼働率なんかを表示させてみた。

GPGPU有効時
GPGPU無効時

上がGPGPU有効時で下が無効時。GPGPUが無効のときは、CPUパワーのみを使ってRAW現像処理を実行することになるから、ピークの高い山が連なるグラフになっている。CPU使用率のグラフは60秒間の推移を表しており山が6つあるから、だいたい1分間に6ファイル、1ファイルあたり10秒程度費やしていることがわかる。
それに対してGPGPU有効時には、全体として大したCPU負荷になっていないから、RAW現像中も他のアプリがサクサク動いてくれて助かる。以前の32bit PCでやってたときとは考えられないほどの余裕を感じる。今回のPCの選定において、CPUだけでなくグラボもちょっと盛っておいて良かった、と思った。

なお、RAW現像中のプロセスをCPU使用率の上位から並べたものを見ると、GPGPU有効/無効によって活動中のプロセスが若干違っていた。

GPGPU無効
GPGPU有効

GPGPU有効/無効にかかわらず、RAW現像処理が開始すると、cmdBatch.exe ( 表示名は batch sub module) がバックグラウンドで実行を開始する。そして、GPGPU無効時には更にx64のcmdBatch.exeが1ファイルごとに起動されているようで、このプロセスがRAW現像を実行しているように見える。対象のファイル数をもっと増やしてRAW現像のバックグラウンド処理を開始してみると、cmdBatch.exe (x64) も複数起こされるようだが、詳しく追ってもしょうがないことだろう。

きょうのまとめ

今回は4K 解像度(27インチ、IPS液晶)のモニターと合わせて20万円という予算にしては、わりといい買い物ができたような気がしている。千円ちょっとオーバーしてしまったが。超望遠レンズのための予算を取り崩してしまったから、そっちは当面のあいだか将来にわたってか、いずれにしろ先送りになった。

このPCとモニターのセットでは、Olympus Viewer 3を快適に使うことのほかに、

  • 8000万画素ハイレゾショットの画像の生成
  • 4K動画の表示と編集

という目的がある。動画ならそこらで昆虫でも撮ればいいのだけど、風景でハイレゾショットを使うには三脚持って出かけないとならないから、室内で済む良さそうな素材はないものかと考え中。a

追記

しばらく使ってみた感想やトラブルなど。

今までのPCにはUSB3.0ポートがなかった。新しいPCには前面と背面にUSB3.0ポートがあるので、UHS-IIのSDXCカード(LEXAR PRO 2000x)からの読み出しがホントに速くなり500コマ(1000ファイル)程度の読込みでもストレスを感じなくなった。LEXARがオマケにつけているSDカードリーダーを利用中。

Olympus Viewer 3で複数ファイルを対象にして画像の調整をやっていると、相変わらず「応答ありません」になってしまうことがある。ファイル書込み時の問題ではなく、Olympus Viewer3上での表示更新が関係しているように見える。残念である。

Windows 10 Homeのアップデートを適用してバージョン1703にしたら、Olympus Viewer 3 が「対象外のグラフィックボードが指定されています」とか言ってくれて、GPGPU機能を有効にできなくなってしまった。
あわてて、NVIDIAのGeForce GTX1060用ドライバを更新してバージョン382.53にしたら、何事もなかったかのようにGPGPU機能を有効化できた。

webdavへのrobocopy問題

おそらくほとんどの人には関係ない話なのだが、バックアップ用に日本のどこかで動いているLinuxサーバーでapacheのwebdavを動かしている。そこに新規/更新ファイルをコピーするため、”net use”コマンドでローカルドライブ名をマップしてからrobocopyコマンドを使ったバッチファイルを動かしてきた。
このバッチファイルは、追加/更新されたファイルやディレクトリだけをコピーし、PC側で削除したファイルやディレクトリをサーバーから削除し、同期処理が終了したら 最後に書いてある”shutdown /s /t 0″ でもって勝手に電源オフしてくれる。一日の終わりにバッチを走らせさえすればよかった。

Windows 7 では(ロックの構文の問題と、転送が遅いだけで)基本的に動作に問題はなかったのだけど、Windows 10ではうまくいかない。Windows10のrobocopy.exeは、サーバー側サブディレクトリに対応するディレクトリがローカル側に存在しないと見なしてしまうようで(*EXTRA Dirになってしまう)、必ずサーバー側のサブディレクトリをサクっと削除してしまう。結果として常に画像を置いた容量50GBytesほどのディレクトリ全体をコピーしようとしてしまうから、とても毎日のバックアップには使えない。
数日間にわたってこの問題に対処しようとしたが、解決しなかった。IISで実装されているらしいOneDriveのwebdav用URLを net use コマンドでマップして試してみても同じ現象が起きるから、サーバー側ではなくWindows10のrobocopy.exeの問題と思える。

最終的な手段として、”Windows Server 2003 Resource Kit Tools”に含まれているrobocopy.exeをWindows 10で動かすことで、Windows 7 のときと同じように働いてくれることを確認した。ただ、Windows10のものと比べると、転送速度は遅い。考えてもしょうがないことに、とてもムダな時間を費やしてしまった気分。