Что лучший подход должен распознать шаблоны в данных, и что лучший способ состоит в том, чтобы узнать больше по теме?

Если Вы имеете в виду что-то вроде этого снимок экрана

LineItem Hightlighting in a TreeView
(источник: bendewey.com )

Тогда это должно помочь Вам. На основе http://msdn.microsoft.com/en-us/library/ms788727.aspx можно внести некоторые изменения в расположение Сетки TreeViewItem. В основном Вы удаляете третий столбец. Тогда в TreeView Вы устанавливаете HorizontalContentAlignment = "Фрагмент". Я присоединяю весь ресурс ниже, но здесь являюсь важной частью.



  
    
      
      
    
    
      
      
    
    

Управление


    
    
        
        
    
    

Ресурсы









19
задан Phil 23 July 2010 в 14:36
поделиться

12 ответов

В дополнение к полезным комментариям об обработке изображений, похоже, что вы имеете дело с проблемой кластеризации .

Алгоритмы кластеризации взяты из литература по машинному обучению , в частности обучение без учителя . Как следует из названия, основная идея состоит в том, чтобы попытаться идентифицировать естественные кластеры точек данных в некотором большом наборе данных.

Например, на картинке ниже показано, как алгоритм кластеризации может сгруппировать группу указывает на 7 кластеров (обозначенных кружками и цветом):

k-means
(источник: natekohl.net )

В вашем случае алгоритм кластеризации будет пытаться многократно объединять небольшие трещины в более крупные трещины, пока не будут выполнены некоторые критерии остановки. Конечным результатом будет меньший набор соединенных трещин. Конечно, трещины немного отличаются от двумерных точек - часть уловки для того, чтобы заставить алгоритм кластеризации работать здесь, будет определять полезную метрику расстояния между двумя трещинами.

Популярные алгоритмы кластеризации включают кластеризацию k-средних ( демонстрация ) и иерархическая кластеризация . В этой второй ссылке также есть хорошее пошаговое объяснение того, как работают k-means.

EDIT : Эта статья некоторых инженеров Phillips выглядит релевантной тому, что вы пытаетесь сделать:

  • Chenn -Jung Huang, Chua-Chin Wang, Chi-Feng Wu, « Методы обработки изображений для идентификации кластера дефектов пластины », IEEE Design and Test of Computers, vol. 19, нет. 2, pp. 44-48, March / April 2002.

Они проводят визуальный осмотр на наличие дефектов на кремниевых пластинах, и использовать медианный фильтр для удаления шума перед использованием алгоритма кластеризации ближайшего соседа для обнаружения дефектов.

Вот некоторые связанные статьи / книги, которые они цитируют, которые могут быть полезны:

  • M. Таубенлатт и Дж. Батчелдер, « Узорчатая проверка пластин с использованием пространственной фильтрации для кластерной среды », Applied Optics, vol. 31, нет. 17, июнь 1992, стр. 3354-3362.
  • F.-L. Чен и С.-Ф. Лю, « Нейросетевой подход к распознаванию пространственной структуры дефектов при производстве полупроводников. » IEEE Trans. Производство полупроводников, т. 13, нет. 3, август 2000 г., стр. 366-373.
  • G. Эрл, Р. Джонсонбо и С. Йост, Распознавание образов и анализ изображений , Прентис Холл, Аппер-Сэдл-Ривер, Нью-Джерси, 1996.
16
ответ дан 30 November 2019 в 04:16
поделиться

Ваша проблема относится к очень широкой области классификации изображений. Такие проблемы могут быть заведомо сложными, и, в конце концов, их решение - это искусство. Вы должны использовать все имеющиеся у вас знания о предметной области, чтобы сделать ее управляемой.

Одна фундаментальная проблема - это нормализация. Вы хотите, чтобы объекты с похожей классификацией были как можно более похожими в представлении данных. Например, если у вас есть изображение трещин, все ли изображения имеют одинаковую ориентацию? Если нет, то поворот изображения может помочь в вашей классификации. Точно так же масштабирование и преобразование (см. this )

