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

初めに

GluonCV 0.5.0が公開された。
「inceptionv3_kinetics400」のpretrained modelが使用できるようになった。
今回は静止画のデモのみ行った。

環境

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.0
graphviz==0.8.4
idna==2.6
kiwisolver==1.1.0
matplotlib==3.1.1
mxnet-mkl==1.5.0
numpy==1.16.5
Pillow==6.1.0
pyparsing==2.4.2
python-dateutil==2.8.0
requests==2.18.4
scipy==1.3.1
six==1.12.0
tqdm==4.35.0
urllib3==1.22

写真(「sample.jpg」)

f:id:touch-sp:20190909191638j: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_kinetics400', 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))

結果

[snowboarding]  probability=0.996021

感想

400パターンの行動が学習されている。
これを使えば人画像のimage captioningがうまくできるかも。