Каков наилучший подход к распознаванию шаблонов в данных и как лучше узнать больше по теме? - PullRequest
19 голосов
/ 18 сентября 2009

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

1) Выдает несколько ложных срабатываний

2) Если он находит трещину, он находит ее только небольшие участки и обозначает эти участки как отдельные трещины.

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

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

РЕДАКТИРОВАТЬ Мой вопрос больше о том, как заметить закономерности в данных моего коллеги и идентифицировать эти узоры как настоящие трещины. Меня интересует логика более высокого уровня, а не логика низкого уровня.

РЕДАКТИРОВАТЬ В действительности, для получения точного представления данных, с которыми я работаю, потребуется по меньшей мере 20 образцов изображений. Это сильно варьируется. Но у меня есть образец здесь , здесь и здесь . Эти изображения уже были обработаны моим коллегой. Красные, синие и зеленые данные - это то, что я должен классифицировать (красный обозначает темную трещину, синий обозначает светлую трещину, а зеленый обозначает широкую / запечатанную трещину).

Ответы [ 12 ]

0 голосов
/ 23 сентября 2009

Вы должны прочитать о data mining , особенно pattern 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 голосов
/ 23 сентября 2009

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

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

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

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

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

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

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

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