Вы также хотите удалить как можно больше нерелевантных данных из ваших обучающих наборов. Вместо того, чтобы напрямую работать с изображением, возможно, вы могли бы использовать извлечение краев (например, обнаружение краев Канни). Это удалит весь «шум» с изображения, оставив только края. Затем упражнение сводится к определению, какие края являются трещинами, а какие - естественным покрытием.

Если вы хотите быстро найти решение, я предлагаю вам сначала попытать счастья с сверточной нейронной сетью ], который может выполнять довольно хорошую классификацию изображений с минимумом предварительной обработки и норамлизации. Он довольно хорошо известен в распознавании рукописного ввода и может подойти для того, что вы делаете.

Если вы хотите быстро найти решение, я предлагаю вам сначала испытать удачу с сверточной нейронной сетью , которая может выполнять довольно хорошую классификацию изображений с минимумом предварительной обработки и норамлизации. Он довольно хорошо известен в распознавании рукописного ввода и может подойти для того, что вы делаете.

Если вы хотите быстро найти решение, я предлагаю вам сначала испытать удачу с сверточной нейронной сетью , которая может выполнять довольно хорошую классификацию изображений с минимумом предварительной обработки и норамлизации. Он довольно хорошо известен в распознавании почерка и может быть как раз подходящим для того, что вы делаете.

3
ответ дан 30 November 2019 в 04:16
поделиться

Я немного смущен тем, как вы решили разобраться в проблеме. Если ваш коллега не определяет полные трещины, а это спецификация, то это становится вашей проблемой. Но если вам удастся сшить все трещины вместе и избежать его ложных срабатываний, то разве вы только что не выполнили его работу?

Помимо этого, я думаю, что это проблема обнаружения края , а не проблема проблема классификации. Если детектор границ хорош, тогда ваши проблемы исчезнут.

Если вы все еще настроены на классификацию, вам понадобится обучающий набор с известными ответами, поскольку вам нужен способ количественной оценки того, что отличает ложное срабатывание от настоящая трещина. Однако я все же думаю, что ваш классификатор вряд ли сможет соединить трещины, поскольку они индивидуальны для каждой отдельной тротуарной плитки.

2
ответ дан 30 November 2019 в 04:16
поделиться

Я ни в коем случае не эксперт, но попробуйте взглянуть на Каскады Хаара . Вы также можете поэкспериментировать с набором инструментов OpenCV. Эти две вещи вместе выполняют обнаружение лиц и другие задачи обнаружения объектов.

Возможно, вам придется пройти «обучение», чтобы разработать Каскад Хаара для трещин в тротуаре.

1
ответ дан 30 November 2019 в 04:16
поделиться

Я должен согласиться с ire_and_curses, как только вы погрузитесь в сферу обнаружения краев, чтобы исправить свой co -разработчики обнаружения взлома и удаления его ложных срабатываний, кажется, будто бы вы выполняли свою работу. Если вы можете исправить то, что его программное обеспечение не обнаружило, и удалить его ложные срабатывания относительно того, что он вам дал. Похоже, вы сможете сделать это для полного изображения.

Если спецификация предназначена для него, чтобы обнаруживать трещины, и вы их классифицируете, то его работа заключается в обнаружении краев и удалении ложных срабатываний. И ваша задача - взять то, что он вам дал, и классифицировать, какой это тип трещины. Если для этого вам нужно выполнить обнаружение краев, то похоже, что вы недалеко от того, чтобы лишить работы вашего со-разработчика.

2
ответ дан 30 November 2019 в 04:16
поделиться

Предлагаю вам взять любой учебник по обработке изображений и почитать на эту тему. В частности, вас могут заинтересовать Морфологические Операции , такие как Расширение и Эрозия , которые дополняют работу детектора края . В сети много материалов ...

1
ответ дан 30 November 2019 в 04:16
поделиться

