7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HRNetをWindowsで実行する手順

Last updated at Posted at 2020-07-15

HRNetをWindowsで動作確認しましたので、その手順を記載します。

HRNet

HRNetとは?

高解像度~低解像度を並列実行することで、高解像度を維持し、各解像度の特徴量のギャップを減少します。
Deep High-Resolution Representation Learning for Human Pose Estimation
K.Sun, B.Xiao, D.Liu, J.Wang, Microsoft Research Asia, 2019.
https://arxiv.org/abs/1902.09212

image.png

HRNetのGitHub

GitHubには、姿勢推定用コードだけでなく、様々な用途(領域分割、物体検出、画像分類、顔ランドマーク検出)用コードも公開されています。

image.png

動作確認

動作確認対象

領域分割のコードを動作確認しました。
Pytorch 0.4.1、Pytorch 1.1、HRNet + OCRの3バージョンのうち、Pytorch 0.4.1、Pytorch 1.1の2バージョンを動作確認しました。

HRNet-Semantic-Segmentation
https://github.com/HRNet/HRNet-Semantic-Segmentation

動作確認環境

torch 1.4.0
torchvision 0.5.0

Python 3.7.4

Windows 10
GeForce GTX 1050 Ti 専用GPUメモリ 4.0GB

CUDA 10.1
cuDNN 7.6.2
nvidia driver 441.45

Visual Studio 2019

変更点

Inplace-ABN

私の環境では、Inplace-ABNを標準のBNに変更しました。
Inplace-ABNはメモリ消費を削減する効果があります。
しかし、GPU1枚では関係ないとのことです。
また、v0.4.1では、内部でC++ソースコードをコンパイルする必要があります。
開発環境の要件を幾つかクリアする必要があり、私の開発環境では断念しました。
文字コードを英語にする、等で解消できる可能性はあります。

  • v0.4.1
    lib\models\seg_hrnet.py
     InPlaceABNSyncを削除し、nn.BatchNorm2dに変更。
     nn.ReLUのinplaceはFalseからTrueに変更。

  • v1.1
    tools\train.py
     nn.SyncBatchNorm.convert_sync_batchnormを削除。

分散学習

PyTorchは、Windowsでは、分散学習をサポートしていないので、無効にした。

  • v1.1

tools\train.py
 nn.parallel.DistributedDataParallelをnn.DataParallelに変更。

lib\utils\utils.py
 torch.distributed.is_initializedをis_availableに変更。

開発環境

PyTorch v0.4.1のCUDAは9.2ですが、
上記の変更を行うことで、
v0.4.1コードもCUDA 10.1で動作確認しました。

ハイパーパラメータ

  • v0.4.1
     yamlの指定をsmallバージョンに変更。
     GPUSを(0,)に変更。
     WORKERSを0に変更。

  • v1.1
     yamlの指定をsmallバージョンに変更。
     GPUSを(0,)に変更。
     WORKERSを0に変更。

その他

torchsummaryのsummaryはエラーになります。

動作結果

Pytorch 0.4.1、Pytorch 1.1両方で、train.py, test.py共に動作することを確認しました。
動作確認ですので、値の大小は気にしないでください。

v0.4.1

  • train
2020-07-12 11:18:39,433 Epoch: [0/1] Iter:[2900/2975], Time: 0.42, lr: 0.000364, Loss: 0.920190
2020-07-12 11:19:10,873 => saving checkpoint to output\cityscapes\seg_hrnet_w18_small_v1_512x1024_sgd_lr1e-2_wd5e-4_bs_12_epoch484checkpoint.pth.tar
2020-07-12 11:26:09,648 Loss: 0.551, MeanIU:  0.3185, Best_mIoU:  0.3185
2020-07-12 11:26:09,649 [8.90093562e-01 4.82133573e-01 7.44949369e-01 0.00000000e+00
 7.46722365e-03 3.42546150e-01 6.24819950e-05 3.81725337e-01
 8.42626474e-01 3.17069704e-01 7.76947559e-01 5.12606485e-01
 0.00000000e+00 6.06305701e-01 0.00000000e+00 0.00000000e+00
 0.00000000e+00 0.00000000e+00 1.46073571e-01]
2020-07-12 11:26:09,732 Hours: 0
2020-07-12 11:26:09,732 Done
  • test
2020-07-12 16:56:18,841 processing: 400 images
2020-07-12 16:56:18,970 mIoU: 0.3187
2020-07-12 18:09:16,441 MeanIU:  0.3242, Pixel_Acc:  0.8665,             Mean_Acc:  0.3931, Class IoU: 
2020-07-12 18:09:16,471 [9.09264962e-01 4.76516629e-01 7.60600283e-01 0.00000000e+00
 1.47533559e-03 3.58354385e-01 2.10131315e-05 4.02326516e-01
 8.55247714e-01 3.37153738e-01 7.78925237e-01 5.36398270e-01
 0.00000000e+00 6.49926948e-01 0.00000000e+00 0.00000000e+00
 0.00000000e+00 0.00000000e+00 9.44377346e-02]
2020-07-12 18:09:16,522 Mins: 157
2020-07-12 18:09:16,522 Done

v1.1

  • train
2020-07-13 00:35:23,786 Epoch: [0/1] Iter:[2900/2975], Time: 0.46, lr: 0.000364, Loss: 0.971087
2020-07-13 07:20:23,035 => saving checkpoint to output\cityscapes\seg_hrnet_w18_small_v1_512x1024_sgd_lr1e-2_wd5e-4_bs_12_epoch484checkpoint.pth.tar
2020-07-13 07:20:23,497 Loss: 0.688, MeanIU:  0.2749, Best_mIoU:  0.2749
2020-07-13 07:20:23,498 [0.8741192  0.43420978 0.66894394 0.         0.04506454 0.29985142
 0.         0.24258245 0.80402744 0.24535251 0.67287447 0.44294556
 0.         0.49247732 0.         0.         0.         0.
 0.        ]
2020-07-13 07:20:23,592 Hours: 7
2020-07-13 07:20:23,592 Done
  • test
2020-07-13 08:36:38,596 processing: 400 images
2020-07-13 08:36:38,596 mIoU: 0.2722
2020-07-13 08:52:25,544 MeanIU:  0.2786, Pixel_Acc:  0.8311,             Mean_Acc:  0.3495, Class IoU: 
2020-07-13 08:52:25,544 [0.88729298 0.41326129 0.68817204 0.         0.01781714 0.31907421
 0.         0.22556153 0.82695122 0.26384412 0.667692   0.47245012
 0.         0.51207316 0.         0.         0.         0.
 0.        ]
2020-07-13 08:52:25,605 Mins: 79
2020-07-13 08:52:25,605 Done

参考

他のコード

HRNetは他にもあります。
Multi-person Human Pose Estimation with HRNet in PyTorch
https://github.com/stefanopini/simple-HRNet

私のコード

私の方で行った変更は上記の通りで、限定的ですので、githubにアップロードしていません。
問合せありましたら、考えます。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?