데이터의 패턴을 인식하는 가장 좋은 방법은 무엇이며, 주제에 대해 더 많이 배우는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1441319

문제

내가 협력하고있는 개발자는 포장 도로의 이미지를 분석하여 포장 도로에서 균열을 찾는 프로그램을 개발하는 것입니다. 그의 프로그램이 찾은 모든 균열에 대해, 어떤 픽셀이 특정 균열을 구성하는지 알려주는 파일에 항목을 생성합니다. 그의 소프트웨어에는 두 가지 문제가 있습니다.

1) 몇 가지 잘못된 긍정을 생성합니다

2) 그가 균열을 발견하면, 그는 그것의 작은 부분 만 발견하고 해당 섹션을 별도의 균열로 나타냅니다.

저의 임무는이 데이터를 읽고, 분석하고, 거짓 양성과 실제 균열의 차이를 알려주는 소프트웨어를 작성하는 것입니다. 또한 균열의 모든 작은 부분을 하나로 그룹화하는 방법을 결정해야합니다.

나는 잘못된 양성을 제거하기 위해 데이터를 필터링하는 다양한 방법을 시도했으며, 신경망을 사용하여 균열을 함께 그룹화하기 위해 제한된 성공을 거두었습니다. 오류가있을 것이라는 것을 이해하지만 현재로서는 오류가 너무 많습니다. 내 작업을 달성하거나 더 많은 것을 배우는 가장 좋은 방법에 대한 비이 IAI 전문가에 대한 통찰력이 있습니까? 어떤 종류의 책을 읽어야합니까, 아니면 어떤 종류의 수업을 받아야합니까?

편집하다 내 질문은 동료의 데이터에서 패턴을 알아 차리고 해당 패턴을 실제 균열로 식별하는 방법에 대한 것입니다. 저수준 논리가 아니라 내가 염려하는 상위 수준의 논리입니다.

편집하다 실제로, 내가 작업하는 데이터를 정확하게 표현하기 위해 최소 20 개의 샘플 이미지가 필요합니다. 그것은 많이 다양합니다. 그러나 나는 샘플이 있습니다 여기, 여기, 그리고 여기. 이 이미지는 이미 동료의 프로세스에 의해 처리되었습니다. 빨간색, 파란색 및 녹색 데이터는 내가 분류 해야하는 것입니다 (빨간색은 어두운 균열, 파란색은 밝은 균열을위한, 녹색은 넓은/밀봉 된 균열을 나타냅니다).

도움이 되었습니까?

해결책

이미지 처리에 대한 유용한 의견 외에도 클러스터링 문제.

클러스터링 알고리즘에서 나온 것입니다 기계 학습 문학, 구체적으로 감독되지 않은 학습. 이름에서 알 수 있듯이 기본 아이디어는 천연 클러스터를 식별하십시오 일부 대규모 데이터 세트 내의 데이터 포인트.

예를 들어, 아래 그림은 클러스터링 알고리즘이 7 개의 클러스터 (원과 색상으로 표시됨)로 많은 점을 그룹화 할 수있는 방법을 보여줍니다.

k-means
(원천: natekohl.net)

귀하의 경우, 클러스터링 알고리즘은 일부 정지 기준이 충족 될 때까지 작은 균열을 반복적으로 병합하려고 시도합니다. 최종 결과는 더 작은 결합 된 균열 세트입니다. 물론 균열은 2 차원 지점과 약간 다릅니다. 여기서 작동하도록 클러스터링 알고리즘을 얻는 데있어 트릭의 일부는 두 균열 사이에 유용한 거리 메트릭을 정의하는 것입니다.

인기있는 클러스터링 알고리즘에는 포함됩니다 K- 평균 클러스터링 (데모) 그리고 계층 적 클러스터링. 두 번째 링크에는 K- 평균의 작동 방식에 대한 훌륭한 단계별 설명도 있습니다.

편집하다: Phillips의 일부 엔지니어 의이 논문은 다음과 같은 작업과 관련이 있습니다.

  • Chenn-Jung Huang, Chua-Chin Wang, Chi-Feng Wu, "웨이퍼 결함 클러스터 식별을위한 이미지 처리 기술," 컴퓨터의 IEEE 설계 및 테스트, vol. 19, 아니오. 2, pp. 44-48, 2002 년 3 월/4 월.

그들은 실리콘 웨이퍼의 결함에 대한 육안 검사를하고 있으며 중간 필터 가장 가까운 이웃 클러스터링 알고리즘을 사용하기 전에 노이즈를 제거하기 위해 결함을 감지합니다.