Это проблема обработки изображения. На эту тему написано много книг, и большая часть материала в этих книгах выходит за рамки подобной проблемы обнаружения линий. Вот схема одной из техник, которые могут помочь в решении этой проблемы.

  1. Когда вы находите трещину, вы обнаруживаете несколько пикселей, из которых она состоит. Для этого можно использовать фильтры обнаружения кромок или другие методы обнаружения кромок.

  2. Начните с одного (любого) пикселя в трещине, затем "следуйте" за ним, чтобы сделать из трещины многоточечную линию - сохраните точки, составляющие линию. Вы можете удалить некоторые промежуточные точки, если они лежат близко к прямой. Сделайте это со всеми пикселями трещины. Если у вас трещина в форме звезды, не беспокойтесь об этом. Просто проследите за пикселями в одном (или двух) направлениях, чтобы получилась линия, а затем удалите эти пиксели из набора пикселей трещины. Другие ноги звезды будут распознаваться как отдельные линии (пока).

  3. Вы можете выполнить некоторое прореживание пикселей трещины перед шагом 1. Другими словами, проверьте соседние пиксели, и если их слишком много, тогда игнорировать этот пиксель. (Это упрощение - для этого можно найти несколько алгоритмов. ) Другой шаг предварительной обработки может заключаться в удалении всех слишком тонких или двух слабых линий. Это может помочь с ложными срабатываниями.

  4. Теперь у вас много коротких многоточечных линий. Для конечных точек каждой линии найдите ближайшую линию. Если линии находятся в пределах допуска, то «соедините» линии - свяжите их или добавьте в одну структуру или массив. Таким образом, вы можете соединить близкие трещины, которые, скорее всего, будут такой же трещиной в бетоне.

Похоже, что независимо от алгоритма, для хорошей производительности потребуется некоторая настройка параметров. Напишите его так, чтобы было легко вносить незначительные изменения в такие вещи, как пороги интенсивности, минимальная и максимальная толщина и т. Д.

В зависимости от среды использования вы можете разрешить пользователю определять сомнительные случаи,

0
ответ дан 30 November 2019 в 04:16
поделиться

Здесь есть несколько очень хороших ответов. Но если вы не можете решить проблему, вы можете подумать о Mechanical Turk. В некоторых случаях это может быть очень рентабельным для решения серьезных проблем. Я знаю людей, которые используют его для всех видов подобных вещей (проверка того, что человек может делать это легко, но сложно кодировать).

https://www.mturk.com/mturk/welcome

2
ответ дан 30 November 2019 в 04:16
поделиться

Как лучше всего распознавать шаблоны в данных, и как лучше всего узнать больше по теме?

Лучший подход - изучить распознавание образов и машинное обучение. Я бы начал с классификации паттернов Дуды и использовал бы Бишоп Распознавание образов и машинное обучение в качестве ссылки. Для того, чтобы материал усвоился, потребуется немало времени, но понимание основ распознавания образов и основных подходов к проблеме классификации должно дать вам направление. Я могу сесть здесь и сделать некоторые предположения о ваших данных, но, честно говоря, вы, вероятно, лучше всех имеете представление о наборе данных, так как вы имели дело с ним больше, чем кто-либо. Некоторые из полезных методов, например, могут быть векторной машиной поддержки и бустингом .

Править : Интересным применением повышения является обнаружение лиц в реальном времени. См. Быстрое обнаружение объектов Виолы / Джонса с помощью усиленного каскада простых Характеристики (pdf). Кроме того, глядя на образцы изображений, я бы сказал, что вам следует немного улучшить распознавание краев. Возможно, сглаживание изображения по Гауссу и более активное обнаружение краев может улучшить обнаружение мелких трещин.

1
ответ дан 30 November 2019 в 04:16
поделиться

Вы получили очень хороший ответ, особенно. @ Nate's, и все предлагаемые ссылки и книги заслуживают внимания. Однако я удивлен, что никто не предложил ту книгу, которая была бы моим лучшим выбором - Программирование коллективного разума О'Рейли . Название может показаться неуместным для вашего вопроса, но, поверьте мне, содержание - это : один из наиболее практичных, ориентированных на программистов охват интеллектуального анализа данных и «машинного обучения», который я когда-либо видел. Попробуйте! -)

