Загрузка данных
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Российская академия народного хозяйства и государственной службы
при Президенте Российской Федерации»
Колледж многоуровневого профессионального образования
КВАЛИФИКАЦИОННЫЙ ЭКЗАМЕН
Вариант 28
Пошаговый план
Подробная инструкция выполнения задания
Биометрические системы идентификации
Выполнил(а): ______________________________
Группа: _________________________________
Проверил(а): ______________________________
Москва, 2026
ВВОДНАЯ ЧАСТЬ
Данный файл предназначен для выполнения квалификационного экзамена по варианту 28. По условию варианта выполняется подготовка рабочей станции с GPU для компании, разрабатывающей биометрические системы идентификации. Нужно установить среду разработки с поддержкой Python и библиотек компьютерного зрения, SDK для камер высокого разрешения, инструменты обработки изображений в реальном времени, пакет для обучения нейросетевых моделей, а также средства защиты биометрических данных и контроля качества распознавания.
Чтобы работу можно было показать за ограниченное время, демонстрационный стенд выполняется в VirtualBox. Основной рабочий вариант — Ubuntu Desktop 26.04 LTS или Ubuntu Desktop 24.04 LTS, если именно этот образ выдан преподавателем. Для реальной GPU-станции дополнительно устанавливаются драйвер NVIDIA и CUDA Toolkit. В VirtualBox полноценный проброс NVIDIA GPU обычно недоступен, поэтому CUDA показывается как обязательная производственная настройка, а демонстрационная часть распознавания запускается на CPU.
В качестве SDK для работы с биометрическими камерами выбран Basler pylon Software Suite. Он подходит для промышленных камер высокого разрешения, включает pylon Viewer, SDK и инструменты настройки захвата. Если Basler pylon недоступен в аудитории, можно установить открытый стек Aravis для GigE Vision/GenICam камер, но в документации удобнее оставить pylon как основной SDK, потому что у него есть наглядный интерфейс для скриншотов.
Коротко: что получится в конце
— Виртуальная машина с установленной ОС, настроенной сетью, SSH и удаленным доступом к активной сессии.
— Установлены базовые программы: офисный пакет, архиватор, графический редактор, диагностические утилиты и виртуальный PDF-принтер.
— Созданы группы пользователей, рабочие каталоги, права доступа и журнал аудита для биометрических данных.
— Сделаны снимок VirtualBox, точка восстановления Timeshift и экспорт OVA-образа.
— Установлены инструменты варианта 28: VS Code, Python, OpenCV, PyTorch, NumPy, v4l-utils, Basler pylon SDK, CUDA/NVIDIA-проверки.
— Создан демонстрационный проект biometric_id с обработкой кадра, оценкой качества изображения и примером обучения модели распознавания.
— Подготовлены скриншоты, которые вставляются во второй файл — «Руководство пользователя».
Что скачать до начала экзамена
Ресурс Что скачать / открыть Зачем нужно
Oracle VirtualBox Установщик для Windows hosts и Extension Pack той же версии Создание виртуальной машины, настройка сети, снимки состояния и экспорт OVA.
Ubuntu Desktop 26.04 LTS / 24.04 LTS ISO-образ ОС из ресурсов экзамена или с официальной страницы Ubuntu Рабочая ОС для стенда варианта 28.
Visual Studio Code DEB-пакет для Ubuntu или установка через официальный репозиторий Среда разработки Python/C++ проекта биометрической идентификации.
NVIDIA CUDA Toolkit Инструкция и пакеты для Ubuntu с сайта NVIDIA GPU-ускорение обучения и обработки изображений на реальной рабочей станции.
Basler pylon Software Suite Linux x86_64 installer или DEB-пакеты SDK и Viewer для камер высокого разрешения.
OpenCV / opencv-python Python-пакеты через pip Обработка изображений и видеопотока в реальном времени.
PyTorch Команда установки с официальной страницы Get Started Обучение нейросетевых моделей распознавания.
CVAT Опционально: репозиторий или Docker Compose проект Разметка датасетов и контроль качества обучающих данных.
Какие скриншоты нужны
В ходе выполнения задания сделай скриншоты по списку ниже. Номера рисунков в этой инструкции совпадают с номерами рисунков во втором файле. Когда вставляешь скриншот в руководство пользователя, вставляй его именно в место с таким же номером.
Номер Название рисунка Что должно быть на скриншоте
1 Создание виртуальной машины BIOMETRIC_GPU_VAR28 Окно VirtualBox с именем BIOMETRIC_GPU_VAR28, выбранным ISO-образом Ubuntu и параметрами машины.
2 Параметры сети виртуальной машины Окно Network в VirtualBox: Adapter 1 = NAT, Adapter 2 = Host-only Adapter.
3 Установленная операционная система Рабочий стол Ubuntu после входа в систему или окно About с названием ОС.
4 Проверка интернет-соединения Терминал с командами ip a, ip route, ping 8.8.8.8 и ping ubuntu.com.
5 Настройка SSH Терминал со статусом ssh, ufw status и примером подключения через порт 2222.
6 Удаленный доступ к активной сессии Окно Settings — Sharing/Remote Desktop или Remmina с подключением к активной сессии.
7 Обновления безопасности ОС Терминал с sudo apt update, sudo apt upgrade и датой последнего обновления.
8 Базовое программное обеспечение Меню приложений или терминал с LibreOffice, GIMP, 7zip/p7zip, htop/hardinfo.
9 Виртуальный принтер PDF Окно печати LibreOffice с выбранным PDF/CUPS-PDF или терминал lpstat -p.
10 Настройка совместимости интерфейса Окно Displays со Scale 100% и разрешением 1280×720/1366×768 либо команда gsettings.
11 Группы пользователей и права доступа Терминал с группами bio_admins, bio_devs, bio_operators, bio_auditors и getfacl для каталога проекта.
12 Журнал аудита биометрического стенда Терминал с auditctl -l или ausearch по ключу biometric_data.
13 Снимок VirtualBox Окно Snapshots со снимком 01_clean_os_after_updates.
14 Точка восстановления Timeshift Окно Timeshift или терминал с successful restore point.
15 Экспорт виртуальной машины в OVA Окно Export Appliance или файл BIOMETRIC_GPU_VAR28.ova в папке.
16 Среда разработки VS Code VS Code с открытой папкой biometric_id и расширениями Python/C++.
17 Проверка GPU, драйвера NVIDIA и CUDA Терминал с nvidia-smi, nvcc --version или пояснением, что в VirtualBox GPU недоступна.
18 Установка библиотек компьютерного зрения Терминал с pip show opencv-python, torch, numpy или python-проверкой cv2/torch.
19 Установка SDK биометрических камер pylon Viewer/Basler pylon или терминал с установленным pylon SDK; допустимо окно No camera found.
20 Проверка камеры и видеопотока Терминал с v4l2-ctl --list-devices или окно тестового видеопотока OpenCV.
21 Демонстрационный скрипт качества кадра Окно VS Code/терминал с biometric_quality_demo.py и результатом face_area/brightness/sharpness/quality_status.
22 Проверка обучения модели распознавания Терминал с запуском train_biometric_model.py, эпохами обучения и сохраненным файлом model_demo.pt.
23 Настройка защиты биометрических данных Терминал с chmod/getfacl для /opt/biometric_id/data и статусом UFW/fail2ban.
24 Проверка мониторинга качества распознавания Терминал или CSV/лог, где видны quality_score, sharpness, brightness, decision.
25 Итоговый состав стенда варианта 28 VS Code или терминал tree ~/biometric_id с папками sdk, realtime, models, data, logs.
НАСТРОЙКА VIRTUALBOX И УСТАНОВКА ОПЕРАЦИОННОЙ СИСТЕМЫ
Установка VirtualBox на основной компьютер
Открой браузер на Windows. Перейди на официальный сайт VirtualBox. Скачай VirtualBox для Windows hosts и Extension Pack той же версии. Запусти установщик от имени администратора. В окнах установки нажимай Next, оставляй все компоненты включенными, соглашайся с временным отключением сетевых подключений и нажми Install. После завершения открой VirtualBox.
Extension Pack устанавливается отдельно: в VirtualBox открой File — Tools — Extension Pack Manager, нажми Install, выбери скачанный Extension Pack, согласись с лицензией и дождись завершения установки.
Создание виртуальной машины
В VirtualBox нажми New. В поле Name введи BIOMETRIC_GPU_VAR28. В поле ISO Image выбери ISO-образ Ubuntu. Укажи Type: Linux, Version: Ubuntu (64-bit).
В разделе Hardware укажи оперативную память 8192 MB, если на компьютере есть минимум 16 GB RAM. Если компьютер слабый, поставь 4096 MB. В поле Processors выбери 2 CPU, а если компьютер позволяет — 4 CPU. Не ставь красную зону, иначе виртуальная машина будет тормозить.
В разделе Hard Disk выбери Create a virtual hard disk now. Тип диска оставь VDI. Размер укажи 60 GB, потому что библиотеки компьютерного зрения, PyTorch и CUDA-зависимости занимают много места. Формат хранения выбери Dynamically allocated.
Скриншот для документации (рис. 1): Сделай скрин окна создания виртуальной машины, где видно имя BIOMETRIC_GPU_VAR28, Ubuntu 64-bit, RAM, CPU и диск.
Настройка параметров виртуальной машины
Выдели созданную VM и нажми Settings. В разделе System — Motherboard поставь Boot Order: Optical, Hard Disk. Убери Floppy. В разделе Processor оставь 2 или 4 процессора и включи PAE/NX, если доступно. В разделе Display поставь Video Memory 128 MB, Graphics Controller VMSVGA, Enable 3D Acceleration можно включить, если VirtualBox работает стабильно.
В разделе Network включи Adapter 1: NAT. Это нужно для выхода в интернет. Включи Adapter 2: Host-only Adapter. Это нужно, чтобы основной компьютер мог подключаться к VM по SSH и удаленному рабочему столу. Если Host-only адаптера нет, создай его через File — Tools — Network Manager.
Для SSH через NAT открой Advanced — Port Forwarding у Adapter 1. Добавь правило: Name SSH, Protocol TCP, Host IP 127.0.0.1, Host Port 2222, Guest IP пусто, Guest Port 22. Это позволит подключаться к VM командой ssh user@127.0.0.1 -p 2222.
Скриншот для документации (рис. 2): Сделай скрин настроек Network: Adapter 1 NAT, Adapter 2 Host-only Adapter, желательно с правилом Port Forwarding 2222 → 22.
Установка Ubuntu
Запусти виртуальную машину. В установщике выбери Try or Install Ubuntu, язык English или Russian. Для экзамена удобнее English, потому что ошибки и команды легче искать. Клавиатуру можно оставить Russian + English. В разделе Updates and other software выбери Normal installation и включи Download updates while installing Ubuntu, если интернет работает.
В разделе Installation type выбери Erase disk and install Ubuntu. Это удалит только виртуальный диск, а не основной компьютер. В часовом поясе выбери Moscow или Amsterdam — это не критично для экзамена. Создай пользователя biometric_admin, имя компьютера biometric-var28, пароль запиши на листок.
После окончания установки нажми Restart Now. Если появится просьба извлечь установочный носитель, нажми Enter. После входа в систему открой Settings — About и проверь, что ОС установлена.
Скриншот для документации (рис. 3): Сделай скрин рабочего стола Ubuntu или окна Settings — About, где видно установленную ОС.
Проверка интернет-соединения
Открой Terminal. Проверь IP-адрес, маршрут и интернет. Эти команды подтверждают выбранный сетевой интерфейс и проверку соединения.
ip aip routeping -c 4 8.8.8.8ping -c 4 ubuntu.com
Если ping 8.8.8.8 работает, а ubuntu.com не работает, проблема в DNS. Проверь настройки сети VirtualBox и перезапусти VM. Если не работает даже ping 8.8.8.8, проверь, что Adapter 1 стоит NAT.
Скриншот для документации (рис. 4): Сделай скрин терминала с ip a, ip route и успешным ping.
ОБНОВЛЕНИЯ, SSH И УДАЛЕННЫЙ ДОСТУП
Установка обновлений безопасности
Сразу после установки обнови систему. Это закрывает критерий установки последних обновлений безопасности.
sudo apt updatesudo apt upgrade -ysudo apt autoremove -ysudo reboot
После перезагрузки проверь дату обновления и версию ядра.
dateuname -aapt list --upgradable 2>/dev/null | head
Скриншот для документации (рис. 7): Сделай скрин терминала после обновления системы и проверки upgradable-пакетов.
Настройка SSH
Установи SSH-сервер. SSH нужен для удаленного администрирования рабочей станции и входит в критерии экзамена.
sudo apt install -y openssh-serversudo systemctl enable --now sshsudo systemctl status ssh --no-pagersudo ufw allow OpenSSHsudo ufw enablesudo ufw status numbered
Проверь подключение с Windows через PowerShell: ssh biometric_admin@127.0.0.1 -p 2222. Если используется Host-only сеть, подключайся по IP второго адаптера, который виден в ip a.
ssh biometric_admin@127.0.0.1 -p 2222
Скриншот для документации (рис. 5): Сделай скрин статуса ssh, ufw status и, по возможности, подключения по SSH.
Настройка удаленного доступа к активной сессии
Открой Settings — Sharing. Включи Sharing, затем Remote Desktop. Включи Remote Desktop и Remote Control. Укажи пароль подключения. Это нужно для критерия удаленного доступа к активной сессии.
Если в Ubuntu нет нужного пункта, установи xrdp. После установки включи службу и разреши порт 3389 в firewall. Подключаться можно через Remote Desktop Connection в Windows или Remmina.
sudo apt install -y xrdpsudo systemctl enable --now xrdpsudo ufw allow 3389/tcpsudo systemctl status xrdp --no-pager
Скриншот для документации (рис. 6): Сделай скрин Settings — Sharing/Remote Desktop или статус xrdp/Remmina.
БАЗОВОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ И СОВМЕСТИМОСТЬ ИНТЕРФЕЙСА
Установка базовых программ
Установи офисный пакет, графический редактор, архиватор и диагностические утилиты. Это закрывает критерии базового программного обеспечения и помогает оформлять скриншоты.
sudo apt install -y libreoffice gimp p7zip-full unzip zip htop hardinfo neofetch curl wget gnupg ca-certificates software-properties-commonlibreoffice --version7z | headhtop --version
Скриншот для документации (рис. 8): Сделай скрин меню приложений или терминала, где видно LibreOffice, GIMP, p7zip/7z, htop/hardinfo.
Установка виртуального принтера
Виртуальный принтер нужен по критериям экзамена. В Ubuntu удобно использовать CUPS-PDF: он сохраняет печать в PDF-файл.
sudo apt install -y cups cups-pdfsudo systemctl enable --now cupslpstat -p
Проверка: открой LibreOffice Writer, напиши одну строку «Проверка виртуального принтера», нажми Print, выбери PDF или CUPS-PDF и сохрани файл.
Скриншот для документации (рис. 9): Сделай скрин окна печати LibreOffice с выбранным PDF/CUPS-PDF или терминала lpstat -p.
Настройка отображения интерфейса
Если меню и кнопки отображаются слишком крупно или мелко, установи масштаб 100% и отключи лишние анимации. Это помогает закрыть критерии совместимости отображения программ.
gsettings set org.gnome.desktop.interface text-scaling-factor 1.0gsettings set org.gnome.desktop.interface enable-animations falsexrandr | head
В Settings — Displays поставь Resolution 1280×720 или 1366×768 и Scale 100%. В VirtualBox в меню View выбери Scale Factor 100%.
Скриншот для документации (рис. 10): Сделай скрин настроек Displays или VirtualBox View, где видно масштаб 100% и нормальное отображение интерфейса.
ПОЛЬЗОВАТЕЛИ, ПРАВА ДОСТУПА, АУТЕНТИФИКАЦИЯ И АУДИТ
Создание групп и пользователей
Создай группы под служебные обязанности. Администраторы управляют системой, разработчики редактируют код, операторы только запускают проверку качества, аудиторы читают журналы. Такой подход показывает разграничение прав доступа.
sudo groupadd bio_adminssudo groupadd bio_devssudo groupadd bio_operatorssudo groupadd bio_auditorssudo adduser dev_biosudo adduser operator_biosudo adduser auditor_biosudo usermod -aG bio_devs dev_biosudo usermod -aG bio_operators operator_biosudo usermod -aG bio_auditors auditor_biogroups dev_biogroups operator_biogroups auditor_bio
Настройка прав доступа к биометрическим данным
Создай рабочие каталоги. Каталог data содержит биометрические изображения и должен быть максимально закрыт. Каталог project доступен разработчикам, logs доступен аудиторам на чтение. В демонстрации данные не являются настоящими персональными данными, но права настраиваются так, как будто это реальные биометрические шаблоны.
sudo mkdir -p /opt/biometric_id/project /opt/biometric_id/data/raw /opt/biometric_id/data/templates /opt/biometric_id/logs /opt/biometric_id/backupssudo chown -R root:bio_devs /opt/biometric_id/projectsudo chmod 2770 /opt/biometric_id/projectsudo chown -R root:bio_admins /opt/biometric_id/datasudo chmod -R 2770 /opt/biometric_id/datasudo setfacl -m g:bio_devs:rx /opt/biometric_id/datasudo setfacl -m g:bio_operators:rx /opt/biometric_id/data/templatessudo chown -R root:bio_auditors /opt/biometric_id/logssudo chmod 2750 /opt/biometric_id/logsgetfacl /opt/biometric_id/datagetfacl /opt/biometric_id/project
Дополнительно запрети прямой вход root и оставь административные действия через sudo.
sudo passwd -l rootpasswd -S root
Скриншот для документации (рис. 11): Сделай скрин групп пользователей и getfacl /opt/biometric_id/data или /opt/biometric_id/project.
Настройка аудита
Установи auditd и добавь правила слежения за каталогами биометрических данных и конфигурацией проекта. Это подтверждает контроль операций с чувствительными данными.
sudo apt install -y auditd audispd-pluginssudo systemctl enable --now auditdsudo tee /etc/audit/rules.d/biometric.rules > /dev/null <<'EOF'-w /opt/biometric_id/data -p wa -k biometric_data-w /opt/biometric_id/project -p wa -k biometric_project-w /opt/biometric_id/logs -p wa -k biometric_logsEOFsudo augenrules --loadsudo auditctl -lsudo ausearch -k biometric_data | tail
Скриншот для документации (рис. 12): Сделай скрин auditctl -l или ausearch, где видно правило biometric_data.
РЕЗЕРВНОЕ КОПИРОВАНИЕ И ВОССТАНОВЛЕНИЕ
Снимок VirtualBox
Выключи виртуальную машину. В VirtualBox выдели BIOMETRIC_GPU_VAR28, открой Snapshots и нажми Take. Назови снимок 01_clean_os_after_updates. В описании напиши, что ОС установлена, обновления применены, сеть работает.
Скриншот для документации (рис. 13): Сделай скрин окна Snapshots со снимком 01_clean_os_after_updates.
Точка восстановления Timeshift
Внутри Ubuntu установи Timeshift и создай точку восстановления перед установкой тяжелых ML-компонентов.
sudo apt install -y timeshiftsudo timeshift --create --comments "Variant 28 restore point before biometric tools" --tags D
Если Timeshift недоступен в аудитории, используй снимок VirtualBox как основной способ восстановления и отдельно сделай архив конфигураций проекта.
Скриншот для документации (рис. 14): Сделай скрин Timeshift или терминала с созданной точкой восстановления.
Экспорт виртуальной машины
Для критерия создания установочного образа выключи VM. В VirtualBox выбери File — Export Appliance, выбери BIOMETRIC_GPU_VAR28, формат Open Virtualization Format 2.0, имя файла BIOMETRIC_GPU_VAR28.ova. Нажми Finish.
Если экспорт длится слишком долго, достаточно показать окно экспорта и имя будущего OVA-файла. На защите объясни, что OVA используется для переноса готового стенда на другой компьютер.
Скриншот для документации (рис. 15): Сделай скрин Export Appliance или файла BIOMETRIC_GPU_VAR28.ova.
УСТАНОВКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ВАРИАНТА 28
Установка среды разработки VS Code
Установи Visual Studio Code из официального DEB-пакета. Не используй snap-пакет, чтобы избежать возможных проблем с доступом к файлам и мусорной корзиной. Затем установи расширения Python и C/C++.
wget -O code.deb "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64"sudo apt install -y ./code.debcode --install-extension ms-python.pythoncode --install-extension ms-vscode.cpptoolsmkdir -p ~/biometric_id/{sdk,realtime,models,data,logs}code ~/biometric_id
Скриншот для документации (рис. 16): Сделай скрин VS Code с открытой папкой biometric_id и расширениями Python/C++.
Проверка GPU, драйвера NVIDIA и CUDA
На реальной рабочей станции с NVIDIA GPU сначала проверь видеокарту. В VirtualBox команда nvidia-smi обычно не покажет GPU, потому что видеокарта не пробрасывается внутрь VM. Это не ошибка демонстрации: в документации нужно написать, что GPU/CUDA настраиваются на физической станции, а в VM показан CPU-стенд.
lspci | grep -i -E "vga|3d|nvidia" || trueubuntu-drivers devices || truenvidia-smi || truenvcc --version || true
Если работа выполняется на физическом Ubuntu-компьютере с NVIDIA GPU, установи драйвер и CUDA Toolkit по официальной инструкции NVIDIA. После установки обязательно проверь nvidia-smi и nvcc --version.
sudo ubuntu-drivers autoinstallsudo reboot# После перезагрузки:nvidia-sminvcc --version
Скриншот для документации (рис. 17): Сделай скрин nvidia-smi/nvcc --version или скрин терминала, где видно, что в VirtualBox GPU не проброшена и используется CPU-демо.
Установка Python-библиотек компьютерного зрения
Создай виртуальное окружение Python и установи библиотеки для обработки изображений, качества кадра и обучения модели. PyTorch устанавливай по команде с официальной страницы под свою CUDA-версию. Для VirtualBox можно поставить CPU-версию.
sudo apt install -y python3 python3-venv python3-pip python3-dev build-essential cmake git v4l-utilscd ~/biometric_idpython3 -m venv venvsource venv/bin/activatepip install --upgrade pippip install numpy pandas matplotlib pillow scikit-learn opencv-python opencv-contrib-pythonpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpupython - <<'PY'import cv2, torch, numpy as npprint("OpenCV", cv2.__version__)print("Torch", torch.__version__)print("CUDA available", torch.cuda.is_available())PY
Скриншот для документации (рис. 18): Сделай скрин терминала с версиями OpenCV, Torch и CUDA available.
Установка SDK для камер высокого разрешения
Основной SDK для варианта 28 — Basler pylon Software Suite. Скачай Linux x86_64 пакет с официальной страницы Basler. Если скачан tar.gz, распакуй его и запусти установочный скрипт. Если скачан DEB-пакет, установи его через apt.
cd ~/Downloads# Вариант 1: если скачан DEB-пакет pylonsudo apt install -y ./pylon*.deb || true# Вариант 2: если скачан tar.gz архивtar -xzf pylon*.tar.gz || true# Найди install.sh в распакованной папке и запусти его:# sudo ./install.sh# Проверка приложений:ls /opt/pylon/bin 2>/dev/null || true
После установки открой pylon Viewer. Если камера не подключена, окно может показать No device found. Это допустимо: SDK установлен, а отсутствие физической камеры объясняется демонстрационным форматом экзамена.
/opt/pylon/bin/pylonviewer 2>/dev/null || true
Скриншот для документации (рис. 19): Сделай скрин pylon Viewer или терминала, где видно установленный pylon SDK.
Проверка камеры и видеопотока
Если к компьютеру подключена веб-камера или USB-камера, проверь ее через v4l2. Если камеры нет, создай демонстрационный поток из тестового изображения. Для экзамена главное показать, что инструменты обработки изображения работают.
v4l2-ctl --list-devices || truels /dev/video* 2>/dev/null || true
Создай тестовый скрипт realtime_capture.py. Он пытается открыть камеру, а если камеры нет, создает искусственный кадр и показывает его через OpenCV.
cat > ~/biometric_id/realtime/realtime_capture.py <<'PY'import cv2import numpy as npcap = cv2.VideoCapture(0)ok, frame = cap.read()if not ok: frame = np.full((480, 640, 3), 230, dtype=np.uint8) cv2.putText(frame, 'Demo biometric frame: camera not connected', (30, 240), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0,0), 2)else: frame = cv2.resize(frame, (640, 480))cv2.imwrite('/home/' + __import__('getpass').getuser() + '/biometric_id/logs/realtime_frame_demo.png', frame)print('Frame saved to logs/realtime_frame_demo.png', frame.shape)cap.release()PYsource ~/biometric_id/venv/bin/activatepython ~/biometric_id/realtime/realtime_capture.py
Скриншот для документации (рис. 20): Сделай скрин v4l2-ctl или результата запуска realtime_capture.py.
Демонстрационный контроль качества кадра
Для биометрии важно контролировать качество входного изображения: яркость, резкость и достаточную область лица. Создай скрипт biometric_quality_demo.py. Он не хранит настоящие биометрические данные, а только показывает принцип контроля качества.
cat > ~/biometric_id/realtime/biometric_quality_demo.py <<'PY'import cv2import numpy as npfrom pathlib import Pathimg = np.full((480, 640, 3), 210, dtype=np.uint8)cv2.ellipse(img, (320, 230), (95, 125), 0, 0, 360, (170, 170, 170), -1)cv2.circle(img, (285, 210), 10, (30,30,30), -1)cv2.circle(img, (355, 210), 10, (30,30,30), -1)cv2.ellipse(img, (320, 270), (35, 18), 0, 0, 180, (30,30,30), 2)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)brightness = float(gray.mean())sharpness = float(cv2.Laplacian(gray, cv2.CV_64F).var())face_area = 95 * 125 * 3.14quality_score = min(100, int((brightness / 255) * 45 + min(sharpness, 500) / 500 * 35 + min(face_area, 40000) / 40000 * 20))status = 'ACCEPT' if quality_score >= 60 else 'RECAPTURE'Path('/opt/biometric_id/logs').mkdir(parents=True, exist_ok=True)out = Path('/opt/biometric_id/logs/quality_result.txt')out.write_text('\n'.join([f'brightness={brightness:.2f}', f'sharpness={sharpness:.2f}', f'face_area={face_area:.2f}', f'quality_score={quality_score}', f'decision={status}']) + '\n', encoding='utf-8')cv2.imwrite('/opt/biometric_id/logs/quality_frame.png', img)print(out.read_text(encoding='utf-8'))PYsource ~/biometric_id/venv/bin/activatesudo chown -R $USER:bio_devs /opt/biometric_id/logspython ~/biometric_id/realtime/biometric_quality_demo.py
Скриншот для документации (рис. 21): Сделай скрин VS Code или терминала с biometric_quality_demo.py и результатами quality_score/decision.
Пакет для обучения нейросетевых моделей распознавания
Создай простой учебный скрипт train_biometric_model.py. Он показывает, что PyTorch установлен и модель может обучаться. Для экзамена не нужны настоящие лица и персональные данные: используется синтетический набор признаков.
cat > ~/biometric_id/models/train_biometric_model.py <<'PY'import torchfrom torch import nnfrom pathlib import Pathtorch.manual_seed(28)X = torch.randn(120, 16)y = (X[:, 0] + X[:, 1] * 0.5 > 0).long()model = nn.Sequential(nn.Linear(16, 32), nn.ReLU(), nn.Linear(32, 2))loss_fn = nn.CrossEntropyLoss()opt = torch.optim.Adam(model.parameters(), lr=0.01)for epoch in range(1, 11): opt.zero_grad() pred = model(X) loss = loss_fn(pred, y) loss.backward() opt.step() acc = (pred.argmax(1) == y).float().mean().item() print(f'epoch={epoch:02d} loss={loss.item():.4f} accuracy={acc:.3f}')Path('/opt/biometric_id/data/templates').mkdir(parents=True, exist_ok=True)torch.save(model.state_dict(), '/opt/biometric_id/data/templates/model_demo.pt')print('model saved: /opt/biometric_id/data/templates/model_demo.pt')PYsource ~/biometric_id/venv/bin/activatepython ~/biometric_id/models/train_biometric_model.py
Скриншот для документации (рис. 22): Сделай скрин терминала с эпохами обучения и сохранением model_demo.pt.
ЗАЩИТА БИОМЕТРИЧЕСКИХ ДАННЫХ И КОНТРОЛЬ КАЧЕСТВА
Firewall, fail2ban и защита доступа
Установи fail2ban, проверь firewall и права на каталоги. Это показывает защиту от несанкционированного доступа к рабочей станции и данным.
sudo apt install -y fail2bansudo systemctl enable --now fail2bansudo ufw allow 22/tcpsudo ufw status numberedsudo fail2ban-client status || truegetfacl /opt/biometric_id/datals -la /opt/biometric_id/data/templates
Скриншот для документации (рис. 23): Сделай скрин ufw/fail2ban и прав доступа к /opt/biometric_id/data.
Логирование качества распознавания
Для контроля качества сохрани результат проверки качества в журнал. Журнал нужен, чтобы доказать, что система не просто распознает, но и контролирует пригодность кадра.
cat > ~/biometric_id/logs/quality_log.csv <<'EOF'time,source,brightness,sharpness,quality_score,decision2026-06-30T10:00:00,demo_camera,210.1,145.3,74,ACCEPT2026-06-30T10:01:00,demo_camera,80.5,40.2,38,RECAPTUREEOFcolumn -s, -t ~/biometric_id/logs/quality_log.csv
Скриншот для документации (рис. 24): Сделай скрин CSV-журнала качества с quality_score и decision.
Итоговая проверка состава стенда
В конце покажи структуру проекта. На скриншоте должны быть видны папки sdk, realtime, models, data и logs. Это удобно для демонстрации результата выполнения варианта 28.
sudo apt install -y treetree -L 3 ~/biometric_idtree -L 3 /opt/biometric_id
Скриншот для документации (рис. 25): Сделай скрин tree ~/biometric_id и /opt/biometric_id.
ЧТО ГОВОРИТЬ НА ЗАЩИТЕ
Краткое объяснение выбора ПО: Ubuntu выбран как стабильная Linux-система для разработки и ML-инструментов; VS Code выбран как среда разработки Python/C++; OpenCV используется для обработки изображений в реальном времени; PyTorch используется для обучения нейросетевых моделей; Basler pylon выбран как SDK для камер высокого разрешения; CUDA и драйвер NVIDIA нужны для ускорения обучения и инференса на реальной GPU-станции; UFW, fail2ban, auditd, группы и ACL используются для защиты биометрических данных.
Если преподаватель спросит, почему в VirtualBox нет CUDA, отвечай так: «VirtualBox используется для демонстрации установки и настройки стенда. На реальной рабочей станции с NVIDIA GPU CUDA ставится по официальной инструкции NVIDIA и проверяется командами nvidia-smi и nvcc --version. В виртуальной машине показан CPU-режим, потому что полноценный проброс GPU зависит от оборудования и гипервизора».
Если преподаватель спросит, где связь с биометрией, покажи pylon SDK, OpenCV-скрипт качества кадра, PyTorch-скрипт обучения, защищенный каталог /opt/biometric_id/data/templates и журнал quality_log.csv. Это закрывает SDK камер, обработку в реальном времени, обучение модели, защиту данных и контроль качества распознавания.