[PYTHON] [Forefront of Object Recognition 2020] Un journal de l'installation de Pytorch sur Windows 10 à l'exécution de CornerNet-Lite.

Si vous le remarquez, il a été mis à jour pour la première fois depuis plus d'un an ... (^^ ;;;

Récemment, je n'ai pas touché Python ou OpenCV car je n'utilise que Java ou la programmation professionnelle. Je n'ai donc pas suivi les dernières tendances en matière de détection et de reconnaissance d'objets, mais depuis l'année dernière, CornerNet-Lite a été un sujet brûlant, et il semble que CornerNet-Squeeze soit plus rapide que yolo v3, donc je vais créer un environnement et expérimenter avec Max-kun par reconnaissance d'objets. .. Voir ci-dessous pour plus de détails sur les tendances.

https://opencv.org/latest-trends-in-object-detection-from-cornernet-to-centernet-explained-part-ii-cornernet-lite/

Voir ↓ pour un article en japonais facile à comprendre sur le mécanisme de CornerNet. https://engineer.dena.jp/2019/07/cv-papers-19-keypoint-object-detection.html En un mot, CornerNet semble être un mécanisme qui crée une carte thermique, estime les coins d'un rectangle et détecte et reconnaît les objets.

Donc, comme indiqué ci-dessous, ce serait mieux s'il était construit dans l'environnement Anaconda, mais l'environnement pip3 a déjà été construit, et il y a concurrence avec Anaconda ([conda et pip: Danger de mélange](http: // onoz000.). hatenablog.com/entry/2018/02/11/142347)) C'est ennuyeux, donc je l'ai construit sans utiliser Anaconda, donc je vais en garder un journal.

https://github.com/princeton-vl/CornerNet-Lite

Installer pytorch

Accédez à l'URL ci-dessous et cliquez en fonction de votre environnement pour afficher la commande. https://pytorch.org/

QUICK START LOCALLY Cette partie!

Mon environnement est Windows et le gestionnaire de packages est pip, Python 3.7.4, cuda10.1.

C:\>pip3 install torch===1.4.0 torchvision===0.5.0 -f https://download.pytorch.org/whl/torch_stable.html
Looking in links: https://download.pytorch.org/whl/torch_stable.html
Collecting torch===1.4.0
  Downloading https://download.pytorch.org/whl/cu101/torch-1.4.0-cp37-cp37m-win_amd64.whl (796.8MB)
      |████████████████████████████████| 796.8MB 45kB/s
Collecting torchvision===0.5.0
  Using cached https://files.pythonhosted.org/packages/7d/3e/2b5ddf744226159dc90a52f0d044c0de7c5ca4f42d12a350a674ebb6fb2a/torchvision-0.5.0-cp37-cp37m-win_amd64.whl
Requirement already satisfied: six in c:\python\python37\lib\site-packages (from torchvision===0.5.0) (1.12.0)
Requirement already satisfied: pillow>=4.1.1 in c:\python\python37\lib\site-packages (from torchvision===0.5.0) (6.1.0)
Requirement already satisfied: numpy in c:\python\python37\lib\site-packages (from torchvision===0.5.0) (1.17.2)
Installing collected packages: torch, torchvision
  Found existing installation: torch 1.0.1
    Uninstalling torch-1.0.1:
      Successfully uninstalled torch-1.0.1
  Found existing installation: torchvision 0.4.0
    Uninstalling torchvision-0.4.0:
      Successfully uninstalled torchvision-0.4.0
Successfully installed torch-1.4.0 torchvision-0.5.0

C:\>

Si avec succès s'affiche, vous avez terminé.

Obtention de la version pytorch de CornerNet-Lite

Obtenez la version pytorch de CornerNet-Lite à partir de ce qui suit et exécutez-la.

https://github.com/princeton-vl/CornerNet-Lite.git

C:\>cd github
C:\github>git clone https://github.com/princeton-vl/CornerNet-Lite.git
Cloning into 'CornerNet-Lite'...
remote: Enumerating objects: 75, done.
remote: Total 75 (delta 0), reused 0 (delta 0), pack-reused 75
Unpacking objects: 100% (75/75), done.

Exécutez make, mais supposez que l'environnement mingw a été construit.

C:\github\CornerNet-Lite\core\external>mingw32-make
python setup.py build_ext --inplace
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    from Cython.Build import cythonize
ModuleNotFoundError: No module named 'Cython'
Makefile:2: recipe for target 'all' failed
mingw32-make: *** [all] Error 1

Aucun module nommé 'Cython' n'est affiché, donc installez Cython avec pip. En fonction de l'environnement construit, d'autres modules peuvent également indiquer Aucun module nommé. Dans ce cas, évaluez le message d'erreur qui apparaît et installez le module.

