1

Python 3 で R について説明されているすべてをアーカイブしようとしていますが、これまでのところ、それ以上進んでいません。

R のチュートリアルについては、http: //mxnet.readthedocs.org/en/latest/R-package/classifyRealImageWithPretrainedModel.htmlで説明しています。

Pythonで同じことを行うにはどうすればよいですか? 次のモデルを使用: https://github.com/dmlc/mxnet-model-gallery/blob/master/imagenet-1k-inception-bn.md

敬具、ケビン

4

1 に答える 1

1

現時点では、R を使用するよりも Python を使用して mxnet で多くのことを実行できます。私は Gluon API を使用しています。これにより、コードの記述がさらに簡単になり、事前トレーニング済みのモデルをロードできます。

参照するチュートリアルで使用されるモデルはInception モデルです。利用可能なすべての事前トレーニング済みモデルのリストは、こちらにあります

チュートリアルの残りのアクションは、データの正規化と拡張です。API ページで正規化する方法と同様に、新しいデータの正規化を行うことができます。

image = image/255
normalized = mx.image.color_normalize(image,
                                      mean=mx.nd.array([0.485, 0.456, 0.406]),
                                      std=mx.nd.array([0.229, 0.224, 0.225]))

可能な拡張のリストは、こちらから入手できます。

これが実行可能な例です。私は 1 つの拡張のみを行いましたが、さらに多くのパラメーターを追加しmx.image.CreateAugmenterたい場合は、次のようにパラメーターを追加できます。

%matplotlib inline
import mxnet as mx
from mxnet.gluon.model_zoo import vision
from matplotlib.pyplot import imshow

def plot_mx_array(array, clip=False):
    """
    Array expected to be 3 (channels) x heigh x width, and values are floats between 0 and 255.
    """
    assert array.shape[2] == 3, "RGB Channel should be last"
    if clip:
        array = array.clip(0,255)
    else:
        assert array.min().asscalar() >= 0, "Value in array is less than 0: found " + str(array.min().asscalar())
        assert array.max().asscalar() <= 255, "Value in array is greater than 255: found " + str(array.max().asscalar())
    array = array/255
    np_array = array.asnumpy()
    imshow(np_array)


inception_model = vision.inception_v3(pretrained=True)

with open("/Volumes/Unix/workspace/MxNet/2018-02-20T19-43-45/types_of_data_augmentation/output_4_0.png", 'rb') as open_file:
    encoded_image = open_file.read()
    example_image = mx.image.imdecode(encoded_image)
    example_image = example_image.astype("float32")
    plot_mx_array(example_image)


augmenters = mx.image.CreateAugmenter(data_shape=(1, 100, 100))

for augementer in augmenters:
    example_image = augementer(example_image)

plot_mx_array(example_image)

example_image = example_image / 255
normalized_image = mx.image.color_normalize(example_image,
                                      mean=mx.nd.array([0.485, 0.456, 0.406]),
                                      std=mx.nd.array([0.229, 0.224, 0.225]))
于 2018-03-07T19:12:22.250 に答える