初めに
今回はGluonCVのデモ(静止画)のみ行った。
環境
Windows 10 Pro GPUなし Python 3.6.8
バージョンの確認(pip freeze)
「mxnet-mkl」「gluoncv」だけをpip経由でインストールすればOK。
他のものは勝手についてきた。
certifi==2019.6.16 chardet==3.0.4 cycler==0.10.0 gluoncv==0.5.0b20190801 graphviz==0.8.4 idna==2.6 kiwisolver==1.1.0 matplotlib==3.1.1 mxnet-mkl==1.6.0b20190802 numpy==1.16.4 Pillow==6.1.0 pyparsing==2.4.2 python-dateutil==2.8.0 requests==2.18.4 scipy==1.3.0 six==1.12.0 tqdm==4.32.2 urllib3==1.22
写真(「sample.jpg」)
コード
from mxnet import nd, image from mxnet.gluon.data.vision import transforms from gluoncv.model_zoo import get_model transform_fn = transforms.Compose([ transforms.Resize((400,300)), transforms.CenterCrop(size=299), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) img = transform_fn(image.imread('sample.jpg')) net = get_model('inceptionv3_ucf101', nclass=101, pretrained=True) pred = net(img.expand_dims(axis=0)) classes = net.classes id = nd.argmax(pred, axis=1).astype('int').asscalar() prob = nd.softmax(pred)[0][id].asscalar() print('[%s] probability=%f'%(classes[id], prob))
結果
[PlayingPiano] probability=0.952985
感想
静止画で行動認識がしっかりできないとImage Captioningをしようと思っても精度はあがらないのでは?
このモデルをImage CaptioningのEncoderに使用すれば、人限定ではあるがそれなりの精度がでるかも。