Qu'est-ce que Cython?

Un package pour accélérer Python. Voir ↓ https://qiita.com/pashango2/items/45cb85390193d97523ca

C:\>pip3 install cython
Collecting cython
  Downloading https://files.pythonhosted.org/packages/1f/be/b14be5c3ad1ff73096b518be1538282f053ec34faaca60a8753d975d7e93/Cython-0.29.14-cp37-cp37m-win_amd64.whl (1.7MB)
      |████████████████████████████████| 1.7MB 6.4MB/s
Installing collected packages: cython
Successfully installed cython-0.29.14

C:\>

prendre le coeur…

C:\github\CornerNet-Lite\core\external>mingw32-make
python setup.py build_ext --inplace
Compiling bbox.pyx because it changed.
Compiling nms.pyx because it changed.
[1/2] Cythonizing bbox.pyx
C:\Python\Python37\lib\site-packages\Cython\Compiler\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: C:\github\CornerNet-Lite\core\external\bbox.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
[2/2] Cythonizing nms.pyx
C:\Python\Python37\lib\site-packages\Cython\Compiler\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: C:\github\CornerNet-Lite\core\external\nms.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
running build_ext
building 'bbox' extension
creating build
creating build\temp.win-amd64-3.7
creating build\temp.win-amd64-3.7\Release
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Python\Python37\lib\site-packages\numpy\core\include -IC:\Python\Python37\include -IC:\Python\Python37\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\shared" -IC:\opencv3.4.0\sources\include\opencv2 -IC:\opencv3.4.0\sources\include -IC:\opencv3.4.0\build\include\opencv2 -IC:\opencv3.4.0\build\include -IC:\opencv\build\include /Tcbbox.c /Fobuild\temp.win-amd64-3.7\Release\bbox.obj -Wno-cpp -Wno-unused-function
 cl: erreur de ligne de commande D8021: l'argument numérique «/ Wno-cpp» n'est pas valide.
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
Makefile:2: recipe for target 'all' failed
mingw32-make: *** [all] Error 1

C:\github\CornerNet-Lite\core\external>

J'obtiens toujours une erreur. L'argument numérique '/ Wno-cpp' n'est pas valide. on m'a dit Pour le moment, dans C: \ github \ CornerNet-Lite \ core \ external \ setup.py

extra_compile_args=['-Wno-cpp', '-Wno-unused-function']

Vous n'en avez pas besoin car l'option de compilation n'est pas valide, non? Voilà pourquoi

extra_compile_args=[]

J'ai perdu l'argument et ré-exécuté.

C:\github\CornerNet-Lite\core\external>mingw32-make

~~~~
 Omis en chemin
~~~~
md64.lib
 Création de la bibliothèque build \ temp.win-amd64-3.7 \ Release \ nms.cp37-win_amd64.lib et object build \ temp.win-amd64-3.7 \ Release \ nms.cp37-win_amd64.exp
 Je génère du code.
 La génération du code est terminée.
rm -rf build

La génération va bien avec.

Obtenir le fichier de modèle

Les données d'entraînement sont MS COCO. https://github.com/princeton-vl/CornerNet-Lite#training-and-evaluation

Comme indiqué dans Documentation, les trois fichiers de modèle créés sont acquis et placés.

CornerNet-Saccade CornerNet-Saccade model CornerNet_Saccade_500000.pkl(447M) https://drive.google.com/file/d/1MQDyPRI0HgDHxHToudHqQ-2m8TVBciaa/view?usp=sharing Téléchargez-le et placez-le ci-dessous.

C:\github\CornerNet-Lite\cache\nnet\CornerNet_Saccade\

CornerNet-Squeeze CornerNet-Squeeze model CornerNet_Squeeze_500000.pkl(122M) https://drive.google.com/file/d/1qM8BBYCLUBcZx_UmLT0qMXNTh-Yshp4X/view?usp=sharing Téléchargez-le et placez-le ci-dessous.

C:\github\CornerNet-Lite\cache\nnet\CornerNet_Squeeze\

CornerNet CornerNet model CornerNet_500000.pkl(768M) https://drive.google.com/file/d/1e8At_iZWyXQgLlMwHkB83kN-AN85Uff1/view?usp=sharing Téléchargez-le et placez-le ci-dessous.

C:\github\CornerNet-Lite\cache\nnet\CornerNet\

Lancer la démo

Exécutez la commande suivante.

