Советы или шаблоны для преобразования 4D / 5D массивов (видео в кадры) - PullRequest
0 голосов
/ 24 мая 2018

Мне очень трудно визуализировать изменение формы 4D 5D массивов в numpy / pytorch.(Я предполагаю, что оба изменяют форму в подобном шаблоне, я использую pytorch в настоящее время!)* num видео x каналов видео x кадров видео x высотавидео x ширина видео )

Предположим, я хочу преобразовать видео в кадры как [Н х С х В х Ш], как следуетЯ продолжаю в форме.

Простое применение x = x.reshape(N*D, C, H, W) на самом деле не делает этого, оно дает неправильный порядок элементов.

Можете ли вы помочь мне с тем, как это сделать, и любой небольшой интуиции шаблона, который вы использовали?

Если у меня есть одно видео (если предположить, что 1x3x100x256x256), я использую:

следующий код:

x = x.squeeze(0).T.reshape((100,3,256,256))[:,:,None,:,:] и это работает

отлично. Не могу найти более 1 видео.

Спасибо!

Согласно запросу:

input = np.random.randn(N,C,D,H,W)
output = np.zeros((N*D,C,H,W))

Согласнозапрос кода для цикла, чтобы показать, что я хочу for h in range(N): for i in range(D): for j in range(C): for k in range(H): for l in range(W): output[h*D + i,j,k,l] = input[h,j,i,k,l]

1 Ответ

0 голосов
/ 24 мая 2018

Просто поменяйте местами вторую и третью оси, а затем объедините новую вторую ось (старую третью) с первой с изменением формы -

output = input_array.swapaxes(1,2).reshape(N*D,C,H,W)

Мы также можем использовать transpose: input_array.transpose(0,2,1,3,4)чтобы получить тот же эффект смены осей.

Для общего интуитивного метода, пожалуйста, обратитесь к Интуиция и идея преобразования 4D массива в 2D массив в NumPy .

...