Другой сложностью может быть то, что цифра может быть не в наблюдаемой области, а в произвольной, например, в углу. Для анализа самой цифры нам нужно переместить анализирующее окно в то место, где находится цифра. Для простоты пока будем полагать, что габариты анализирующего окна равны габаритам исследуемой цифры. Для решения этой задачи перед сетью ставят анализирующий слой, образующий карту нахождения цифры. Задача этого слоя определить местоположение цифры на картинке. Для простоты возьмём чёрное изображение на белом листе. Нам нужно пройтись анализатором цифры построчно по всему листку и определить местоположение. В качестве индикатора возьмём площадь чёрного цвета на индикаторе. После прохождения по листку бумаги и определения площади мы получим матрицу с цифрами площадей чёрного цвета. Где площадей чёрного цвета больше – в том месте цифра максимально вписалась в индикатор. Преобразование картинки в матрицу площадей называется операцией свёртки, а если это выполняет нейронный слой – свёрточный слой. Принцип работы был позаимствован у биологического зрительного нерва. Нейронные сети, в которых присутствует свёрточный слой (Conv Layers) называются свёрточными нейронными сетями (Convolutional Neural Network, CNN). Такие сети используют при распознавании изображения, а после при должном развитии их адаптировали для распознавания речи и текстов. Классически, CNN применяется для решения трёх задач при работе с изображениями:
* классификация изображений, например, фотографий собак и кошек по роду животных; * определение объекта на изображении, например, определение нахождения и положения пешехода при пилотировании беспилотным автомобилем; * сегментации изображения, например, определение на рентгенах контуров опухолей.
Если изображение находится в произвольном месте, или имеются другие изображения, то для определения потребуется несколько слоёв нейронной сети, и результатом будет являться также карта расположения цифры, но принятие решения о её нахождения нужно её идентифицировать. Таким образом, первый слой будет иметь количество нейронов отображающих карты, что по горизонтали и вертикали будет соответствовать ширине и высоте листка минус соответствующую ширину и высоту анализирующего экрана, делённую на шаг сдвига анализирующего окна. Размерность второго же слоя в нейронах равна размерности анализируемого окна, чтобы иметь возможность идентификации цифры. Если мы проведём связи от всех нейронов слоя поиска к слою анализирующего окна, то на выходе мы получим набор снимков влитых вместе. Следующий слой будет иметь размерность, равную количеству анализируемых элементов цифр. К примеру, цифру можно представить в виде не полностью закрашенной восьмёрки, тогда, закрашиваемых сегментов будет семь. Все нейроны свёрточного слоя будут связаны со всеми нейронами слоя анализа сегментов цифры. Задача нейрона этого слоя быть связанным с нейронами предыдущего, ответственными за данный сегмент и выдать результат наличия или отсутствия данного сегмента в цифре. Следующий слой имеет состоит из десяти нейронов, соответствующие цифрам от нуля до девяти. Всего его нейроны связаны с предыдущим слоем и активируются при получении сигналов от них. Так, нейрон, ответвленный за цифру один будет активироваться, если получит информацию, что два крайних правых сектора будут активны и не активны все остальные. Описанный алгоритм детектирования искомого изображения называется R–CNN (Region–based Convolutional Network) и использовался долгое время. Далее он был сменён Fast R–CNN, а ныне применяется YOLO (Real–Time Object Detection) из–за большего качества и скорости работы.