LoginSignup
1
1

More than 3 years have passed since last update.

CornerNet-LiteのWindows 10での実行(インファレンスだけで力尽きました。)

Posted at

はじめに

 CornerNet-Lite: Efficient Keypoint Based Object Detectionの作者の実装である、githubをWindows 10で動かしたので、ここに記しておきます。

1.CornerNet-Liteとは

 昨年発表された、CornerNet: Detecting Objects as Paired Keypointsを軽くしたもののようです。
 CornerNetは日本語での解説も一部ありますから、いろいろ探してみてください。私としては、Fig.1の、YOLOv3よりAPが高く、スピードが速いというところに魅力を感じました。まだまだ新しい方法ですので、派生のネットワークが出てくるのではないかと思います。

2.私のPC

  • Windows 10

  • CPU Intel Core i5-4570S 2.9GHz

  • RAM 16GB

  • GPU RTX2070 8GB

なんか微妙にしょぼいですね。。。GPUに見合うCPUとメモリが欲しい。。。すでに、Visual Studio Community 2017やらCUDA10(cuDNN含む)やらは入っているので、そのあたりは参考にならないので注意してください。(もう一台まっさらなPCで再構成できればいいのですが、そうもいきません。。。)

3.事前準備

私は、Anaconda環境を使いました。ものによってPythonのバージョンとかが微妙に違うので、仮想環境を使うのがよいと思います。Anacondaのインストールはググってください。本来ならば、CornerNet-Liteの環境を作ってからクローニングしますが、conda_packagelist.txtがあるはずなので、まずはクローニングします。

(base) F:\Users\sounansu\Anaconda3>git clone https://github.com/princeton-vl/CornerNet-Lite.git CornerNet-Lite

はい、CornerNet-Liteのディレクトリに移って、仮想環境を作りましょう。

(base) F:\Users\sounansu\Anaconda3\CornerNet-Lite>conda create --name CornerNet_Lite --file conda_packagelist.txt --channel pytorch
略
PackagesNotFoundError: The following packages are not available from current channels:
略

Windows用はpackagelist.txtにかかれたバージョン等がないのでしょう。
というわけで、地道に入れていきましょう。

(base) F:\Users\sounansu\Anaconda3\CornerNet-Lite>conda create --name CornerNet_Lite python==3.7.1 anaconda
略
done
#
# To activate this environment, use
#
#     $ conda activate CornerNet_Lite
#
# To deactivate an active environment, use
#
#     $ conda deactivate

仮想環境に移ります。

(base) F:\Users\sounansu\Anaconda3\CornerNet-Lite>conda activate CornerNet_Lite

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite>

PyTorchはPytorchサイトで、私は、Stable,windows,conda,python3.7,cuda10でconda install pytorch torchvision cudatoolkit=10.0 -c pytorchをえらびました。

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite>conda install pytorch torchvision cudatoolkit=10.0 -c pytorch

これで、事前準備は終わったこととして、CornerNet-Liteを入れていきましょう。

4.CornerNet-Liteの実行

すでに、git cloneしているので、Compiling Corner Pooling Layersから順番にやっていきましょう。