다음은 유용 할 수있는 몇 가지 관련 논문/책입니다.

  • M. Taubenlatt 및 J. Batchelder, "클러스터 환경을위한 공간 필터링을 사용한 패턴 웨이퍼 검사,” 응용 광학, vol. 31, 아니오. 1992 년 6 월 17 일, 3354-3362 쪽.
  • F.-L. Chen과 S.-F. Liu, "반도체 제조에서 결함 공간 패턴을 인식하기위한 신경-네트워크 접근법.IEEE 트랜스. 반도체 제조, vol. 13, 아니오. 2000 년 8 월 3 일, pp. 366-373.
  • G. Earl, R. Johnsonbaugh 및 S. Jost, 패턴 인식 및 이미지 분석, 프렌 티스 홀, 1996 년 뉴저지 상단 새들 강.

다른 팁

당신의 문제는 매우 광범위한 이미지 분류 분야에 속합니다. 이러한 유형의 문제는 악명 높은 문제가 될 수 있으며, 하루가 끝나면 해결하는 것은 예술입니다. 문제 영역에 대한 모든 지식을 활용하여 트랙 가능하게 만들어야합니다.

근본적인 문제 중 하나는 정규화입니다. 데이터 표현에서 가능한 한 유사하게 분류 된 객체를 사용하려고합니다. 예를 들어, 균열 이미지가있는 경우 모든 이미지가 동일한 방향을 가지고 있습니까? 그렇지 않은 경우 이미지를 회전하면 분류에 도움이 될 수 있습니다. 마찬가지로 스케일링 및 번역 (참조 이것)

또한 교육 세트에서 가능한 한 많은 관련이없는 데이터를 제거하려고합니다. 이미지를 직접 작업하기보다는 아마도 사용할 수 있습니다. 가장자리 추출 (예 : Canny Edge Detection). 이렇게하면 이미지에서 모든 '노이즈'가 제거되어 가장자리 만 남겨 둡니다. 그런 다음 운동은 어떤 가장자리가 균열인지, 자연 포장 도구인지 식별하도록 감소합니다.

솔루션을 빠르게 추적하려면 먼저 행운을 시도하는 것이 좋습니다. 컨볼 루션 신경 그물, 최소한의 전처리 및 Noramlization으로 꽤 좋은 이미지 분류를 수행 할 수 있습니다. 필기 인식으로 잘 알려져 있으며, 당신이하고있는 일에 적합 할 수 있습니다.

나는 당신이 문제를 무너 뜨리기로 선택한 방식으로 약간 혼란스러워합니다. 동료가 완전한 균열을 식별하지 않고 사양이라면 문제가됩니다. 그러나 모든 균열을 함께 꿰매고 그의 잘못된 긍정적 인 것을 피하면 그의 일을하지 않았습니까?

그 외에도, 나는 이것이 An이라고 생각합니다 가장자리 감지 분류 문제보다는 문제. 에지 감지기가 양호하면 문제가 사라집니다.

여전히 분류에 따라 설정되어 있다면, 알려진 답변이있는 교육 세트가 필요합니다. 왜냐하면 실제 균열과 잘못된 긍정적 인 것을 정량화하는 방법이 필요하기 때문입니다. 그러나 나는 여전히 분류기가 균열을 연결할 수있을 가능성은 거의 없다고 생각합니다. 왜냐하면 각 개별 포장 슬래브에 특유하기 때문입니다.

나는 당신이 공동 개발자들이 균열 감지를 패치하고 그의 잘못된 긍정을 제거하기 위해 Edge Detection의 영역으로 뛰어 들면 IRE_and_curses에 동의해야합니다. 마치 그의 일을하는 것처럼 보입니다. 당신이 그의 소프트웨어가 감지하지 않은 것을 패치하고 그가 당신에게 준 것에 대한 그의 잘못된 긍정을 제거 할 수 있다면. 전체 이미지를 위해 이것을 할 수있는 것 같습니다.

사양이 균열을 감지하고 분류하는 것이면 가장자리 감지를 수행하고 잘못된 양성을 제거하는 것이 그의 임무입니다. 그리고 그분이 당신에게 준 것을 취하고 그것이 어떤 종류의 균열인지 분류하는 당신의 임무. 이를 위해 에지 감지를해야한다면, 공동 개발자를 직장에서 벗어나는 것과는 거리가 멀지 않은 것처럼 들립니다.

