たった20行弱で行動認識のデモ(gluoncv)

初めに

今回は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」)

f:id:touch-sp:20190802132143j:plain

コード

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に使用すれば、人限定ではあるがそれなりの精度がでるかも。