Comments 28
Кроме того, нейросети вполне себе демонстрируют One-Shot learning за счет transfer learning (гуглится множество статей).
Насколько я понимаю, что бы получить «One-Shot learning за счет transfer learning», вам для начала потребуется подходящая предобученная «родительская» сеть (и большой мешок удачи :). А в данном случае вроде бы не требуется никаких сторонних классификаторов.
Выделить контрастами вектора из картинки, снизить размерность и найти ближайшую точку к образцу в новом пространстве — это в принципе все тривиально, и достаточно прозрачно, как и хотел автор.
Сильная идея — это кластеры, т.е. использование фрактального разбиения. Жаль что нет подробностей. И еще нет подробностей, как устраняются инвариантность к базовым преобразованиям картинки: вращениям (в том числе взаимным между кластерами), масштабу, взаимному расстоянию, параллаксу и т.д. Тут нейросети хорошо справляются, но и чисто математические решения, думаю, есть.
Потом, насколько я понимаю этот алгоритм привязан к конкретному положению объекта, т.е. если его развернуть то ничего не получиться?
Что мешает нормализовать по направлению, как это делают в SIFT, и получить rotated invariant дескриптор региона?
Очень похоже на контурный анализ. Там тоже выделение векторов и инвариантность к масштабированию и вращению.
https://blogs.msdn.microsoft.com/rucoding4fun/2012/01/16/1003/
Это я о том, что если усложнить алгоритм в 3 раза т.е. делать это все в 3х цветах отдельно, то эффективность при разном освещении разных оттенков цвета вырастет. А далее можно прикрутить комбинирование, замену.
Gray = (Red * 0.299 + Green * 0.587 + Blue * 0.114)
.А можно на код приложения взглянуть?
Чувствительность к повороту, смещению, освещенности, замыливанию, проективным искажениям,, степени компрессии и тд. Без такого сравнения с другими методами регистрации (чем Вы на самом деле и занимаетесь) изображений этот текст(метод) слишком голословный
Автор преподносит свою придумку как нечто совершенно новое. Но есть же SIFT, ORB и другие дескрипторы, которые запечательно делают one-shot-learning путём использования мешка слов и запихивания их в какой-нибудь чёрный ящик типо SVM или случайных лесов (возможно, вместе с PCA или любым аналогом, если того хочется). Чем Ваше решение существенно отличается от указанных методов?
Кстати говоря, вот и они. https://habr.com/post/414459/
Совершенно случайно был опубликован пост ровно про то, что я сейчас говорил. Практически в один момент с Вами
Можно использовать более экономный Hough Transform ( ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A5%D0%B0%D1%84%D0%B0 )
Ваш алгоритм в его первой части реализуется поиском локальных максимумов в пространстве «радона». А вторую часть Вы стесняетесь описывать. Изобретение велосипедов конечно интересное занятие, но не мешает познакомиться с известными алгоритмами обработки изображений.
По поводу стандартных тестов мое мнение такое: у меня есть задача, распознавать продукцию на ленте (упрощенно) я смотрю что есть прежде всего из коммерческих решений, потом из алгоритмов и готовых библиотек, не нахожу того что может приемлемо выполнять мою задачу так чтобы это реально работало а не на бумаге и не в виде картинок. В результате придумываю и пишу свое. Оно работает как мне надо. Конец. Может я конечно круто ошибся и где то существует вагон готовых к промышленному применению решений которые можно пощупать на реальных примерах сразу, тогда да — пардон.
Могли бы Вы описать алгоритм подробнее? Или дать ссыли на код? Ваше описание очень общее и из него сложно понять, что, действительно, Вы сделали.
Интересно, Вы что-нибудь описали…
1 шаг: ищем самую большую точку по контрасту
2 шаг: от нее строим линию по алгоритму Брезенхема длиной N, при этом точки попадающие в эту линию должны а) укладываться в ± 1 сигма по нормальному распределению
б) не должны содержать точки других таких линий(пересечения)
3 шаг: вращаем линию по кругу до достижения максимума по контрасту
4й шаг: от конца найденой линии строим новую линию, но вращение уже не на 360 градусов а ограничено ±30градусов
повторяется пока на конце можно найти новую линию, если нет то снова на 1 шаг. Если набирается сумма контрастов больше определнно предела от суммы контрастов
то алгоритм завершается. Вот такой алгоритм. Я его подобрал опытным путем на датасетах с котрыми работал. Этому алгориту предшествует другой алгоритм который выделяет контрастные области — делает их более компакными
и по ним уже работает алгоритм построения линий.
Алгоритм распознавания образов обучающийся с одного раза (One-Shot learning)