여기에는 아주 좋은 답변이 있습니다. 그러나 문제를 해결할 수 없다면 기계적 터크를 고려할 수 있습니다. 경우에 따라 완고한 문제에 대해 비용 효율적일 수 있습니다. 나는 이와 같은 모든 종류의 일에 그것을 사용하는 사람들을 알고 있습니다 (인간이 쉽게 할 수 있지만 코딩하기가 어렵다는 확인).

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

나는 어떤 방법으로는 전문가가 아니지만 보려고 노력하십시오. 하르 캐스케이드. OpenCV 툴킷을 실험 할 수도 있습니다. 이 두 가지는 함께 탐지 및 기타 객체 감지 작업을 수행합니다.

포장 도로의 균열에 대한 HAAR 캐스케이드를 개발하려면 "훈련"을해야 할 수도 있습니다.

데이터의 패턴을 인식하는 가장 좋은 방법은 무엇이며, 주제에 대해 더 많이 배우는 가장 좋은 방법은 무엇입니까?

가장 좋은 방법은 패턴 인식 및 기계 학습을 연구하는 것입니다. 나는 Duda 's로 시작할 것입니다 패턴 분류 주교를 사용하십시오 패턴 인식 및 기계 학습 참조로. 재료가 가라 앉는 데 시간이 걸리지 만, 기본적인 패턴 인식 감각과 분류 문제의 주요 접근 방식을 얻으면 방향을 제시해야합니다. 나는 여기에 앉아서 당신의 데이터에 대해 몇 가지 가정을 할 수 있지만, 솔직히 당신은 다른 사람보다 더 많은 것을 다루었 기 때문에 데이터 세트에 대한 최상의 아이디어를 가지고있을 것입니다. 예를 들어 유용한 기술 중 일부는 가능합니다 벡터 머신을 지원합니다 그리고 부스팅.

편집하다: 흥미로운 부스트의 적용은 실시간 얼굴 감지입니다. 비올라/존스를 참조하십시오 단순한 기능의 부스트 캐스케이드를 사용한 빠른 물체 감지 (PDF). 또한 샘플 이미지를 살펴보면 에지 감지를 조금 개선해야한다고 말합니다. 가우시안으로 이미지를 부드럽게하고보다 공격적인 에지 감지를 실행하면 작은 균열의 감지를 증가시킬 수 있습니다.

이미지 처리 교과서를 선택하고 주제를 읽는 것이 좋습니다. 특히, 당신은 관심이있을 수 있습니다 형태 학적 운영 처럼 팽창 그리고 침식,이 작업을 보완합니다 에지 감지기. 그물에 많은 재료가 ...

이것은 이미지 처리 문제입니다. 주제에 관한 많은 책들이 있으며,이 책들의 많은 자료는 이와 같은 선의 탐지 문제를 넘어선 것입니다. 다음은 문제에 효과가있는 한 가지 기술의 개요입니다.

  1. 균열이 발견되면 균열을 구성하는 픽셀이 있습니다. 이에 가장자리 감지 필터 또는 기타 에지 감지 방법을 사용할 수 있습니다.

  2. 균열에서 하나의 픽셀로 시작한 다음 균열에서 멀티 포인트 라인을 만들기 위해 "따라"라인을 구성하는 포인트를 저장하십시오. 직선 근처에있는 경우 중간 지점을 제거 할 수 있습니다. 모든 균열 픽셀 로이 작업을 수행하십시오. 별 모양의 균열이 있다면 걱정하지 마십시오. 픽셀을 한 방향으로 한 방향으로 따라 선을 구성한 다음 균열 픽셀 세트 에서이 픽셀을 제거하십시오. 별의 다른 다리는 별도의 선으로 인식 될 것입니다 (현재).

  3. 1 단계 이전의 균열 픽셀에서 약간의 얇아 질 수 있습니다. 즉, 픽셀의 이웃을 확인하고 너무 많은 경우 해당 픽셀을 무시하십시오. (이것은 단순화입니다.이를위한 여러 알고리즘을 찾을 수 있습니다.) 또 다른 전처리 단계는 너무 얇거나 두 개의 희미한 라인을 제거하는 것입니다. 이것은 잘못된 긍정에 도움이 될 수 있습니다.

  4. 이제 당신은 짧은 다수의 줄이 많이 있습니다. 각 라인의 엔드 포인트의 경우 가장 가까운 선을 찾으십시오. 선이 공차 내에 있으면 선을 "연결"하여 연결하거나 동일한 구조 또는 어레이에 추가하십시오. 이렇게하면 콘크리트에서 동일한 균열 일 수있는 근접 균열을 연결할 수 있습니다.

