전통문화대전망 - 전통 미덕 - 이미지 분할 알고리즘 요약
이미지 분할 알고리즘 요약
이미지 처리의 많은 작업은 이미지 분할과 분리될 수 없습니다. 이력서에서는 이미지 분할이 매우 중요(유용)하므로 먼저 이미지 분할에 일반적으로 사용되는 알고리즘을 요약해 보겠습니다.
머신러닝과 딥러닝을 접한 지 꽤 오래됐습니다. 이 기간 동안 다양한 관련 지식을 읽었지만 요약하지는 않았습니다. 이 글 이후에는 전통적인 머신러닝 알고리즘, 전통적인 컴퓨터 비전 라이브러리 알고리즘부터 현재 일반적으로 사용되는 알고리즘과 딥러닝에 관한 논문, 그리고 모델 변환 등 관련 지식까지 공학적 관점에서 최대한 자세히 요약하겠습니다. , 수량화 및 다양한 플랫폼에서의 서비스 지향 배포를 요약합니다.
이미지 분할에 일반적으로 사용되는 알고리즘은 대략 다음과 같은 범주로 나뉩니다. 이미지의 에너지 스펙트럼으로 인해 가장자리 추적 및 기타 방법의 효과는 특정 문제만 해결할 수 있는 경우가 많으며 결과도 이상적이지 않으므로 여기서는 자세히 설명하지 않겠습니다. 물론 이진화 자체도 일부 간단한 이미지를 분할할 수 있습니다. 하지만 이진화 알고리즘은 많기 때문에 이를 요약하는 특집 기사를 작성하겠습니다. 여기서는 자세히 다루지 않겠습니다.
1. Edge 기반 이미지 분할 알고리즘:
Sobel, Roberts, Prewitt, Laplacian 및 Canny와 같은 이미지 그라데이션을 사용하는 전통적인 알고리즘 연산자가 있습니다.
이러한 알고리즘의 기본 아이디어는 적절한 컨볼루션 연산자를 사용하여 이미지를 컨볼루션하는 것입니다. 따라서, 이미지에 대응하는 그래디언트 이미지가 획득된다. (그림 1과 같이 연산자 컨볼루션을 통해 이미지의 그래디언트 이미지를 얻을 수 있는 이유는 컨볼루션과 역수의 개념을 검토하고 직접 도출하시기 바랍니다.) 이미지의 가장자리는 이미지 픽셀의 차이가 큰 경우가 많기 때문에, 그라데이션이 상대적으로 작습니다. 따라서 적절한 컨볼루션 커널을 통해 이미지의 그래디언트 이미지, 즉 이미지의 에지 이미지를 얻습니다. 2차 연산자의 유도는 1차 연산자와 유사합니다. 장점: 기존 연산자 기울기 감지는 해당 에지 이미지를 빠르게 얻기 위해 컨볼루션에 적합한 컨볼루션 커널만 사용해야 합니다. 단점: 이미지 가장자리가 반드시 정확하지는 않습니다. 복잡한 이미지의 그라데이션은 이미지 가장자리에만 나타나는 것이 아니라 이미지 내부의 색상과 질감에도 나타날 수 있습니다.
?hed, rcf 등을 기반으로 한 딥러닝 방법도 있습니다. 이러한 유형의 네트워크에는 모두 동일한 심각한 결함이 있으므로 여기서는 hed 네트워크의 예만 제공합니다. Hed는 FCN 및 VGG 개선을 기반으로 하며 최적화 훈련을 위해 6개의 손실을 도입하고 여러 레이어를 통해 서로 다른 크기의 에지를 출력한 다음 훈련 가중치를 통해 각 레이어의 에지 결과를 융합합니다. hed 네트워크 구조는 다음과 같습니다.
상대적으로 완전한 그래디언트 이미지를 얻을 수 있습니다. github의 hed 구현을 참조하세요. 장점: 이미지의 그라데이션 세부 사항과 가장자리 무결성이 기존 가장자리 연산자보다 훨씬 좋습니다. 그러나 그는 가장자리 이미지 내부의 가장자리를 잘 구별할 수 없습니다. 물론 외부 이미지 가장자리에만 맞추기 위해 손실을 직접 변경할 수도 있습니다. 하지만 가장 치명적인 문제는 VGG 기반 HED의 네트워크 표현 능력이 제한적이라는 점이다.
2. 지역 분할 기반 알고리즘:
지역 분할은 유전자 알고리즘과 결합된 기존 알고리즘, 지역 성장 알고리즘, 지역 분할 및 병합, 유역 알고리즘과 같이 더 일반적으로 사용됩니다. 등. 여기서 전통적인 알고리즘의 아이디어는 비교적 간단하고 이해하기 쉽습니다. 이해하지 못하는 것이 있으면 함께 토론하고 배우는 것을 환영합니다. 여기서는 더 이상 분석을 수행하지 않습니다.
현재 이미지 분할 결과와 연구의 주요 방향은 영역과 의미에 기반한 딥러닝 분할 알고리즘입니다. 예를 들어 완전 합성곱 네트워크의 FCN 시리즈, 고전적인 의료 이미지 분할에 일반적으로 사용되는 unet 시리즈, rcnn 시리즈 개발 중인 Maskrcnn, 2018년 말 PAnet 등이 있습니다. 의미 기반 이미지 분할 기술은 의심할 여지 없이 이미지 분할 기술의 주류가 될 것입니다.
그 중 딥러닝 의미론을 기반으로 한 다른 관련 알고리즘도 이미지 분할에 간접적으로 또는 직접적으로 적용할 수 있습니다. 고전적인 이미지 매트 문제와 같은 것입니다. 2018년에는 우수한 알고리즘과 논문이 많이 나왔습니다. Deep-Image-Matting 및 MIT의 의미론적 소프트 분할(sss)과 같은 기능은 매우 효과적입니다.
의미론적 기반 이미지 분할의 효과는 다른 기존 알고리즘보다 확실히 뛰어납니다. 이미지 분할 문제를 해결하면서 가장 먼저 hed 네트워크를 사용해 보았습니다. 최종 결과는 이상적이지 않았습니다. 저도 github을 참고해서 hed에서 미세조정을 좀 해봤지만, 위와 같은 이유로 여러번 시도한 끝에 결국 포기했습니다. FCN 시리즈 네트워크로 전환하세요. 하지만 fcn은 이미지와 배경이 섞이는 문제를 해결할 수 없습니다. 이미지 융합의 분할에는 넓은 수용 필드와 원본 이미지 세부 정보의 융합되지 않은 부분이 모두 필요하므로 단일 원본 FCN 네트워크로는 정확한 분할을 달성하기 어렵습니다. 그 동안 다른 여러 관련 네트워크도 테스트했지만 모두 잘 작동하지 않았습니다. Receptive field와 원본 이미지의 세부정보를 고려하여 resnet과densitynet을 이미지 특징 추출의 최하위 레이어로 시도했습니다.
마지막으로 unet 네트워크 시리즈를 테스트했습니다.
unet의 원래 모델이 그림에 나와 있습니다. 크롤러 사진을 직접 찍어서 거의 1,000장에 가까운 사진을 모았습니다. 품질이 너무 낮고 내용이 너무 유사한 사진은 제거됩니다. 크롤러는 결국 160장 이상의 사진을 수집했고, 200장의 사진을 수집한 후 PS를 사용하여 엣지 이미지를 수동으로 편집하고 이미지 향상 변환을 사용했습니다. 약 300*24장의 사진이 있었습니다. 기본 unet 네트워크의 성능은 비교적 평균입니다. unet의 일반 컨볼루션 계층을 resnet으로 변경한 후 네트워크의 표현 능력이 크게 향상되었습니다. resnet을 resnet101로 변경하면 이때 부분적으로 혼합된 이미지라도 더 잘 분할될 수 있습니다. 그러나 unet의 모델 크기는 더 이상 허용되지 않습니다.
마지막 단계에서는 Maskrcnn의 인스턴스 분할을 확인하세요. Maskrcnn은 rcnn과 fastrcnn에서 개발되었습니다. 그래서 나는 자신의 훈련 데이터를 추가하고 훈련을 위한 이미지에 라벨을 붙이기 위해 Maskrcnn을 사용했습니다. Maskrcnn의 결과 성능은 다른 알고리즘에 비해 만족스럽지 않습니다. 가장자리 위치 지정이 약간 거칠습니다. 제품 응용 분야에서는 아직 적합하지 않습니다.
3. 그래프 기반 분할 알고리즘
딥러닝 기반 딥그랩의 성능은 그다지 만족스럽지 않습니다. deepgrab의 git 작성자 백본은 deeplabv2의 네트워크 구조를 채택합니다. 원본 용지가 완전히 설치되지 않았습니다.
논문 원본 주소 참조: https://arxiv.org/pdf/1707.00243.pdf
전체적인 구조는 인코더와 디코더와 유사합니다. resent101을 기반으로 한 구조는 모델 볼륨, 속도 및 deeplab의 분할 정확도 측면에서 현재 요구 사항을 충족할 수 없기 때문에 너무 주의 깊게 연구되지 않았습니다. 앞서 컴퓨터 비전 관련 지식 포인트를 대략적으로 정리한 바 있습니다. 현재는 모바일 모델에 대해 논의하고 있으므로, 모바일 모델의 적용을 모듈별로 요약해 보겠습니다.
시간이 정말 한정되어 있으니까요. 여기에는 각 알고리즘에 대한 자세한 설명이 없습니다. 다음에서는 기본 기계 학습 알고리즘에 대한 요약부터 시작하겠습니다.