(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite>cd core/models/py_utils/_cpools/
(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite\core\models\py_utils\_cpools>python setup.py install --user
略
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

エラーが出ましたが、issueのここを参考に、

diff --git a/core/models/py_utils/_cpools/src/bottom_pool.cpp b/core/models/py_u
tils/_cpools/src/bottom_pool.cpp
index 8a20a43..9f88c66 100644
--- a/core/models/py_utils/_cpools/src/bottom_pool.cpp
+++ b/core/models/py_utils/_cpools/src/bottom_pool.cpp
@@ -1,4 +1,4 @@
-#include <torch/torch.h>
+#include <torch/extension.h>

 #include <vector>

diff --git a/core/models/py_utils/_cpools/src/left_pool.cpp b/core/models/py_uti
ls/_cpools/src/left_pool.cpp
index c36fc1b..90b1e81 100644
--- a/core/models/py_utils/_cpools/src/left_pool.cpp
+++ b/core/models/py_utils/_cpools/src/left_pool.cpp
@@ -1,4 +1,4 @@
-#include <torch/torch.h>
+#include <torch/extension.h>

 #include <vector>

diff --git a/core/models/py_utils/_cpools/src/right_pool.cpp b/core/models/py_ut
ils/_cpools/src/right_pool.cpp
index 1b2da43..2ff98e1 100644
--- a/core/models/py_utils/_cpools/src/right_pool.cpp
+++ b/core/models/py_utils/_cpools/src/right_pool.cpp
@@ -1,4 +1,4 @@
-#include <torch/torch.h>
+#include <torch/extension.h>

 #include <vector>

diff --git a/core/models/py_utils/_cpools/src/top_pool.cpp b/core/models/py_util
s/_cpools/src/top_pool.cpp
index bc63c49..6719357 100644
--- a/core/models/py_utils/_cpools/src/top_pool.cpp
+++ b/core/models/py_utils/_cpools/src/top_pool.cpp
@@ -1,4 +1,4 @@
-#include <torch/torch.h>
+#include <torch/extension.h>

 #include <vector>

のように修正しました。もう一度コーナープーリングをコンパイルしましょう。

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite\core\models\py_utils\_cpools>python setup.py install --user
略
Finished processing dependencies for cpools==0.0.0

うまくいったようです。次は、Compiling NMSです。

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite\core\models\py_utils\_cpools>cd ../../../external

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite\core\external>make
      1 [main] make 8172 find_fast_cwd: WARNING: Couldn't compute FAST_CWD pointer.  Please report this problem to
the public mailing list cygwin@cygwin.com
python setup.py build_ext --inplace
make: python: Command not found
Makefile:2: recipe for target `all' failed
make: *** [all] Error 127

makefileのどこがわるのかよくわからないので、これまたissueのここを参照して、

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite\core\external>python setup.py build_ext --inplace
略
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

これも、issueにあって

index ca3bd04..c1dfb4c 100644
--- a/core/external/setup.py
+++ b/core/external/setup.py
@@ -7,12 +7,12 @@ extensions = [
     Extension(
         "bbox",
         ["bbox.pyx"],
-        extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]
+        extra_compile_args={'gcc': ['/Qstd=c99']}
     ),
     Extension(
         "nms",
         ["nms.pyx"],
-        extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]
+        extra_compile_args={'gcc': ['/Qstd=c99']}
     )
 ]

のように修正しました。あらためて実行すると、

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite\core\external>python setup.py build_ext --inplace
略
コード生成が終了しました。

次に、まずは、出来合いのウエイトデータでインファレンスが動くかやってみましょう。Downloading Modelsに書かれている、google driveからデータをダウンロードして、<CornerNet-Lite dir>/cache/nnet/CornerNet_Saccade/,<CornerNet-Lite dir>/cache/nnet/CornerNet_Squeeze/,<CornerNet-Lite dir>/cache/nnet/CornerNet/にそれぞれ入れてください。

これで準備がおわったので、Running the Demo Scriptにあるように、python demo.pyを実行してみましょう。

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite>python demo.py
Traceback (most recent call last):
  File "demo.py", line 3, in <module>
    import cv2
ModuleNotFoundError: No module named 'cv2'

opencvを入れましょう。

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite>conda install opencv

さて、またpython demo.pyを実行してみましょう。

(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite>python demo.py
total parameters: 116969339
loading from F:\Users\sounansu\Anaconda3\CornerNet-Lite\core\..\cache\nnet\CornerNet_Saccade\CornerNet_Saccade_500000.pkl
F:\Users\sounansu\Anaconda3\envs\CornerNet_Lite\lib\site-packages\torch\nn\functional.py:2539: UserWarning: Default upsampling behavior when mode=bilinear is changed to align_corners=False since 0.4.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.
  "See the documentation of nn.Upsample for details.".format(mode))
(CornerNet_Lite) F:\Users\sounansu\Anaconda3\CornerNet-Lite>dir demo*.jpg
 ドライブ F のボリューム ラベルは 記憶域 です
 ボリューム シリアル番号は ACCF-E884 です

 F:\Users\sounansu\Anaconda3\CornerNet-Lite のディレクトリ

2019/05/10  22:29           323,088 demo.jpg
2019/05/12  14:38           219,824 demo_out.jpg
               2 個のファイル             542,912 バイト

実行結果を置いておきます。
demo_out.jpg
うまくいっているようです。

おわりに

 一応これでインファレンスができるようになりました。途中git make等もinstallしました。すでに、cudaやVSCをインストールしていたので、そのあたりでのつまずきはなかったです。

 もし、うまくいかないとかありましたら、コメントに書いてくださいましたら、わかる範囲でお答えいたします。トレーニングもできるようになっているのですが、いろいろと、トラップが存在します。がんばってトレーニングも投稿しますので、、、期待せずに待っていてください。

では。

1
1
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
1
1