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

OSCHINA-MIRROR/windandwine-Argus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Проект Argus: проектная документация

1. Проектное описание

Проведена тонкая настройка YOLO v3 и FaceNet для распознавания и идентификации лиц.

2. Структура проекта

  • data — папка с данными, которая содержит:
    • baseface — изображения лиц, на которых проводилось обучение, а также 128-мерные векторы, полученные в результате обучения, и файлы сопоставления имён людей с папками;
    • map.txt — файл сопоставления папок с именами людей;
    • vector.csv — файл, содержащий 128-мерные вектора и соответствующие им метки классов (имена папок);
    • weights_facenet — модель Facenet;
    • weights_yolo — модель YOLO;
    • weights_svm — модель SVM, обученная на основе файла vector.csv;
    • face-names — список предсказанных классов;
    • yolo_anchors.txt — набор якорей, полученный в процессе обучения YOLO v3;
    • net — файлы, содержащие сетевые архитектуры YOLO и Facenet;
    • preprocessing — инструменты предварительной обработки данных;
    • setting — параметры моделей;
    • utils — некоторые методы, заключённые в модули;
    • test.py — основной метод.

3. Модели YOLO_face:

YOLO v3 основан на оригинальной модели авторов и был доработан на наборе данных Wider Face. Модель можно скачать по ссылке здесь, пароль qli4.

Facenet:

  1. model-20170512-110547 — можно скачать по ссылке здесь, пароль 9x2l;
  2. model-20180408-102900 — можно скачать по ссылке здесь, пароль jjf1;
  3. model-20180402-114759 (рекомендуется) — можно скачать по ссылке здесь, пароль 56mh.

4. YOLO v3

Подробная информация о предсказании и обучении YOLO v3 доступна в другом проекте автора YOLO_v3_tensorflow.

5. Проблемы, с которыми столкнулся автор

  1. При тонкой настройке YOLO v3 использовались данные из набора Wider Face, в котором два изображения имели нулевые ширину или высоту. Эти изображения были ошибочно помечены, поэтому их необходимо исключить при фильтрации, иначе NMS может вызвать исключение деления на ноль.
  2. При обучении SVM необходимо провести стандартизацию данных. Для прогнозирования следует использовать те же параметры стандартизации, иначе результаты прогнозирования SVM будут одинаковыми.
  3. Автор использовал модель model-20170512-110547 для получения 128-мерных векторов, но результаты были неудовлетворительными. После перехода на модель model-20180402-114759, которая выдаёт 512-мерные вектора, качество распознавания улучшилось.
  4. Для каждого человека было подготовлено 15 изображений лица. Результаты обучения SVM оказались средними, возможно, стоит увеличить размер выборки или применить некоторые трюки SVM.

6. Использование

Для работы с проектом необходимо установить следующие пакеты:

numpy==1.16.4
pandas==0.24.2
opencv-python==4.1.1
scikit-learn=0.21.2
tensorflow==1.13.1
pillow==6.1.0

7. Размещение моделей

Скачайте модели YOLO_face и Facenet и поместите их в папку data.

8. Создание собственного набора данных лиц

Соберите фотографии лиц людей, которые вы хотите распознать. Поместите каждую фотографию в отдельную папку, начиная с 0 и продолжая нумерацию. Папки должны быть расположены в папке base_face.

Также измените файл map.txt, чтобы он содержал соответствие между номерами папок и именами людей (первая строка в файле map.txt должна соответствовать папке 0).

9. Преобразование фотографий в векторы с помощью инструментов предварительной обработки

Запустите инструмент preprecessing/pre_tools.py и используйте функцию save_vector_csv() для автоматического преобразования фотографий с помощью Facenet в 128- или 512-мерные вектора. Полученные вектора будут сохранены в файле data/base_face/vector.csv.

10. Обучение классификатора SVM

На основе уже сохранённого файла vector.csv проведите стандартизацию данных, затем запустите инструмент prepreccessing/pre_tools.py и функцию train_face_svm(), чтобы обучить модель SVM с использованием scikit-learn. Полученная модель будет сохранена в файле data/weights_svm/svm.pkl.

11. Тестирование

Тестирование можно проводить двумя способами:

  • Тестирование изображений:

    • Поместите тестовые изображения в папку test_img.
    • В файле setting/yolo_args.py измените значение detect_object на img и input_image на путь к изображению.
    • Запустите файл test.py, расположенный в корневой папке проекта.
    • Если вы хотите сохранить обработанные изображения, измените значение output_image в файле setting/yolo_args.py на нужный путь. Убедитесь, что все необходимые папки существуют.
  • Видеотестирование:

    • Поместите видеофайлы для тестирования в папку test_video.
    • В файле setting/yolo_args.py измените значение detect_object на video и input_video на путь к видеофайлу.
    • Запустите файл test.py, расположенный в корневой папке проекта.
    • Если вы хотите сохранить обработанное видео, измените значение output_video в файле setting/yolo_args.py на нужный путь. Убедитесь, что все необходимые папки существуют.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Система распознавания лиц на основе YOLO v3, FaceNet и SVM. Развернуть Свернуть
LGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/windandwine-Argus.git
git@api.gitlife.ru:oschina-mirror/windandwine-Argus.git
oschina-mirror
windandwine-Argus
windandwine-Argus
master