Время прочтения: 5 мин.
Правильное серверное помещение обеспечивает надёжную защиту серверов, коммутаторов и другого оборудования от негативного воздействия окружающей среды, технологических сбоев и несанкционированного доступа. За такими параметрами как температура, влажность, отсутствие пыли, исправность техники следят системы климат-контроля и работоспособности.
Серверное помещение значительно упрощает обслуживание вычислительной техники, поэтому не менее важной характеристикой является аккуратность при ведении кабельного хозяйства, да и чистоты помещения в целом. Все это влияет на скорость устранения неполадок, модернизации, масштабирования. Особенно если таких помещений 5, 10, 50. При наличии камер видеонаблюдения проблему контроля за состоянием серверных можно решить с помощью технологии computer vision.
Рассмотрим подробнее задачу поиска перегруженных посторонними предметами (захламленных) серверных помещений.
В первую очередь серверные комнаты необходимо отделить других помещений.
Классификация помещений
Итак, требуется разработать модель, отличающую серверные помещения организации от остальных. В качестве инструмента выбрана предобученная модель YOLOv5 из-за ее легковесности и качества предсказаний.
YOLOv5 — это модель из семейства YOLO, написанная на PyTorch, что обеспечивает прирост производительности и расширяет возможности конфигурации моделей. Реализация модели на PyTorch позволяет использовать преимущества фреймворка: поддержка и развертывание модели.
Рассмотрим процесс обучения:
- Подготовка датасета.
Собираем изображения для тренировки и валидации. Для увеличения датасета используем аугментацию (размер, яркость, поворот, мозаика и т.д.):
1. add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path')
Содержание hyp.scratch.yaml:
1. lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
2. lrf: 0.2 # final OneCycleLR learning rate (lr0 * lrf)
3. momentum: 0.937 # SGD momentum/Adam beta1
4. weight_decay: 0.0005 # optimizer weight decay 5e-4
5. warmup_epochs: 3.0 # warmup epochs (fractions ok)
6. warmup_momentum: 0.8 # warmup initial momentum
7. warmup_bias_lr: 0.1 # warmup initial bias lr
8. box: 0.05 # box loss gain
9. cls: 0.5 # cls loss gain
10. cls_pw: 1.0 # cls BCELoss positive_weight
11. obj: 1.0 # obj loss gain (scale with pixels)
12. obj_pw: 1.0 # obj BCELoss positive_weight
13. iou_t: 0.20 # IoU training threshold
14. anchor_t: 4.0 # anchor-multiple threshold
15. # anchors: 3 # anchors per output layer (0 to ignore)
16. fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
17. hsv_h: 0.015 # image HSV-Hue augmentation (fraction)
18. hsv_s: 0.7 # image HSV-Saturation augmentation (fraction)
19. hsv_v: 0.4 # image HSV-Value augmentation (fraction)
20. degrees: 45.0 # image rotation (+/- deg)
21. translate: 0.0 # image translation (+/- fraction)
22. scale: 0.0 # image scale (+/- gain)
23. shear: 0.0 # image shear (+/- deg)
24. perspective: 0.0001 # image perspective (+/- fraction), range 0-0.001
25. flipud: 0.5 # image flip up-down (probability)
26. fliplr: 0.5 # image flip left-right (probability)
27. mosaic: 1.0 # image mosaic (probability)
28. mixup: 0.0 # image mixup (probability)
- Устанавливаем параметры запуска.
Исходя из особенностей модели и вычислительных мощностей устанавливаем следующие параметры:
python train.py --img 640 --batch 8 --epochs 1000 --data dataset.yaml --weights yolov5l.pt
где:
Img – размер изображения;
Batch – количество кадров, которое модель обрабатывает одновременно;
Epochs – количество эпох – итераций обучения;
Dataset – датасет;
Weights – обученные коэффициенты.
- Получаем модель, способную находить серверные помещения.
Определение посторонних предметов (хлама)
Следующим шагом было определение понятия «хлам». Первоначальная идея заключалась в поиске абсолютно всех посторонних предметов в серверных помещениях. Однако в процессе реализации столкнулись с трудностями: в рамках одной модели проблематично набрать датасет, который смог бы верифицировать абсолютно весь хлам. В результате модель с поставленной задачей не справляется.
Принято решение ограничить понятие «хлам». Для этого выделили 13 классов:
1. {
2. "region": {
3. "class": {
4. "type": "radio",
5. "description": "",
6. "options": {
7. "server_rack": "",
8. "fire_extinguisher": "",
9. "person": "",
10. "box": "",
11. "chairs": "",
12. "packaging materials": "",
13. "paper": "",
14. "ladder": "",
15. "devices": "",
16. "stand": "",
17. "phone": "",
18. "tool box": "",
19. "clothers": ""
20. },
21. "default_options": {
22. "server_rack": true
23. }
24. }
25. },
26. "file": {}
27. }
Самые многочисленные из них это: ПК, огнетушитель, стойка. После разметки и подготовки датасета запускаем обучение как описано выше.
В результате модель стала выдавать корректные результаты:
Таким образом задача была решена успешно. Получаем инструмент для поиска не только плохо организованного хозяйства проводов, но и заставленных серверных помещений, которые часто используются как склад.
Пример работы модели:
Использование данной модели позволяет оперативно находить захламлённые серверные помещения и проводить мероприятия по устранению отклонений в кратчайшие сроки. Порядок и организованность в серверных обеспечить безаварийность оборудования и освобождает до 50% пространства.