Comments 28
А почему для классификации не используется контурный анализ?
habrahabr.ru/post/118486/
По-моему он лучше, чем представленные метрики должен работать.
habrahabr.ru/post/118486/
По-моему он лучше, чем представленные метрики должен работать.
+5
Да, и ещё два вопроса вдогонку.
Первый: а при обучении по выборке пробовали применять разные алгоритмы? В принципе, как мне подсказывает опыт, иногда лучше SVM, иногда adaboost, а иногда ещё что-то вроде нейросетей. Часто за счёт правильного метода можно эффективность поднять на десятки процентов.
Второй: Всегда любопытно, когда натыкаешься на какую-нибудь компанию, занимающуюся обработкой изображений или машинным обучением в России. Тут мало кто этими тематиками занимается. Вашу компанию вижу в первый раз, к тому же у вас это похоже у вас первый пост на Хабре. Будут какие-нибудь посты о деятельности компании и тех задачах, что она решает?
Первый: а при обучении по выборке пробовали применять разные алгоритмы? В принципе, как мне подсказывает опыт, иногда лучше SVM, иногда adaboost, а иногда ещё что-то вроде нейросетей. Часто за счёт правильного метода можно эффективность поднять на десятки процентов.
Второй: Всегда любопытно, когда натыкаешься на какую-нибудь компанию, занимающуюся обработкой изображений или машинным обучением в России. Тут мало кто этими тематиками занимается. Вашу компанию вижу в первый раз, к тому же у вас это похоже у вас первый пост на Хабре. Будут какие-нибудь посты о деятельности компании и тех задачах, что она решает?
0
Еще хотелось бы порекомендовать попробовать RBM (и DBM, соответственно).
0
DBM?
Вы имеете в виду Deep Belief Network, или это чтото новое, также на основе RBM?
Да, почему бы и нет. Можно копать еще глубже :) К примеру, во всякие deep NCA, говорят они клевые.
Вы имеете в виду Deep Belief Network, или это чтото новое, также на основе RBM?
Да, почему бы и нет. Можно копать еще глубже :) К примеру, во всякие deep NCA, говорят они клевые.
0
Я так понимаю, что DBN предполагается использовать на последнем этапе — для изучения форм по очищенным от шума изображениям? Т.е. входными образцами должны быть просто наборы пикселей, составляющие фигуру? Или вы подразумевали что-то другое?
0
Приветствуем. Мы начали нашу деятельность относительно недавно, тем более на Хабре. В ближайшее время планируется вывесить статью о нашей деятельности — чем мы занимаемся помимо обучения студентов. Всегда рады поделиться с общественностью клевыми интересными штуками и продвигать машинное обучение в массы.
По поводу замечаний к этой статье, вы все верно подметили. Но эта статья — исключительно учебная, в ней хотелось решить простую задачку распознавания образов каким-нибудь академичным способом, например, учитывая подсчет углов.
Например, как вы заметили, в реальных приложениях можно использовать контурный анализ, или как намекают в комментарии ниже RBM\deep learning. Или еще чтонибудь вроде признаков Хаара и разного рода сверток, но никак не отношение площади к квадрату периметра.
Насчет других методов — действительно есть смысл поиграться с ними. Хотя, с одной стороны, по графикам видно что на имеющихся признаках 100%-ая точность не достижима. С другой, решающее дерево наглядно для интерпретации.
Представьте — вас спросят «как отличить квадрат от треугольника?». А вы скажете — «о, все просто — отношение площади к периметру должно быть меньше 0.06». Это прикольнее чем svm, хоть, в данном случае(!), и чуть менее точно :)
По поводу замечаний к этой статье, вы все верно подметили. Но эта статья — исключительно учебная, в ней хотелось решить простую задачку распознавания образов каким-нибудь академичным способом, например, учитывая подсчет углов.
Например, как вы заметили, в реальных приложениях можно использовать контурный анализ, или как намекают в комментарии ниже RBM\deep learning. Или еще чтонибудь вроде признаков Хаара и разного рода сверток, но никак не отношение площади к квадрату периметра.
Насчет других методов — действительно есть смысл поиграться с ними. Хотя, с одной стороны, по графикам видно что на имеющихся признаках 100%-ая точность не достижима. С другой, решающее дерево наглядно для интерпретации.
Представьте — вас спросят «как отличить квадрат от треугольника?». А вы скажете — «о, все просто — отношение площади к периметру должно быть меньше 0.06». Это прикольнее чем svm, хоть, в данном случае(!), и чуть менее точно :)
+1
Контурный анализ
+8
а преподаватель (Александр Шлемов; он также руководил дальнейшей реализацией) показал, почему для решения лучше использовать машинное обучение.
А нам расскажете, почему всё-таки лучше? Из статьи это совсем не следует… Напротив, по моему именно эта задача в конкретной формулировке красивше решается через вычисление характеристик контуров(хотя-бы посчитать центральные или хью моменты)… А ML тут — это как из пушки по воробьям стрелять…
0
Полагаю что потому что было несколько метрик и ни одна из них не давала хорошей классификации сама по себе
Тут возникает проблема нахождения границ: необходимо знать, какие значения метрики могут получаться для каждой из фигур. Можно проложить эти границы вручную “на глазок”, но лучше поручить это дело математически обоснованному алгоритму.
0
Да, вы верно заметили. А также, идея была в том чтобы построить на основе таких признаков чтото простое — дерево решений или логистическую регрессию.
Это не то, чтобы из пушки по воробьям (хотя если бы речь шла про GBM 1, 2, это было бы правдой), но и не совсем тривиальный подход.
Плюс, для первичного ознакомления с машинным обучением, Хью моменты и вейвлет-анализ могут быть слишком хардкорны :)
Это не то, чтобы из пушки по воробьям (хотя если бы речь шла про GBM 1, 2, это было бы правдой), но и не совсем тривиальный подход.
Плюс, для первичного ознакомления с машинным обучением, Хью моменты и вейвлет-анализ могут быть слишком хардкорны :)
0
Как-то лихо они сделали такой вывод: взяли несколько плохих метрик, получили ожидаемо плохой результат и тут-же сделали вывод, что ML — спасение человечества)
0
А сейчас в обработке изображений у многих бытует мнение, что любая задачка сводиться к правильному обучению классификатора:)
Никто не учитывает, что есть и другие варианты решения проблем:)
Никто не учитывает, что есть и другие варианты решения проблем:)
0
Скорей всего эти люди не замниаются продуктизацией такого кода) Когда резко оказывается, что для промышленного применения такой «вроде здорово натренированный» классификатор не подхдоит в связи с плохой точностью:)
0
Вот, вот в этом и было ключевое недопонимание. Ни о какой продуктизации здесь речи не шло:
Конечно же, для промышленного применения, как неоднократно писали выше, уже есть свои, куда более совершенные инструменты. А также есть готовые коробки, как показанный выше OpenCV — их достаешь и не думаешь о том, кто и как тренировал ее содержимое.
Таким образом эта учебная задачка стала для меня введением в Machine Learning, и я хотел бы поделиться с вами этим опытом.
Конечно же, для промышленного применения, как неоднократно писали выше, уже есть свои, куда более совершенные инструменты. А также есть готовые коробки, как показанный выше OpenCV — их достаешь и не думаешь о том, кто и как тренировал ее содержимое.
0
Это конечно клево, что ML ассоциируется со спасением человечества (не надо злить skynet), но таких далеких выводов пока не делалось :) В рамках этого поста, по-крайней мере.
Во-первых, решалась учебная и очень академическая задача. Во-вторых, она была ознакомительной.
С другой стороны, если сразу юзать чтото более серьезное и смотреть, как какой-нибудь DBN перемалывает распознавание формочек\циферок — это вариант, но не факт что оправданно технически сложный.
С другой стороны — придумать умозрительных размышлений о контурах и свести их воедино позволит и голову подключить и в азах обучения разобраться.
А после того как студент справится с заданием, то вытащить тех же вейвлет фич и вместо одного дерева решений обучить тысячу штук — дело техники.
Во-первых, решалась учебная и очень академическая задача. Во-вторых, она была ознакомительной.
С другой стороны, если сразу юзать чтото более серьезное и смотреть, как какой-нибудь DBN перемалывает распознавание формочек\циферок — это вариант, но не факт что оправданно технически сложный.
С другой стороны — придумать умозрительных размышлений о контурах и свести их воедино позволит и голову подключить и в азах обучения разобраться.
А после того как студент справится с заданием, то вытащить тех же вейвлет фич и вместо одного дерева решений обучить тысячу штук — дело техники.
0
Без обид, но мне ваше решение видится так: давайте возьмем кучу плохих фич, выбирать из них хорошие не будем, ведь заниматься анализом предметной области — это так сложно и скучно, затем возьмем какойнибудь крутой метод машинного обучения и стравим ему получившееся у нас дескрипторы, что-то даже местами отработало(ибо задача достаточно простая, и ML метод кое как справился с убогими фичами) и пофигу что мисматчи вылезли даже на достаточно хороших данных… Вот как-то так. Может я чего-то не понимаю, но хоть с точки зрения компьютерного зренияЮ хоть с точки зрения ML вы показали в статье то, как не надо делать при решении задачи. Если цель была сделать введение в ML, то непонятно где пропал этап feature selection… кучу метрик вы взяли, но их качество не оценили, а на сложных данных это грозит эпичным фэйлом. Если это было введение в компьютерное зрение, то вы опять не «изучили» предметную область… нет никакого анализа качества фич, и попыток решиьт задачу при помощи методов компьютерного зрения… Как-то так…
0
То что вы говорите это все верно, применительно к настоящим и «сложным» данным, но есть большое но. Вы слишком серьезно подошли именно к учебной задаче, которая не претендовала на чтото серьезное и «настоящее» в производственном плане (прямо в abstract'е к посту). Этот пост был написан учеником о его собственном опыте — первый его подход к снаряду.
Все же проще — есть задача. Она простая и наглядная — буквально, игрушечная. И то что она связана с компьютерным зрением — просто такую задачу придумали для студентов на вступительных экзаменах. На экзамене от студента при ответе на задачу ожидалась именно умственная деятельность по придумыванию критерия, как отделить одно от другого.
Так как критериев больше одного, их можно было как раз использовать в рамках ML, чтобы слепить один большой критерий, без специальных инструментов (надо будет дисклеймер писать в следующий раз). К слову, feature selection как раз был в рамках построения дерева. Но так как в этой статье «куча» метрик перечислима по пальцам одной руки, этот вопрос можно умышленно умолчать :)
Все же проще — есть задача. Она простая и наглядная — буквально, игрушечная. И то что она связана с компьютерным зрением — просто такую задачу придумали для студентов на вступительных экзаменах. На экзамене от студента при ответе на задачу ожидалась именно умственная деятельность по придумыванию критерия, как отделить одно от другого.
Так как критериев больше одного, их можно было как раз использовать в рамках ML, чтобы слепить один большой критерий, без специальных инструментов (надо будет дисклеймер писать в следующий раз). К слову, feature selection как раз был в рамках построения дерева. Но так как в этой статье «куча» метрик перечислима по пальцам одной руки, этот вопрос можно умышленно умолчать :)
-1
На хабре есть блог, ну или теперь уже тег «Обработка изображений», было бы здорово, если бы вы его добавили.
0
Кстати, на тимусе есть задачка с ровно таким же условием, так что если кто-то хочет проверить на скорую руку набросанное решение — он может сделать это в системе автоматической проверки: http://acm.timus.ru/problem.aspx?space=1&num=1378
0
Для фигур, генерируемых bitbucket.org/rampeer/image-classifier/src/HEAD/picture_generator.py, вполне работает такая простая метрика: описываем вокруг фигуры окружность с центром в центре масс фигуры и с радиусом, равным расстоянию от центра масс фигуры до ее наиболее удаленной точки. Далее считаем отношение площади такой окружности к площади самой фигуры.
Вот что получаем:
Код:
Вот что получаем:
Код:
0
Собственно, код:
https://github.com/atolmachev/figure-classifier/blob/master/metrics.py
https://github.com/atolmachev/figure-classifier/blob/master/test.py
Выборка собрана по картинкам размера 30, 60 и 90, по 100 изображений на каждый тип в каждой категории.
https://github.com/atolmachev/figure-classifier/blob/master/metrics.py
https://github.com/atolmachev/figure-classifier/blob/master/test.py
Выборка собрана по картинкам размера 30, 60 и 90, по 100 изображений на каждый тип в каждой категории.
0
Sign up to leave a comment.
Классификатор изображений