#author("2022-08-22T16:09:28+09:00","default:okada","okada") #author("2022-08-22T16:10:36+09:00","default:okada","okada") *Python Install (Windows) [#u9e657ab] RIGHT:更新日&lastmod(); RIGHT:作成日:2022年8月22日 -画像の中から写っているものを検出するために、Pythonを使用する。そのための必要なPythonとライブラリをWindowsにインストールする。 -サンプルプログラムで確認 **Pythonのインストール [#k6f90a03] 以下のDL先からStable Releasesの最新版の「Windows installer(64-bit)」をDLする https://www.python.org/downloads/windows/ DLしたインストーラを実行すると以下の画面になるので、必要な個所を選択してインストールを行う &ref("./Python_install.png"); ***インストール後のバージョン確認 [#n4dd8939] C:\temp\Python\d_object>python --version Python 3.10.6 ***参考 [#d87aa894] -https://www.sejuku.net/blog/33294 -https://www.sejuku.net/blog/105993 **Windows版MXNet 1.8.0 をインストールする方法 [#f7f12b1a] MXNetはPythonを含めた複数のプログラミング言語から利用できる深層学習フレームワークをインストールする -ディープラーニングのフレームワーク:MXNet ***インストール手順 [#l3ba005d] コマンドプロンプトから以下のコマンドを実行する MXNetはCPU用とGPU用がある。今回はCPU用をインストールする -pip install mxnet -f https://dist.mxnet.io/python/cpu > cd C:\temp\Python\d_object C:\temp\Python\d_object>pip install mxnet -f https://dist.mxnet.io/python/cpu Looking in links: https://dist.mxnet.io/python/cpu Collecting mxnet Downloading https://repo.mxnet.io/dist/python/cpu/mxnet-1.8.0-py2.py3-none-win_amd64.whl (20.7 MB) ---------------------------------------- 20.7/20.7 MB 7.3 MB/s eta 0:00:00 Collecting requests>=2.18.4 Downloading requests-2.28.1-py3-none-any.whl (62 kB) ---------------------------------------- 62.8/62.8 kB 3.3 MB/s eta 0:00:00 (略) Collecting idna<4,>=2.5 Downloading idna-3.3-py3-none-any.whl (61 kB) ---------------------------------------- 61.2/61.2 kB ? eta 0:00:00 Installing collected packages: urllib3, numpy, idna, graphviz, charset-normalizer, certifi, requests, mxnet Successfully installed certifi-2022.6.15 charset-normalizer-2.1.0 graphviz-0.20.1 idna-3.3 mxnet-1.8.0 numpy-1.23.2 requests-2.28.1 urllib3-1.26.11 [notice] A new release of pip available: 22.2.1 -> 22.2.2 [notice] To update, run: python.exe -m pip install --upgrade pip ***pipのUpdate [#k6b94866] C:\temp\Python\d_object> python.exe -m pip install --upgrade pip Requirement already satisfied: pip in c:\usr\python\python310\lib\site-packages (22.2.1) Collecting pip Downloading pip-22.2.2-py3-none-any.whl (2.0 MB) ---------------------------------------- 2.0/2.0 MB 10.0 MB/s eta 0:00:00 Installing collected packages: pip Attempting uninstall: pip Found existing installation: pip 22.2.1 Uninstalling pip-22.2.1: Successfully uninstalled pip-22.2.1 Successfully installed pip-22.2.2 ***参考 [#h4b1c047] -https://touch-sp.hatenablog.com/entry/2021/07/07/215415 **gluoncvのInstall [#z27e1d18] GluonCV とは、ディープラーニングのフレームワーク MXNet が提供するコンピュータビジョン用のインターフェースになります。 ***Install手順 [#u68d8bd7] C:\temp\Python\d_object>pip install gluoncv --upgrade Collecting gluoncv Downloading gluoncv-0.10.5.post0-py2.py3-none-any.whl (1.3 MB) ---------------------------------------- 1.3/1.3 MB 8.9 MB/s eta 0:00:00 Collecting matplotlib Downloading matplotlib-3.5.3-cp310-cp310-win_amd64.whl (7.2 MB) ---------------------------------------- 7.2/7.2 MB 8.8 MB/s eta 0:00:00 (略) Installing collected packages: pywin32, pytz, six, scipy, pyyaml, pyparsing, \ portalocker, Pillow, opencv-python, kiwisolver, fonttools, cycler, colorama, \ yacs, tqdm, python-dateutil, packaging, autocfg, pandas, matplotlib, gluoncv Successfully installed Pillow-9.2.0 autocfg-0.0.8 colorama-0.4.5 cycler-0.11.0 \ fonttools-4.35.0 gluoncv-0.10.5.post0 kiwisolver-1.4.4 matplotlib-3.5.3 \ opencv-python-4.6.0.66 packaging-21.3 pandas-1.4.3 portalocker-2.5.1 \ pyparsing-3.0.9 python-dateutil-2.8.2 pytz-2022.2.1 pywin32-304 pyyaml-6.0 \ scipy-1.9.0 six-1.16.0 tqdm-4.64.0 yacs-0.1.8 **サンプルプログラム [#u5618b41] 写真に写っている車とバイクの数を数えるプログラム ***プログラムのソース [#w3981a24] #写真の中の2種類の画像(car,motorcycle)の数を数える -d_object2.py import mxnet as mx from gluoncv import model_zoo, data, utils # url = 'https://cdn-ak.f.st-hatena.com/images/fotolife/t/touch-sp/20190814/20190814122423.jpg' filename = '02.jpg' # utils.download(url, filename) net = model_zoo.get_model('faster_rcnn_fpn_resnet101_v1d_coco', pretrained=True, root='./models') net.reset_class(['car'], reuse_weights=['car']) """ すべての画像を読み込み、正規化を適用してテンソルに変換するユーティリティ関数 この関数は 2 つの結果を返します。1 つ目は、形状 (batch_size, RGB_channels, height, width) を持つ NDArrayです。 モデルに直接入力できます。2番目のものには、簡単にプロットできるようにnumpy形式の画像が含まれています。 単一の画像のみを読み込んだため、xの最初の次元は 1 です。https://cv.gluon.ai/api/data.transforms.html """ x, img = data.transforms.presets.rcnn.load_test(filename) class_IDs, scores, bounding_boxs = net(x) count = int(mx.nd.sum(scores[0]>0.9).asscalar()) #-------------- net = model_zoo.get_model('faster_rcnn_fpn_resnet101_v1d_coco', pretrained=True, root='./models') net.reset_class(['motorcycle'], reuse_weights=['motorcycle']) x, img = data.transforms.presets.rcnn.load_test(filename) class_IDs, scores, bounding_boxs = net(x) count2 = int(mx.nd.sum(scores[0]>0.6).asscalar()) print('car = ', count) print('motorcycle= ', count2) ***実行結果 [#d6919272] インストール初回実行時はモジュールのDLが始まる D:\Temp\Python\d_object>python d_object2.py ----(以下のWarningは無視していいみたい)---- C:\Usr\Python\Python310\lib\site-packages\mxnet\gluon\block.py:1591: UserWarning: Cannot decide type for the following arguments. Consider providing them as input: C:\Usr\Python\Python310\lib\site-packages\mxnet\gluon\block.py:1591: UserWarning: Cannot decide type for the following arguments. Consider providing them as input: ----(ここまで)----- data: None input_sym_arg_type = in_param.infer_type()[0] ----(ここからモジュールのDL)---- Downloading ./models\faster_rcnn_fpn_resnet101_v1d_coco-1194ab4e.zip from \ https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/faster_rcnn_fpn_resnet101_v1d_coco-1194ab4e.zip... 231264KB [01:11, 3222.49KB/s] ----(DLここまで)---- car = 4 motorcycle= 2 -サンプル画像 &ref("./02-1.png"); ***参考 [#p9a7b1c1] -https://touch-sp.hatenablog.com/entry/2019/08/14/101234 **このモジュールでののような種類が判別できるか表示 [#na8df828] ***ソース [#hf35ed9c] -howtype.py from gluoncv import model_zoo net = model_zoo.get_model('faster_rcnn_fpn_resnet101_v1d_coco', pretrained=True, root='./models') print('検出種類', net.classes) print('検出種類数' ,len(net.classes)) ***実行結果 [#j187a1c0] python howtype.py C:\Usr\Python\Python310\lib\site-packages\mxnet\gluon\block.py:1591: UserWarning: Cannot decide type for the following arguments. Consider providing them as input: data: None input_sym_arg_type = in_param.infer_type()[0] 検出種類 ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck',\ 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench',\ 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', \ 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', \ 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', \ 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', \ 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', \ 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', \ 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', \ 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', \ 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush'] 検出種類数 80 **その他 [#if5b7755] ***以下のエラーは無視でよいみたい [#r313797e] C:\Usr\Python\Python310\lib\site-packages\mxnet\gluon\block.py:1591: UserWarning: Cannot decide type for the following arguments. Consider providing them as input:~ C:\Usr\Python\Python310\lib\site-packages\mxnet\gluon\block.py:1591: \~ UserWarning: Cannot decide type for the following arguments. Consider providing them as input:~ data: None ***mxnetのバージョン確認 [#m9b9bc29] -verchk.py # mxnetのバージョン確認 import mxnet print ('mxnet version ', mxnet.__version__) -実行 C:\temp\Python\d_object>python verchk.py mxnet version 1.8.0 **「ImageNet」(「ILSVRC2012」データセット)について [#n6109b91] -http://starpentagon.net/analytics/imagenet_ilsvrc2012_dataset/