Какие лабовы готовы:
- 1 - Классификация изображения с использование Keras
- 2 - Трансфертное обучение
- 3 - Повышение точности сверточной нейронной сети
- 4 - Производительность при распознавании образов с помощью TensorFlow
- 5 - Облачные API для распознавания образов
- Установить Python версии 3.10 или выше (возможно будет работать и на Python 3.9), если не установлено
- Проверить установку можно командой в терминале
python --version
- Однако, если вы устанавливали Python без автоматического добавления в системные переменные, вам необходимо найти путь к исполняемому файлу. На Windows это обычно
C:\Users\Ваше имя пользователя\AppData\Local\Programs\Python\PythonВЕРСИЯ\python.exe
. Если это так, в шаге 4 (ТОЛЬКО В ШАГЕ 4), вместоpython
вам необходимо использовать"C:\Users\Ваше имя пользователя\AppData\Local\Programs\Python\PythonВЕРСИЯ\python.exe"
- А чтобы проверить версию:
"C:\Users\Ваше имя пользователя\AppData\Local\Programs\Python\PythonВЕРСИЯ\python.exe" --version
- Проверить установку можно командой в терминале
- Скопируйте репозиторий с лабами вручную или используя команду
git clone https://github.com/F33RNI/PatternRecognitionLabs
- Откройте терминал и войдите в эту папку используя команду
cd "путь\к папке PatternRecognitionLabs"
- Создайте виртуальную среду используя команду
python -m venv venv
- Активируйте виртуальную среду. На Windows, для этого пропишите в терминале
venv\Scripts\activate.bat
. На Linuxsource venv/bin/activate
- Если виртуальная среда создана и запущена верно, в терминале перед текущей рабочей директорией появится
(venv)
- Если виртуальная среда создана и запущена верно, в терминале перед текущей рабочей директорией появится
- Установите все пакеты для лабов, используя команду
pip install -r requirements.txt
- Пропишите
pip list
. Вы должны увидеть много установленных пакетов, включаяtensorflow
,numpy
,keras
,Pillow
и другие - Готово!
В качестве отчётов вам необходимо будет записать видео (поэтому в этом репозитории нет примеров отчётов). Ниже представлены инструкции по запуску лабов
- Перейдите в директорию LR1 используя команду
cd LR1
, находясь в основной папке PatternRecognitionLabs с активированной виртуальной средой (см. секцию🕒 Подготовка к запуску лабов
) - В файле
main.py
поменяйтеIMAGE_PATH
на путь к любой картинке которую хотите распознать - Запустите скрипт используя команду
python main.py
. Выход должен выглядеть примерно так:
1/1 [==============================] - 2s 2s/step
('n03944341', 'pinwheel', 1.0)
('n03476684', 'hair_slide', 3.3065376e-08)
('n03271574', 'electric_fan', 6.2919483e-09)
- Если всё верно, начните запись видео, изменяйте
IMAGE_PATH
на разные пути к разным картинкам, запускайте скрипт и показывайте результат - Готово
- Если для скачивания этого репозитория вы использовали
git
, то для того, чтобы подгрузить новые файлы для этой лабораторной выполните командуgit pull
- Активируйте виртуальную среду и установите недостающие пакеты
pip install -r requirements.txt
- Перейдите в директорию LR2 используя команду
cd LR2
- В файле
main.py
поменяйтеIMAGE_PATH
на путь к фотке кошбки / шобаки которую хочите классифицировать- Рекомендую использовать примеры из датасета
kagglecatsanddogs_5340
. Например:kagglecatsanddogs_5340/PetImages/Cat/0.jpg
- (в датасете, с целью экономии места, занимаемого репозиторием, было оставлено только по 20 картинок)
- Рекомендую использовать примеры из датасета
- Запустите скрипт используя команду
python main.py
. Выход должен выглядеть примерно так
Predicted Label: cat
Probabilities: tensor([[0.9989, 0.0011]], grad_fn=<SoftmaxBackward0>)
- Если всё верно, начните запись видео, изменяйте
IMAGE_PATH
на разные пути к разным картинкам, запускайте скрипт и показывайте результат - Для большего масштаба, советую на видео показать структуру датасета и сказать что взят он был от сюда https://www.microsoft.com/en-us/download/details.aspx?id=54765. Модель же была взята предобученная. А если что, структура типичной модели cats vs dogs выглядеть может так (это тоже можно показать на видео):
model = Sequential()
model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=(3, ROWS, COLS)))
model.add(BatchNormalization(axis=-1))
model.add(Activation(activation))
model.add(Convolution2D(32, 3, 3, border_mode='same', activation=activation))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64, 3, 3, border_mode='same'))
model.add(BatchNormalization(axis=-1))
model.add(Activation(activation))
model.add(Convolution2D(64, 3, 3, border_mode='same', activation=activation))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(128, 3, 3, border_mode='same'))
model.add(BatchNormalization(axis=-1))
model.add(Activation(activation))
model.add(Convolution2D(128, 3, 3, border_mode='same', activation=activation))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(256, 3, 3, border_mode='same'))
model.add(BatchNormalization(axis=-1))
model.add(Activation(activation))
model.add(Convolution2D(256, 3, 3, border_mode='same', activation=activation))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(256,init='he_uniform'))
model.add(BatchNormalization(axis=-1))
model.add(Activation(activation))
model.add(Dropout(0.2))
model.add(Dense(256,init='he_uniform'))
model.add(BatchNormalization(axis=-1))
model.add(Activation(activation))
model.add(Dropout(0.2))
model.add(Dense(1,init='he_uniform'))
model.add(BatchNormalization(axis=-1))
model.add(Activation('sigmoid'))
model.compile(loss=objective, optimizer=optimizer, metrics=['accuracy'])
return model
- Если для скачивания этого репозитория вы использовали
git
, то для того, чтобы подгрузить новые файлы для этой лабораторной выполните командуgit pull
- Активируйте виртуальную среду и установите недостающие пакеты
pip install -r requirements.txt
- Запустите сервер TensorBoard
- Откройте второй терминал, перейдите в директорию в директорию LR3 используя команду
cd LR3
- Создайте папку
tensorboard
при помощи командыmkdir tensorboard
- Запустите сервер TensorBoard, используя команду
tensorboard --logdir ./tensorboard --alsologtostderr
- Откройте TensorBoard в браузере перейдя по указанной в терминале ссылке (обычно http://localhost:6006/)
- Откройте второй терминал, перейдите в директорию в директорию LR3 используя команду
- В основном терминале перейдите в директорию LR3 используя команду
cd LR3
- Скачайте датасет от сюда https://www.microsoft.com/en-us/download/details.aspx?id=54765 и распакуйте архив куда угодно
- Для более быстрого обучения, из папок Cats и Dogs можно удалить от половины до 2/3 изображений
- В файле
main.py
вDATASET_PATH
укажите путь к папке PetImages внутри распакованного датасета - Запустите скрипт используя команду
python main.py
и дождитесь начала обучения (дождитесь чтобы прошла 1 эпоха хотябы)- Если у Вас установлена CUDA и вы хотите обучать, используя GPU, но возникла ошибка, попробуйте указать путь к CUDA таким образом:
╰─ which nvcc /opt/cuda/bin/nvcc XLA_FLAGS=--xla_gpu_cuda_data_dir="/opt/cuda/" python main.py
- Либо же, обучать используя только CPU:
CUDA_VISIBLE_DEVICES="-1" python main.py
- Откройте TensorBoard и покажите на видео как происходит процесс обучения (как в терминале так и в TensorBoard)
- Прекратите выполнение обучения спустя какое то время, нажав CTRL+C
- Включите
EARLY_STOPPING_ENABLED
вmain.py
и запустите обучение заново. По идее, оно должно будет остановиться само спустя какое то время - Ещё, можно изменять
LEARNING_RATE
. От этого тоже будет меняться скорость обучения. На видео показывайте графики функции потери и точности предсказаний - В общем, изменяйте чо нить и показывайте на видео кучу графиков
В этой работе требовалось провести эксперименты с производительностью обучения нейронной сети, сосредоточив внимание на сравнении производительности между центральным процессором (CPU) и графическим процессором (GPU) (этот текст написан лабасёром)
Фактически, в лабе нужно будет сделать всё тоже самое что в третей, только для начала использовать процессор для обучения, а затем видеокарту и сравнить производительность, используя Tensorboard
- Установите CUDA (это самый сложный этап в этой лабе)
- На Linux, CUDA можно часто установить при помощи встроенного менеджера пакетов. Например, чтобы установить, используя pamac:
pamac install cuda
- На Windows, установщик можно скачать от сюда: https://developer.nvidia.com/cuda-downloads?target_os=Windows
- На Linux, CUDA можно часто установить при помощи встроенного менеджера пакетов. Например, чтобы установить, используя pamac:
- Убедитесь, что у вас установлена CUDA:
nvcc --version
╰─ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2023 NVIDIA Corporation ...
- Если для скачивания этого репозитория вы использовали
git
, то для того, чтобы подгрузить новые файлы для этой лабораторной выполните командуgit pull
- Активируйте виртуальную среду и установите недостающие пакеты
pip install -r requirements.txt
- Запустите сервер TensorBoard
- Откройте второй терминал, перейдите в директорию в директорию LR4 используя команду
cd LR4
- Создайте папку
tensorboard
при помощи командыmkdir tensorboard
- Запустите сервер TensorBoard, используя команду
tensorboard --logdir ./tensorboard --alsologtostderr
- Откройте TensorBoard в браузере перейдя по указанной в терминале ссылке (обычно http://localhost:6006/)
- Откройте второй терминал, перейдите в директорию в директорию LR4 используя команду
- В основном терминале перейдите в директорию LR4 используя команду
cd LR4
- Если не было скачано в 3 лабораторной, то скачайте датасет от сюда https://www.microsoft.com/en-us/download/details.aspx?id=54765 и распакуйте архив куда угодно
- Для более быстрого обучения, из папок Cats и Dogs можно удалить от половины до 2/3 изображений
- В файле
main.py
вDATASET_PATH
укажите путь к папке PetImages внутри распакованного датасета - Начните запись видео
- Запустите обучение, используя только процессор:
CUDA_VISIBLE_DEVICES="-1" python main.py
- Продемонстрируйте на видео процесс обучения (в консоли и в TensorBoard)
- Продемонстрируйте, что загруженность видеокарты 0 (через
nvidia-smi
или через диспетчер задач) - Дождитесь окончания обучения, переодически показывая процесс на видео
- Запустите обучение, используя CUDA:
python main.py
Если возникла ошибка о том что не найдена куда, попробуйте указать путь к CUDA таким образом:
(инструкция ниже для Linux. На Windows путь к папке cuda
будет другой)
╰─ which nvcc
/opt/cuda/bin/nvcc
XLA_FLAGS=--xla_gpu_cuda_data_dir="/opt/cuda/" python main.py
- Продемонстрируйте на видео процесс обучения (в консоли и в TensorBoard)
- Продемонстрируйте, что загруженность видеокарты высокая (через
nvidia-smi
или через диспетчер задач) - Покажите что процесс обучения идёт быстрее (надеюс)
- Дождитесь окончания обучения
- Сравните графики обучения наа процессоре с графиками обучения на видеокарте (из TensorBoard)
Тут нужно продемонстрировать существование и возможность использовать какого-нибудь API LLM, которая может принимать изображения на вход (Bard / Gemini). Проще всего продемонстрировать это на примере Gemini
- Убедитесь, что у вас есть доступ к Gemini. Для этого, перейдите по ссылке https://makersuite.google.com/app/prompts/new_freeform и создайте любой запрос, убедитесь что можете получить ответ. Возможно, для этого Вам придётся иметь IP США (использовать VPN / прокси)
- В качестве бесплатного прокси можно использовать https://free-proxy-list.net/
- Перейдите по ссылке и найдите прокси, чтобы в графе
Country
былоUnited States
, и в графеHttps
былоyes
. Скопируйте IP и порт - Для браузеров на основе chromium можно использовать расширение Proxy SwitchyOmega. В настройках, при добавлении прокси в
Protocol
укажитеHTTP
, несмотря на то что это HTTPS прокси. Сохраните изменения, включите выбранный прокси и попробуйте с ним перейти на ссылку выше (и ниже)
- Перейдите по этой ссылке https://makersuite.google.com/app/apikey и сгенерируйте новый API ключ
- Если для скачивания этого репозитория вы использовали
git
, то для того, чтобы подгрузить новые файлы для этой лабораторной выполните командуgit pull
- Активируйте виртуальную среду и установите недостающие пакеты
pip install -r requirements.txt
- Перейдите в директорию LR5 используя команду
cd LR5
- В файле
main.py
поменяйтеAPI_KEY
на ваш API ключ, созданный в пункте 2 - В файле
main.py
поменяйтеPROXY
на ваш прокси-сервер (см. пункт 1.1 - 1.2) в форматеhttp://IP:порт
или оставьтеPROXY
пустым (""
), если вам не нужно использовать прокси - Подготовьте пару любых изображений, которые будете распознавать. В файле
main.py
поменяйтеIMAGE_PATH
на путь к любому изображению - Начните запись видео. СДЕЛАЙТЕ ТАК, ЧТОБЫ ВАШ ТОКЕН И ПРОКСИ НЕ ПОПАЛИ НА ВИДЕО, ЛИБО УДАЛИТЕ ТОКЕН СРАЗУ ЖЕ, ПОСЛЕ ЗАПИСИ
- Перейдите по ссылке https://ai.google.dev/ и расскажите что такое Gemini (загуглите что это). Пример, сгенерированный лабасёром:
> Расскажи пожалуйста на русском кратко о том что такое Gemini и как с его помощью можно распознавать изображения через API
> Gemini - это большая языковая модель от Google AI, которая может генерировать текст, переводить языки, писать различные виды творческого контента и отвечать на ваши вопросы в информационном формате. Gemini также может распознавать изображения и описывать их содержимое. Чтобы распознать изображение с помощью Gemini, вы можете использовать API Vertex AI. Для этого вам понадобится создать проект в Google Cloud Platform и включить API Vertex AI. Затем вы можете использовать SDK для языка программирования, с которым вы знакомы, чтобы отправить запрос API.
- Перейдите по ссылке https://cloud.google.com/vertex-ai/docs/generative-ai/learn/overview и расскажите о том что это официальная документация и где-то там есть даже примеры кода как использовать Gemini
- Запустите скрипт используя команду
python main.py
и дождитесь ответа от Gemini - Покажите на видео ответ от Gemini (и переведите по необходимости)
- Поменяйте
IMAGE_PATH
на путь к другой картинке - Запустите скрипт используя команду
python main.py
и дождитесь ответа от Gemini - Покажите на видео ответ от Gemini (и переведите по необходимости)