{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Формирование нейросетевой архитектуры модели и загрузка ее весов для получения нейросетевых признаков (видео модальность)\n", "\n", "
\n", "\n", "> - `_b5.video_model_deep_fe_` - Нейросетевая модель **nn.Module** для получения нейросетевых признаков" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "nbsphinx": "hidden", "tags": [] }, "outputs": [], "source": [ "import os # Взаимодействие с файловой системой\n", "import sys # Доступ к некоторым переменным и функциям Python\n", "\n", "PATH_TO_SOURCE = os.path.abspath(os.path.dirname(globals()['_dh'][0]))\n", "PATH_TO_ROOT = os.path.join(PATH_TO_SOURCE, '..', '..', '..')\n", "\n", "sys.path.insert(0, os.path.abspath(PATH_TO_ROOT))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Импорт необходимых инструментов" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from oceanai.modules.lab.build import Run" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Сборка" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "**[2024-10-08 16:26:05] OCEANAI - персональные качества личности человека:**
    Авторы:
        Рюмина Елена [ryumina_ev@mail.ru]
        Рюмин Дмитрий [dl_03.03.1991@mail.ru]
        Карпов Алексей [karpov@iias.spb.su]
    Сопровождающие:
        Рюмина Елена [ryumina_ev@mail.ru]
        Рюмин Дмитрий [dl_03.03.1991@mail.ru]
    Версия: 1.0.0a40
    Лицензия: BSD License

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_b5 = Run(\n", " lang = 'ru', # Язык\n", " color_simple = '#333', # Цвет обычного текста (шестнадцатеричный код)\n", " color_info = '#1776D2', # Цвет текста содержащего информацию (шестнадцатеричный код)\n", " color_err = '#FF0000', # Цвет текста содержащего ошибку (шестнадцатеричный код)\n", " color_true = '#008001', # Цвет текста содержащего положительную информацию (шестнадцатеричный код)\n", " bold_text = True, # Жирное начертание текста\n", " num_to_df_display = 30, # Количество строк для отображения в таблицах\n", " text_runtime = 'Время выполнения', # Текст времени выполнения\n", " metadata = True # Отображение информации о библиотеке\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Формирование нейросетевой архитектуры модели (`FI V2`)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "**[2024-10-08 16:26:05] Формирование нейросетевой архитектуры для получения нейросетевых признаков (видео модальность) ...** " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "**--- Время выполнения: 0.101 сек. ---**" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "res_load_video_model_deep_fe = _b5.load_video_model_deep_fe(\n", " show_summary = False, # Отображение сформированной нейросетевой архитектуры модели\n", " out = True, # Отображение\n", " runtime = True, # Подсчет времени выполнения\n", " run = True # Блокировка выполнения\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Загрузка весов нейросетевой модели" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "**[2024-10-08 16:26:06] Загрузка весов нейросетевой модели для получения нейросетевых признаков (видео модальность) ...** " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "**[2024-10-08 16:26:09] Загрузка файла \"weights_2022-11-01_12-27-07.pth\" 100.0% ...** " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "**--- Время выполнения: 3.537 сек. ---**" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Настройки ядра\n", "_b5.path_to_save_ = './models' # Директория для сохранения файла\n", "_b5.chunk_size_ = 2000000 # Размер загрузки файла из сети за 1 шаг\n", "\n", "url = _b5.weights_for_big5_['video']['fi']['fe']['googledisk']\n", "\n", "res_load_video_model_weights_deep_fe = _b5.load_video_model_weights_deep_fe(\n", " url = url, # Полный путь к файлу с весами нейросетевой модели\n", " force_reload = True, # Принудительная загрузка файла с весами нейросетевой модели из сети\n", " out = True, # Отображение\n", " runtime = True, # Подсчет времени выполнения\n", " run = True # Блокировка выполнения\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Отображение сформированной нейросетевой архитектуры модели" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ResNet(\n", " (conv_layer_s2_same): Conv2dSame(3, 64, kernel_size=(7, 7), stride=(2, 2), bias=False)\n", " (batch_norm1): BatchNorm2d(64, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " (max_pool): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (layer1): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(64, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(64, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (i_downsample): Sequential(\n", " (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (1): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " )\n", " (relu): ReLU()\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(64, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(64, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(64, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(64, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " )\n", " (layer2): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (batch_norm1): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (i_downsample): Sequential(\n", " (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " )\n", " (relu): ReLU()\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(128, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " )\n", " (layer3): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (batch_norm1): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(1024, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (i_downsample): Sequential(\n", " (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(1024, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " )\n", " (relu): ReLU()\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(1024, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(1024, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(1024, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (4): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(1024, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (5): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(256, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(1024, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " )\n", " (layer4): Sequential(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (batch_norm1): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(2048, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (i_downsample): Sequential(\n", " (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(2048, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " )\n", " (relu): ReLU()\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(2048, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm1): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=same, bias=False)\n", " (batch_norm2): BatchNorm2d(512, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (batch_norm3): BatchNorm2d(2048, eps=0.001, momentum=0.99, affine=True, track_running_stats=True)\n", " (relu): ReLU()\n", " )\n", " )\n", " (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n", " (fc1): Linear(in_features=2048, out_features=512, bias=True)\n", " (relu1): ReLU()\n", " (fc2): Linear(in_features=512, out_features=7, bias=True)\n", ")" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "_b5.video_model_deep_fe_" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.11" } }, "nbformat": 4, "nbformat_minor": 4 }