Как я могу ввести данные в 3d-сверточную нейронную сеть?

#python-3.x #tensorflow #deep-learning #pytorch #video-processing

Вопрос:

3d CNN работает с видео, МРТ и наборами данных сканирования. Можете ли вы сказать мне, нужно ли мне передавать входные данные (видео) в предлагаемую 3d-сеть CNN и обучать ее весам, как я могу это сделать? как 3d CNN ожидает 5 мерных входных данных;

 [batch size, channels, depth, height, weight]
 

как я могу извлечь глубину из видео?

Если у меня есть 10 видео из 10 разных классов. Продолжительность каждого видео составляет 6 секунд. Я извлекаю 2 кадра за каждую секунду, и для каждого видео получается около 12 кадров.

Размер видео RGB 112×112 —> Высота = 112, Ширина=112 и каналы=3

Если я сохраню размер пакета равным 2

1 видео —> 6 секунд —>> 12 кадров (1 сек == 2 кадра) [каждый кадр (3,112,112)]

10 видео (10 классов) —> 60 секунд —>> 120 кадров

Таким образом, 5 измерений будут примерно такими; [2, 3, 12, 112, 112]

2 —> Два видео будут обработаны для каждого размера пакета.

3 —> Каналы RGB

12 —> каждое видео содержит 12 кадров

112 —> Высота каждого видео

112 —> Ширина каждого видео

Я прав?

Ответ №1:

Да, это, кажется, имеет смысл, если вы хотите использовать 3D CNN. Вы, по сути, добавляете измерение к своим входным данным, которое является временным, логично использовать depth для этого измерение. Таким образом, вы сохраняете ось канала в качестве канала объектов (т. е. не в пространственно-временном измерении).

Имейте в виду, что 3D CNN действительно требуют много памяти. Существуют и другие методы работы с входными данными, зависящими от времени. Здесь вы на самом деле не имеете дело с третьим измерением (то есть с «пространственным» измерением), поэтому вам не требуется использовать 3D CNN.


Редактировать:

Если я передам данные вышеуказанного измерения в 3d CNN, будет ли он изучать обе функции (пространственную и временную)? […] Можете ли вы объяснить мне пространственные и временные особенности?

Если вы используете 3D CNN, то ваши фильтры будут иметь 3D-ядро, а свертка будет трехмерной: по двум пространственным измерениям (ширина и высота), а также по измерениям глубины (здесь они соответствуют временным измерениям, так как вы используете измерение глубины для последовательности кадров видео. 3D CNN позволит вам получать локальную («локальную», потому что поле восприятия ограничено размерами ядер и общим количеством слоев в CNN) пространственную и временную информацию.

Комментарии:

1. Да, я могу использовать CNN LSTM для изучения пространственно-временной информации, но 3d CNN (например, I3D, ResNext (3d)) отлично работает с наборами данных распознавания действий (UCF101).

2. Ну, я не мог бы понять вашу точку зрения, если я хочу изучить пространственно-временную информацию из моих данных, которые находятся в формате видео, Если я введу данные вышеуказанного измерения в 3d CNN, будет ли он изучать обе функции (пространственные и временные)?

3. Можете ли вы объяснить мне пространственные и временные особенности? Как я могу извлечь и то и другое? Например, если я даю третье измерение изображению, которое является глубиной, и оно предназначено для временной информации, а другие два измерения будут для пространственной информации? не так ли?

4. Я понял ваши замечания, что мне нужно сделать, если я хочу извлечь как пространственные, так и временные объекты (не локально)? Как я могу передать набор данных видео в 3d CNN? или мне следует преобразовать мои RGB-видео в оптический поток (временная информация), а затем передать его через LSTM, чтобы найти временные функции?

5. Это ограничение для CNNs-идея локальности, поле восприятия ограничено или потребуется огромная сеть. Это означает, что ваша модель должна будет масштабироваться в зависимости от продолжительности входных последовательностей (глубины), а также пространственных размеров изображений (высоты и ширины). Даже с LSTM ваша временная зависимость будет конечной не по той же причине, хотя это будет связано с трудностями обратного распространения градиента.