Классификация изображений в Pytorch - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над fa cenet -pytorch библиотекой в ​​Pytorch, я хочу знать

  1. увеличение данных должно происходить набор данных или набор тестовых данных?

  2. сколько изображений я должен поместить, по крайней мере, в набор тестовых данных (я использовал 2% изображений в наборе тестовых данных)

  3. У меня есть 21 класс (лицо 21 человек) и с (набор данных vggface2) с режимом оценки, достаточно ли этого для обучения и тестирования набора данных?

  4. как визуализировать Изображения в тестовом наборе данных для отображения, если лицо соответствует или нет, я пробовал это, но это вызовет эту ошибку:

TypeError: Неверная форма (3, 160, 160) для данные изображения

Форма изображения: (10, 3, 160, 160)

dataiter = iter(test_loader)
images, labels = dataiter.next()
# get predictions
preds = np.squeeze(net(images).data.max(1, keepdim=True)[1].numpy())
images = images.numpy()

# plot the images in the batch, along with predicted and true labels
fig = plt.figure(figsize=(25, 4))
for idx in np.arange(batch_size):
    ax = fig.add_subplot(2, batch_size/2, idx+1, xticks=[], yticks=[])
    ax.imshow(np.squeeze(images[idx]), cmap='gray')
    ax.set_title("{} ({})".format(classes[preds[idx]], classes[labels[idx]]),
             color=("green" if preds[idx]==labels[idx] else "red"))
как получить входные лица с веб-камеры после обнаружения лица (функция прогнозирования)?
cap = cv.VideoCapture(0)
while True:
    ret, frame = cap.read()
    frame = cv.resize(frame, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
    image = predict_draw_bounding_box(frame)
    cv.imshow('Output', image)
    c = cv.waitKey(1)
    if c == 27:
        break
cap.release()
cv.destroyAllWindows()

Но я не знаю, как реализовать функцию predict_draw_bounding_box?

Спасибо за любой совет

1 Ответ

2 голосов
/ 08 апреля 2020

Это много вопросов; вероятно, вам следует разбить их на несколько вопросов. В любом случае, я постараюсь ответить на некоторые вопросы.

  1. Увеличение данных, как правило, должно выполняться только для набора данных поезда. Типичные дополнения включают в себя случайное вращение, изменение размера посевов, горизонтальные сальто, вырез и т. Д. Все это только go в наборе поездов.

    Кроме этого, на макушке головы, я могу думать только о нормализации канала как о единственном дополнении, которое вы обычно применяете как для тренировочного, так и для тестового набора. Вы вычисляете x-x_mean/sigma по каналам для всех изображений в наборе данных.

  2. Процент изображений в вашем тестовом наборе данных полностью эмпирический и зависит от того, сколько изображений у вас действительно есть. Для очень больших наборов данных с миллионами и более изображений небольшой процент, например, 2%, вполне подойдет. Однако, если количество ваших изображений составляет десять тысяч, тысячи или даже меньше, рекомендуется использовать около 20% в качестве набора тестов.

  3. Не могу понять ваш вопрос.

  4. Ваши изображения в форме (3, 160, 160). Это синтаксис первого канала, используемый в системе ntor.Module в pytorch, но для построения изображения RGB в matplotlib требуется, чтобы канал имел последнее измерение, ie, (160,160,3). Если images представляет собой серию изображений с формой (10,3,160,160), то выполните:

    ...
    images = images.numpy()
    images = images.swapaxes(1,2).swapaxes(2,3)
    ...
    

    Это изменит его на (10,160,160,3), без ущерба для порядка осей.

  5. Понятия не имею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...