1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/paddlepaddle-PLSC

Клонировать/Скачать
quick_start.md 9.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 15:58 40a2132

Быстрый старт

Установка

Требования к версии Python:

  • Python 2.7+

1. Установка PaddlePaddle

1.1 Требования к версии:

PaddlePaddle>=1.6.2 или разработка

1.2 Установка через pip

В настоящее время для использования крупномасштабной библиотеки классификации в PaddlePaddle требуется версия GPU.

pip install paddlepaddle-gpu>=1.6.2

Для получения информации о совместимости PaddlePaddle с операционными системами, CUDA, cuDNN и другими программными версиями, а также для получения дополнительных инструкций по установке PaddlePaddle, обратитесь к документации PaddlePaddle.

Если вам необходимо использовать версию PaddlePaddle для разработки, сначала удалите установленную версию PaddlePaddle через командную строку и установите версию для разработки. Для получения дополнительной информации о том, как получить и установить версию PaddlePaddle для разработки, см. список версий whl-пакетов.

pip uninstall paddlepaddle-gpu

2. Установка PLSC для крупномасштабной классификации

Вы можете напрямую установить PLSC для крупномасштабной классификации через pip:

pip install plsc

Обучение и проверка

PLSC предоставляет комплексное решение для всего процесса от обучения модели до оценки её эффективности и развёртывания. В этом разделе описывается, как использовать PLSC для быстрого завершения обучения модели и проверки её эффективности.

Подготовка данных

Мы предполагаем, что структура данных пользователя выглядит следующим образом:

train_data/
|-- agedb_30.bin
|-- cfp_ff.bin
|-- cfp_fp.bin
|-- images
|-- label.txt
`-- lfw.bin

Здесь train_data — это корневой каталог пользовательских данных, agedb_30.bin, cfp_ff.bin, cfp_fp.bin и lfw.bin — разные наборы проверочных данных, которые не являются обязательными. В данном руководстве предполагается использование lfw.bin в качестве набора проверочных данных. Поэтому при просмотре этого руководства убедитесь, что набор проверочных данных lfw.bin доступен. Каталог images содержит изображения обучающего набора в формате JPEG, а каждая строка файла label.txt соответствует изображению обучающего набора и его категории.

Пример содержимого файла label.txt:

images/00000000.jpg 0
images/00000001.jpg 0
images/00000002.jpg 0
images/00000003.jpg 0
... ...

Здесь каждая строка представляет путь к изображению и категорию изображения, разделённые пробелом.

Обучение модели

Код для обучения

Ниже представлен скрипт train.py для выполнения обучения с использованием PLSC:

from plsc import Entry

if __name__ == "__main__":
    ins = Entry()
    ins.set_train_epochs(1)
    ins.set_model_save_dir("./saved_model")
    # ins.set_with_test(False)  # При отсутствии набора проверочных данных отключите комментирование этой строки.
    # ins.set_loss_type('arcface')  # Если доступна только одна видеокарта, отключите комментирование этой строки.
    ins.train()

Процесс обучения с помощью PLSC включает в себя следующие основные шаги:

  1. Импорт класса Entry из пакета plsc, который является интерфейсом для всех функций PLSC.
  2. Создание экземпляра класса Entry.
  3. Вызов метода train класса Entry для начала обучения модели.

По умолчанию метод train использует метод вычисления потерь 'dist_arcface', который требует наличия двух или более видеокарт. Если доступна только одна видеокарта, можно использовать следующую инструкцию для изменения метода вычисления потерь на 'arcface':

ins.set_loss_type('arcface')

По умолчанию процесс обучения после каждого цикла обучения будет проверять модель с помощью набора проверочных данных. Если набор проверочных данных недоступен, вы можете отключить проверку модели, используя следующую инструкцию:

ins.set_with_test(False)

Запуск задачи обучения

Следующий пример показывает, как запустить задачу обучения с использованием указанного скрипта:

python -m paddle.distributed.launch \
    --cluster_node_ips="127.0.0.1" \
    --node_ip="127.0.0.1" \
    --selected_gpus=0,1,2,3,4,5,6,7 \
    train.py

Модуль paddle.distributed.launch используется для запуска задач распределённого обучения на нескольких машинах или нескольких видеокартах, упрощая процесс запуска задач обучения. Каждый параметр имеет следующее значение:

  • cluster_node_ips: список IP-адресов машин, участвующих в обучении, разделенных запятыми;
  • node_ip: IP-адрес текущей обучающей машины;
  • selected_gpus: список видеокарт, используемых каждым узлом обучения, разделенный запятыми.

Для задач обучения на одной машине с несколькими видеокартами можно опустить параметры cluster_node_ips и node_ip, например:

python -m paddle.distributed.launch \
    --selected_gpus=0,1,2,3,4,5,6,7 \
    train.py

При использовании только одной видеокарты для обучения можно запустить задачу обучения следующим образом:

python train.py

Проверка модели

В этом разделе мы используем набор проверочных данных lfw.bin в качестве примера для объяснения того, как оценить эффективность модели.

Код для проверки

Ниже приведен пример скрипта val.py для оценки модели:

from plsc import Entry

if __name__ == "__main__":
    ins = Entry()
    ins.set_checkpoint_dir("./saved_model/0/")
    ins.test()

Во время процесса обучения мы сохраняем параметры модели в каталоге './saved_model', а параметры модели каждого цикла обучения сохраняются в отдельном подкаталоге, например, параметры модели первого цикла обучения сохраняются в каталоге './saved_model/0'.

На этапе проверки модели нам нужно сначала установить каталог параметров модели, а затем вызвать метод test класса Entry, чтобы начать проверку модели.

Запуск задачи проверки

Следующий пример демонстрирует, как запустить задачу проверки с использованием указанного выше скрипта:

python -m paddle.distributed.launch \
    --selected_gpus=0,1,2,3,4,5,6,7 \
    val.py

Используя этот скрипт, задача проверки будет выполняться параллельно на нескольких видеокартах, сокращая время проверки.

Если доступна только одна видеокарта для проверки, можно запустить задачу проверки следующим образом:

python val.py
1
https://api.gitlife.ru/oschina-mirror/paddlepaddle-PLSC.git
git@api.gitlife.ru:oschina-mirror/paddlepaddle-PLSC.git
oschina-mirror
paddlepaddle-PLSC
paddlepaddle-PLSC
master