Установка

## Настройка:
После установки прежде чем включать Facerecognition нужно настроить
1. Выбрать модель

войти на сервер под www-data:
```bash
docker exec -u www-data -it nextcloud-cn bash
```

войти на сервер под www-data:
```bash
php occ face:setup --memory 10GB
php occ face:setup --model 1
php occ face:setup --model 3
php occ config:app:set facerecognition setMinimumFacesInCluster --value 0.35
php occ config:app:set facerecognition sensitivity --value 0.333
php occ config:app:set facerecognition min_confidence --value 0.82
php occ config:app:set facerecognition assigned_memory --value 10485760000
php occ config:app:set facerecognition min_image_size --value 256
php occ config:app:set facerecognition analysis_image_area --value 8167200
php occ config:app:set facerecognition min_faces_in_cluster --value 5
php occ config:app:set facerecognition max_faces_in_cluster --value 9999999
php occ config:app:set facerecognition handle_shared_files --value false
php occ config:app:set facerecognition handle_external_files --value true
php occ config:app:set facerecognition enabled --value yes
```

посмотреть текйщие настройки:
```bash
php occ config:list facerecognition
```

```bash
# Распознование лиц, этап 1 для пользователя:
#sudo -u www-data php occ face:reset --user_id valentina_tina # Сброс всех результатов
php occ user:setting <USER_NAME> facerecognition stale_images_last_checked 0
php occ user:setting <USER_NAME> facerecognition recreate_clusters false
php occ user:setting <USER_NAME> facerecognition force_create_clusters false
php occ user:setting <USER_NAME> facerecognition stale_images_removal_needed false
php occ user:setting <USER_NAME> facerecognition enabled true
php occ user:setting <USER_NAME> facerecognition full_image_scan_done true

php occ preview:pre-generate
php occ files:scan <USER_NAME>
php occ face:background_job --user_id <USER_NAME> --defer-clustering
php occ face:background_job --user_id --defer-clustering
php /usr/src/nextcloud/occ face:stats -u <USER_NAME>

# Распознование лиц на основе cron.php
php occ preview:generate -vvv
php occ face:background_job
php occ face:background_job --defer-clustering
php occ face:stats
```
Оптимальный порядок запуска:
```
# 1. Запуск обновления/создания эскизов
/usr/local/bin/php -f /var/www/html/occ memories:index --retry
# 2. Синхранизация фото
/usr/local/bin/php -f /var/www/html/occ face:background_job --user_id lukas_endigo_91 --sync-mode -vvv
# 3. Анализ фото
/usr/local/bin/php -f /var/www/html/occ face:background_job --user_id lukas_endigo_91 --analyze-mode -vvv
# 4. Группировка по кластерам
/usr/local/bin/php -f /var/www/html/occ face:background_job --user_id lukas_endigo_91 --cluster-mode -vvv
# 5. Все в одной строке 
/usr/local/bin/php -f /var/www/html/occ face:background_job --user_id lukas_endigo_91 --sync-mode --analyze-mode --cluster-mode -vvv
```

## face:background_job --help
```
/usr/local/bin/php -f /var/www/html/occ face:background_job --help
Описание:
  Эквивалент задания cron для анализа изображений, извлечения лиц и создания кластеров найденных лиц

Использование:
  face:background_job [опции]

Опции:
  -u, --user_id=USER_ID                Анализировать лица только для указанного пользователя. Если не указано, анализируются изображения для всех пользователей.
  -M, --max_image_area=MAX_IMAGE_AREA  Ограничивает максимальную площадь (в пикселях^2) изображения, передаваемого в нейронную сеть, эффективно снижая необходимую память. Используйте это, если распознавание лиц аварийно завершает работу.
      --sync-mode                      [1] Выполнить все действия, связанные с синхронизацией файлов. Новые пользователи, общие или удаленные файлы и т.д.
      --analyze-mode                   [2] Выполнить только анализ изображений для получения лиц и их дескрипторов.
      --cluster-mode                   [3] Выполнить только кластеризацию лиц для получения групп людей.
      --defer-clustering               [4] Отложить кластеризацию лиц до завершения анализа, чтобы получить группы людей за одно выполнение команды. по сути [2] analyze-mode и [3]cluster-mode
  -t, --timeout=TIMEOUT                Установить тайм-аут в секундах для этой команды. По умолчанию команда выполняется без тайм-аута, т.е. бесконечно. [по умолчанию: 0]
  -h, --help                           Показать справку для данной команды. Если команда не указана, показать справку для списка команд.
  -q, --quiet                          Не выводить никаких сообщений.
  -V, --version                        Показать версию приложения.
      --ansi|--no-ansi                 Принудительно включить (или отключить --no-ansi) вывод ANSI.
  -n, --no-interaction                 Не задавать никаких интерактивных вопросов.
      --no-warnings                    Пропустить глобальные предупреждения, показать только вывод команды.
  -v|vv|vvv, --verbose                 Увеличить уровень подробности сообщений: 1 для обычного вывода, 2 для более подробного и 3 для отладки.
```

```
# Выполнить сброс распознования
/usr/local/bin/php -f /var/www/html/occ face:reset --user_id=lukas_endigo_91 --all
```