C:\github\CornerNet-Lite>python demo.py
Traceback (most recent call last):
  File "demo.py", line 7, in <module>
    detector = CornerNet_Saccade()
  File "C:\github\CornerNet-Lite\core\detectors.py", line 38, in __init__
    from .test.cornernet_saccade import cornernet_saccade_inference
  File "C:\github\CornerNet-Lite\core\test\__init__.py", line 1, in <module>
    from .cornernet import cornernet
  File "C:\github\CornerNet-Lite\core\test\cornernet.py", line 7, in <module>
    from tqdm import tqdm
ModuleNotFoundError: No module named 'tqdm'

C:\github\CornerNet-Lite>

ModuleNotFoundError: Aucun module nommé 'qdm', installez donc tqdm avec pip.

C:\>pip3 install tqdm
Collecting tqdm
  Downloading https://files.pythonhosted.org/packages/72/c9/7fc20feac72e79032a7c8138fd0d395dc6d8812b5b9edf53c3afd0b31017/tqdm-4.41.1-py2.py3-none-any.whl (56kB)
      |████████████████████████████████| 61kB 4.1MB/s
Installing collected packages: tqdm
Successfully installed tqdm-4.41.1

C:\>

Alors, réessayez.

C:\github\CornerNet-Lite>python demo.py
total parameters: 116969339
loading from C:\github\CornerNet-Lite\core\..\cache\nnet\CornerNet_Saccade\CornerNet_Saccade_500000.pkl
C:\Python\Python37\lib\site-packages\torch\nn\functional.py:2506: 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))

Les fichiers suivants sont créés dans C: \ github \ CornerNet-Lite.

demo_out.jpg demo_out.jpg Comme ça, Borzoi le reconnaît correctement comme un chien, et SUP reconnaît également les planches de surf et les personnes (huileurs).

En regardant le journal

loading from C:\github\CornerNet-Lite\core\..\cache\nnet\CornerNet_Saccade\CornerNet_Saccade_500000.pkl

Il est devenu. J'utilise CornerNet-Saccade et ce n'est pas le sujet CornerNet-Squeeze qui est plus rapide que yolo v3, donc je vais changer demo.py.

!/usr/bin/env python

import cv2
from core.detectors import CornerNet_Squeeze
from core.vis_utils import draw_bboxes

detector = CornerNet_Squeeze()

 image    = cv2.imread("demo.jpg ")
image    = cv2.imread("max_kun.jpg ")

bboxes = detector(image)
image  = draw_bboxes(image, bboxes)
cv2.imwrite("demo_out_max_kun.jpg ", image)

Puis exécutez-le.

C:\github\CornerNet-Lite>python demo2.py
total parameters: 31771852
loading from C:\github\CornerNet-Lite\core\..\cache\nnet\CornerNet_Squeeze\CornerNet_Squeeze_500000.pkl

C:\github\CornerNet-Lite>

Le résultat ressemble à ceci. demo_out2.jpg Umu. La détection d'objet n'a pas été effectuée avant la reconnaissance d'objet. De plus, il reconnaît Keira comme un oiseau. La précision n'est-elle pas bonne? ?? ??

AP (précision moyenne)

En regardant l'AP des données COCO dans Documentation, Est-il supérieur à yolo v3? compare-2.png

YOLOv3 33,0% à 39 ms CornerNet-Squeeze est de 34,4% en 30 ms CornerNet-Saccade est de 43,2% à 190 ms

La précision augmente.

f4.png

L'image lorsqu'elle est reconnue par yolo v3 est comme ça. yolov3_max_kun.png

Voir ici l'article sur l'exécution de yolo v3 avec pytorch ↓. https://qiita.com/goodboy_max/items/b75bb9eea52831fcdf15

CornerNet-Squeeze n'est-il pas bon pour reconnaître et appliquer des images différentes des données COCO? Parce que l'image était grossière? Ou avez-vous choisi l'option de compilation? ?? ??

Le mystère s'approfondit ...

Informations de référence

https://opencv.org/latest-trends-in-object-detection-from-cornernet-to-centernet-explained-part-ii-cornernet-lite/ https://engineer.dena.jp/2019/07/cv-papers-19-keypoint-object-detection.html https://qiita.com/sounansu/items/9a6caf1ac5e78aefaeae https://qiita.com/pashango2/items/45cb85390193d97523ca

Recommended Posts

[Forefront of Object Recognition 2020] Un journal de l'installation de Pytorch sur Windows 10 à l'exécution de CornerNet-Lite.
Tout, de la création d'un environnement Python à son exécution sous Windows
Changer la clé de l'objet sur S3 du format de date normal au format Hive
Étapes pour créer PyTorch 1.5 pour CUDA 10.2 sous Windows
Remarques sur l'installation de Chainer 1.5 pour GPU sous Windows
Exécution de MINST dans TensorFlow 2.0 et visualisation dans TensorBoard (version 2019)
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
Après tout, l'histoire du retour de Linux à Windows
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10