機械学習・AI【物体検出】vol.4 :YOLOv3をWindows⇔Linuxで相互運用する

【物体検出】vol.4 :YOLOv3をWindows⇔Linuxで相互運用する

相互運用

LinuxでもWindowsでもディレクトリ構造や設定ファイル、モデルデータ(重みデータ)は同じなので、相互に流用できます。
学習時にはLinuxで実行し、モデルデータやclassファイルをWindowsに持ち込んで、動画や静止画の評価に回すなどワークフローを柔軟にできます。

注意事項:

Windowsで作ったclassファイルやdataファイルなど、テキスト形式の設定ファイルでは、改行コードや文字エンコードの変換が必要です。
この目的のために作られたdos2unix.pyというプログラムがあります。

 

Windows版とLinux版のYOLOv3

ほぼ同格なLinux(Ubuntu)、Windowsの2台のマシンで、同じデータを使ってYOLOv3の学習を実施してみました。
20000イテレーションまで実施し、1000イテレーション毎に保存される重みファイルのタイムスタンプ間隔を計測します。

Linuxマシン
Ubuntu.jpg

Deepstation
i7 7700 3.6GHz*8、メモリ32GB
NVidia GeForce GTX1080Ti 11GB
Ubuntu 16.04.6LTS 64Bit

Windowsマシン
Windows.jpg

HP OMEN 880-000jp Desktop
i7 7700 3.6GHz*8、メモリ32GB
NVidia GeForce GTX1070 8GB
Windows10Professional 64bit

基本的な構成としてはほぼ同格。
GPU性能は、1070と1080Tiでは20-30%程度異なるようです。

 

結果

1000イテレーションに費やした時間

  • Ubuntu:40-43分
  • Windows:52-55分

ほぼ20-30%の違いです。

UbuntuとWindowsの結果比較

 

結論

Linux、Windowsで差はある...が学習速度の違いは、GPUの性能がそのまま出ているようです。

(Linuxの方が圧倒的有利かと先入観を持っていたが、YOLOv3のバイナリで実行した限りにおいて、GPU性能差以上の違いがなさそう)

 

Windwows版とLinux版をそれぞれ使ってみて気が付いた点

  • Windows版もLinux版もGPUメモリ不足のエラーが出る
  • Windows版もLinux版もtrainをしながらtestができる
  • Linux版はtrain時に-mapオプションを付けるとmap算出時に落ちる
  • Windows版ではtrain時に-mapオプションを付けても大丈夫
  • trainしながら動画で検出して、検証結果を動画に書き出すと落ちる場合がある
  • Windiws版で、trainをしながら、testし、動画を書き出すなどの並列処理ができた。(落ちる場合もある)
  • ※trainが途中で止まると損失が大きいので、(特に動画を使った)評価とは分けたほうが良いです。

 

(参考)WindwowsゲーミングPCでリアルタイム検出してみると...

最後に、おまけとして、Windowsゲーミングノートの内蔵カメラで、リアルタイムに検出した場合の驚くべきパフォーマンスを示して、本記事を終わります。

 

Windowsゲーミングノート

OMEN by HP Laptop 17-an0xx
i7 7700 2.8GHz*8、メモリ16GB
NVidia GeForce GTX1070 8GB
Windows10 Professional 64bit

内蔵カメラ -c 0でdemoモード起動した際のスクリーンショットです。モデルは、VOC COCOの学習済モデル。34.2fps出ています。

WindwowsゲーミングPCでリアルタイム検出

 

 ▼この記事を書いたひと

001@2x.png

R&Dセンター
松井 良行

R&Dセンター 室長。コンピュータと共に35年。そしてこれからも!

 

おすすめの関連記事

機械学習・AIの最新記事


お問い合わせ

ご意見・ご質問などお気軽にお問い合わせ下さい。
ナカシャクリエイテブ株式会社

●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711  地図
交通部 R&Dセンター

Email:メールでのお問い合わせ