Как выполнить массовое тестирование модели обнаружения объектов Sagemaker с набором данных .mat или папкой изображений S3? - PullRequest
0 голосов
/ 18 октября 2018

Я обучил следующую модель Sagemaker: https://github.com/awslabs/amazon-sagemaker-examples/tree/master/introduction_to_amazon_algorithms/object_detection_pascalvoc_coco

Я пробовал обе версии: JSON и RecordIO.В обоих случаях алгоритм протестирован на одном образце изображения.Тем не менее, у меня есть набор данных из 2000 изображений, которые я хотел бы проверить.Я сохранил 2000 изображений JPG в папке внутри корзины S3, и у меня также есть два файла .mat (фото + наземная правда).Как я могу применить эту модель ко всем 2000 снимкам одновременно, а затем сохранить результаты, вместо того, чтобы делать это по одному снимку за раз?

Я использую приведенный ниже код для загрузки одного снимка из моей корзины S3:

object = bucket.Object('pictures/pic1.jpg')
object.download_file('pic1.jpg')
img=mpimg.imread('pic1.jpg')
img_name = 'pic1.jpg'
imgplot = plt.imshow(img)
plt.show(imgplot)

with open(img_name, 'rb') as image:
    f = image.read()
    b = bytearray(f)
    ne = open('n.txt','wb')
    ne.write(b)

import json
object_detector.content_type = 'image/jpeg'
results = object_detector.predict(b)
detections = json.loads(results)
print (detections['prediction'])

1 Ответ

0 голосов
/ 19 октября 2018

Я не уверен, правильно ли я понял ваш вопрос.Однако, если вы хотите подавать несколько изображений в модель одновременно, вы можете создать многомерный массив изображений (байтовые массивы) для подачи в модель.

Код будет выглядеть примерно так.

import numpy as np
...

#  predict_images_list is a Python list of byte arrays
predict_images = np.stack(predict_images_list)

with graph.as_default():
    #  results is an list of typical results you'd get.
    results = object_detector.predict(predict_images)

Но я не уверен, что это хорошая идея - подавать 2000 изображений одновременно.Лучше группировать их по 20-30 изображений за раз и прогнозировать.

...