Академический Документы
Профессиональный Документы
Культура Документы
Индивидуальное задание
по дисциплине “Методы и модели теории графов”
Выполнил
студент группы КТбо1-1 _________________ А.М. Воронин
Приняла
доцент ИКТИБ, к. т. н. _________________ Е.Р. Мунтян
Таганрог 2021
Оглавление
Оглавление...............................................................................................................................................2
Введение....................................................................................................................................................3
Выполнение работы................................................................................................................................4
1.Перцептрон............................................................................................................................................4
1.2 Модель нейрона.............................................................................................................................4
1.2. Демонстрация возможности применения перцептрона.........................................................6
1.3. Обучение перцептрона...............................................................................................................10
2. Распознавание лица человека в видеопотоке...............................................................................17
2.1 OpenCV..........................................................................................................................................18
2.2 FaceNet...........................................................................................................................................20
2.3. Keras и Tensorflow......................................................................................................................24
2.4 Результаты объединения модулей программы......................................................................24
2.5. Сравнительный анализ предлагаемой архитектуры с альтернативами..........................25
2.5.1 Не используемые в реальной разработке альтернативы..............................................25
2.5.2 Альтернативы, используемые в реальной разработке..................................................26
Вывод.......................................................................................................................................................29
Источники..............................................................................................................................................30
2
Введение
Нейронные сети изначально проектировались как математическая
модель, основанная по принципу работы нервных клеток человека.
Основоположниками данной идеи стали Алан Тьюринг и его работа “О
вычислимых числах”, Маккаллок и Питс с исследованием “Логическое
исчисление идей, относящихся к нервной активности.
3
Выполнение работы
1.Перцептрон
1.2 Модель нейрона
Вход 0: x1 = 12
Вход 1: x2 = 4
4
перцептрона мы обычно начинаем с присвоения случайных весов. Здесь
давайте присвоим входным данным следующие веса:
Вес 0: 0,5
Вес 1: -1
Сумма = 6 + -4 = 2
Если мы запишем это в виде кода, выглядеть это будет следующим образом:
float sum = 0;
sum += inputs[i]*weights[i];
5
}
6
Рисунок 1.2: задача классификации точек относительно линии
Мы можем видеть, как есть два входа (x и y), вес для каждого входа
(weight x и weight y), а также обрабатывающий нейрон, который генерирует
выходные данные.
7
Рисунок 1.4: исправленная модель перцептрона для решения задачи.
0 * вес для x = 0
0 * вес для y = 0
class Perceptron {
float[] weights;
8
Конструктор может получить аргумент, указывающий количество
входов (в данном случае три: x, y и смещение) и соответственно размер
массива.
Perceptron(int n) {
{ weights[i] = random(-1,1); }
float sum = 0;
{ sum += inputs[i]*weights[i]; }
return activate(sum);
9
Рисунок 1.5: решение задачи перцептроном.
10
1) Предоставить перцептрону входные данные, для которых есть
известный ответ.
2) Попросите перцептрон угадать ответ.
3) Найти ошибку. (Ответ был правильный или неправильный?)
4) Отрегулировать все веса в соответствии с ошибкой.
5) Повторить с пункта 1
Если правильный ответ -1, а ответ нейросети +1, то ошибка равна -2.
11
Нейронная сеть будет использовать дополнительную переменную,
называемую «константа обучения», чтобы отрегулировать скорость
изменения веса. Мы добавим константу обучения следующим образом:
float c = 0.01;
class Perceptron {
12
float[] weights;
float c = 0.01;
Perceptron(int n) {
weights[i] = random(-1,1);
float sum = 0;
sum += inputs[i]*weights[i];
return activate(sum);
13
int guess = feedforward(inputs);
class Trainer {
float[] inputs;
int answer;
inputs[0] = x;
inputs[1] = y;
inputs[2] = 1;
answer = a;
14
у = F (х)
у = ах + b
у=2*х+1
float f(float x) {
return 2*x+1;
Как мы узнаем, находится ли эта точка над линией или под ней?
Линейная функция f (x) дает нам значение y в строке для этой позиции x.
Назовем это переменной yline.
Позиция Y на линии
15
Если значение y, которое мы исследуем, находится выше линии, оно
будет меньше, чем yline.
if (y < yline) {
answer = -1;
} else {
answer = 1;
ptron.train(t.inputs,t.answer);
16
В результате выполнения всех вышеописанных действий мы получим
готовую нейросеть-перцептрон, определяющую положение точки (находится
она над линией или под ней).
17
После этого человеку в соответствии с тем, что распознала нейросеть
присваивается id.
1) Tensorflow
2) FaceNet
3) opencv-python
4) numpy
5) scipy
6) matplotlib
7) argparse
2.1 OpenCV
Данная библиотека не является компонентом нейросети, но выполняет
крайне важную роль для дальнейшей обработки изображения. На основе
OpenCV пишется классификатор лиц, который выделяет лицо в detection-
branch и передает его в нейросеть для распознавания. Для этого OpenCV
использует каскады признаков Хаара.
18
Существует алгоритм, называемый структурой обнаружения объектов
Виолы – Джонса, который включает в себя все шаги, необходимые для
обнаружения лица человека:
3. Обучение Adaboost.
4. Каскадный классификатор.
2.2 FaceNet
FaceNet позволят создать сверточную нейросеть для
распознавания лиц. Сверточная нейронная сеть (CNN) - это многослойная
нейронная сеть со специальной архитектурой для обнаружения сложных
20
функций в данных. CNN использовались для распознавания изображений,
обеспечения зрения в роботах и для беспилотных транспортных средств.
1. Свертка.
3. Объединение
4. Сглаживание
5. Полное подключение
23
Идентификация лица может быть реализована путем обучения
простого мультиклассового классификатора, такого как K-NN или SVM,
посредством встраивания лиц, созданных FaceNet.
24
Правильно спроектированная и написанная нейросеть прекрасно
справляется с задачей идентификации человека по лицу. В итоговую
программу мы также добавили распознавание пола человека.
25
2.5. Сравнительный анализ предлагаемой архитектуры с
альтернативами.
2.5.1 Не используемые в реальной разработке альтернативы
Если мы хотим разобраться, как можно создать программное
обеспечение для распознавания лиц, стоит выделить два основных подхода –
нейросетевой и статистический.
27
Рисунок 2.5: QR-код видеопредставления Yolo v4.
28
Yolo v4, при аналогичных требованиях к железу), но при этом являются
наиболее близкими аналогами. Думаю, в случае если разработчик заранее
знает обсуждаемую архитектуру и не знает Yolo, то разработка на
EfficientDet предпочтительнее в большинстве случаев.
29
Вывод
30
Источники
1. Брюхомицкий Ю. А Нейросетевые модели для систем
информационной безопасности: Учебное пособие. - Таганрог: Изд-во ТРТУ,
2005.
2. Ю.Лифшиц Статистические методы распознавания образов. 2005.
3. Hinton Geoffrey ImageNet Classification with Deep Convolutional
Neural Networks. - NIPS'12: Proceedings of the 25th International Conference on
Neural Information Processing Systems - Volume 1 изд. 2012.
4. LeCun, Yann; Bengio, Yoshua Convolutional networks for images,
speech, and time series. - The handbook of brain theory and neural networks, изд.
2, 1995.
5. Andrew R. Webb QinetiQ Statistical Pattern Recognition. - изд. 2
изд. - Malvern UK: 2002.
6. Florian Schroff, Dmitry Kalenichenko, James Philbin FaceNet: A
Unified Embedding for Face Recognition and Clustering. - 3-е изд. - IEEE
Computer Society Conference on Computer Vision and Pattern Recognition 2015:
2015.
7. Viola and Jones, Rapid object detection using a boosted cascade of
simple features, Computer Vision and Pattern Recognition, 2001
8. Lienhart, R. and Maydt, J., An extended set of Haar-like features for
rapid object detection, 2002
9. Pulli, Kari; Baksheev, Anatoly; Kornyakov, Kirill; Eruhimov, Victor
Realtime Computer Vision with OpenCV, 2012
10. Piatetsky, Gregory Python eats away at R: Top Software for
Analytics, Data Science, Machine Learning in 2018: Trends and Analysis. 2018.
31