알고리즘에 관계없이 좋은 성능을 위해서는 일부 매개 변수 조정이 필요합니다. 강도 임계 값, 최소 및 최대 두께 등과 같은 사소한 일을 쉽게 변경할 수 있도록 작성하십시오.

사용 환경에 따라 사용자 판단이 의심스러운 사례를 결정하거나 사용자가 모든 균열을 검토하고 클릭하여 검출 된 균열을 결합, 분할 또는 제거 할 수 있습니다.

당신은 아주 좋은 대답을 얻었습니다. @Nate 's와 제안 된 모든 링크와 책은 가치가 있습니다. 그러나 나는 아무도 한 권의 책을 제안하지 않았다는 것에 놀랐다. 나의 최고 선택 - 오라일리 집단 지능 프로그래밍. 제목은 당신의 질문에 독일인처럼 보이지 않을 수도 있지만, 내용은 저를 믿습니다. ~이다: 내가 본 것 중 가장 실용적이고 프로그래머 중심의 데이터 마이닝 및 "기계 학습"중 하나입니다. 스핀을주세요!-)

암석 역학에 문제가있는 것처럼 들립니다. 암석 질량에 관절이 있으며이 관절은 방향, 길이 및 기타 특성에 의해 '세트'로 그룹화되어야합니다. 이 경우에 잘 작동하는 방법 중 하나는 클러스터링입니다. 고전적인 k- 평균은 과거에 유전자 알고리즘을 사용하여 상호 솔루션을 실행하기 위해 해결했던 몇 가지 문제가있는 것 같습니다.

이 경우 나는 그것이 같은 방식으로 작동하지 않을 것이라고 생각합니다. 이 경우, IE 세로, 횡 방향 등으로 시작하기 위해 그룹을 만들어야한다고 생각하고 각 그룹의 Beviour가 무엇인지 정확히 정의해야합니다. 그것은 분류에 적용됩니다.

일단 당신이 각 균열에 대해 그것을 가지고 있으면, 나는 당신이 만든 분류에 따라 임의의 균열 또는 균열 패턴을 생성합니다. 그런 다음 최소 제곱 접근 방식과 같은 것을 사용하여 확인하는 균열이 생성 한 임의의 균열 / 균열에 얼마나 잘 맞는지 확인할 수 있습니다. Monte-Carlo 분석 방식 으로이 분석을 여러 번 반복하여 무작위로 생성 된 균열 / 균열 중 가장 적합한 균열 중 어느 것이 확인되는지 식별 할 수 있습니다.

그런 다음 잘못된 양성을 처리하려면 각기 다른 유형의 잘못된 양성에 대한 패턴을 만들어야합니다. 즉 연석의 가장자리는 직선입니다. 그런 다음 분석 한 각 균열에 대해 가장 가능성이 높은 그룹 인 분석 선택을 실행할 수 있습니다.

마지막으로, 더 나은 결과를 얻으려면 다른 균열 유형의 정의를 '조정'해야합니다. 다른 균열 유형을 정의하는 방법에 따라 자동화 된 접근 방식이나 수동 접근 방식을 사용할 수 있다고 생각합니다.

이와 같은 문제를 수행 할 때 때때로 도움이되는 또 다른 수정은 임의의 그룹을 갖는 것입니다. 랜덤 그룹의 민감도를 조정함으로써 랜덤 그룹에 균열이 얼마나 많거나 적을 가능성이 있는지, 때로는 모델의 감수성을 실제로 어디에도 적합하지 않은 복잡한 패턴으로 조정할 수 있습니다.

행운을 빕니다, 당신이 진짜 도전이있는 것처럼 보입니다.

당신은 읽어야합니다 데이터 수집, 특히 패턴 마이닝.

데이터 마이닝은 데이터에서 패턴을 추출하는 과정입니다. 더 많은 데이터가 수집되면서 3 년마다 두 배가되는 데이터의 양으로 데이터 마이닝은 이러한 데이터를 정보로 변환하는 데 점점 더 중요한 도구가되고 있습니다. 마케팅, 감시, 사기 탐지 및 과학적 발견과 같은 광범위한 프로파일 링 관행에 일반적으로 사용됩니다.

주제에 관한 좋은 책은입니다 데이터 마이닝 : 실용적인 기계 학습 도구 및 기술

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- 테스트 그리고 Chi 제곱 테스트, 두 개의 관련이없는 변수가 자신감과 관련이 있는지 확인합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top