0
ответ дан 30 November 2019 в 04:16
поделиться

Вы должны прочитать о интеллектуальном анализе данных , особенно интеллектуальном анализе данных .

интеллектуальный анализ данных - это процесс извлечения закономерностей из данных. По мере сбора большего количества данных, когда объем данных удваивается каждые три года, интеллектуальный анализ данных становится все более важным инструментом для преобразования этих данных в информацию. Он обычно используется в широком спектре методов профилирования, таких как маркетинг, наблюдение, обнаружение мошенничества и научные открытия.

Хорошая книга по этому вопросу - Data Mining: практические инструменты и методы машинного обучения

Data Mining can be bought in Amazon.
( источник: waikato.ac.nz ) ] ( http://www.amazon.com/Data-Mining-Ian-H-Witten/dp/3446215336 "ISBN 0-12-088407-0 " )

По сути, вам нужно применить статистические инструменты и методологии к вашим наборам данных. Наиболее часто используемые методы сравнения - это t-критерий Стьюдента и критерий хи-квадрат , чтобы увидеть, связаны ли две несвязанные переменные с некоторой степенью уверенности.

0
ответ дан 30 November 2019 в 04:16
поделиться

Это немного похоже на проблему в механике горных пород, когда в массиве горных пород есть суставы, и эти суставы должны быть сгруппированы в «наборы» по ориентации, длине и другим свойствам. В данном случае хорошо работает метод кластеризации, хотя у классических K-средних, похоже, есть несколько проблем, которые я решал в прошлом, используя генетический алгоритм для запуска интерактивного решения.

В этом случае я подозреваю, что это могло бы быть. не работают точно так же. В этом случае я подозреваю, что вам нужно создать свои группы, чтобы начать с продольных, поперечных и т. Д., И точно определить, каково поведение каждой группы, то есть может ли одна продольная трещина разветвляться по ее длине, и если она делает то, что делает что делать с его классификацией.

После этого для каждой трещины Я бы создал случайную трещину или узор трещин на основе созданной вами классификации. Затем вы можете использовать что-то вроде метода наименьших квадратов, чтобы увидеть, насколько точно проверяемая трещина совпадает со случайной трещиной / трещинами, которые вы создали. Вы можете повторить этот анализ много раз в манере анализа Монте-Карло, чтобы определить, какая из случайно сгенерированных трещин / трещин лучше всего соответствует той, которую вы проверяете.

Чтобы затем справиться с ложными срабатываниями, вам нужно будет создать шаблон для каждого из различных типов ложных срабатываний, т.е. край бордюра представляет собой прямую линию. Затем вы сможете запустить анализ, выбрав наиболее вероятную группу для каждой анализируемой трещины.

Наконец, вам нужно будет «настроить» определение различных типов трещин, чтобы попытаться получить лучший результат. Я предполагаю, что здесь можно использовать автоматический или ручной подход в зависимости от того, как вы определяете различные типы трещин.

Еще одна модификация, которая иногда помогает, когда я решаю подобные задачи, - это создание случайной группы. Настраивая чувствительность случайной группы, то есть насколько более или менее вероятно, что трещина будет включена в случайную группу, вы можете иногда настроить чувствительность модели на сложные шаблоны, которые на самом деле никуда не подходят.

Удачи, мне кажется, у вас настоящая проблема.

насколько более или менее вероятно, что трещина будет включена в случайную группу, иногда вы можете настроить чувствительность модели на сложные шаблоны, которые на самом деле никуда не подходят.

Удачи, мне кажется, у вас настоящая проблема.

насколько более или менее вероятно, что трещина будет включена в случайную группу, иногда вы можете настроить чувствительность модели на сложные шаблоны, которые на самом деле никуда не подходят.

Удачи, мне кажется, у вас настоящая проблема.

0
ответ дан 30 November 2019 в 04:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: