뇌가 눈이 인식하는 것을 식별하고 분류하기 위해 빠르고 효율적으로 훈련되어 뇌는 모든 것을 세밀하게 분석합니다.
컴퓨터 비전은 컴퓨터가 인간이 하는 것처럼 비디오와 이미지의 개체를 식별하고 처리할 수 있도록 하는 컴퓨터 과학 분야입니다. 컴퓨터 비전은 그리 오래된 개념이 아닌 것처럼 보일 수 있지만 이미지를 숫자 그리드로 변환하는 최초의 디지털 이미지 스캐너가 발명된 1960년대 후반으로 거슬러 올라갑니다.
1. 이미지 분할(Image Segmentation)
이미지에 단일 개체가 있는 경우 이미지 지역화 기술을 사용하여 해당 개체 주위에 경계 상자를 그립니다. 물체 감지의 경우 bounding boxes와 함께 레이블을 제공합니다. 따라서 각 객체가 속한 클래스와 위치를 예측할 수 있습니다.
이미지 세분화는 이미지 모양에 대한 보다 세분화된 정보를 제공하여 객체 감지의 개념을 확장합니다.
이미지를 분할, 즉 이미지를 다른 색상의 영역으로 나누어 물체를 다른 물체와 더 미세한 수준에서 구별하는 데 도움이 됩니다
2. 이미지 분할의 유형
이미지 분할은 크게 두 가지 유형으로 분류할 수 있습니다.
1) 의미론적 세분화
의미론적 분할(Semantic Segmentation)은 이미지 픽셀을 각각의 클래스로 분할하는 과정입니다. 예를 들어, 위의 그림에서 고양이는 노란색과 관련이 있습니다. 따라서 고양이와 관련된 모든 픽셀은 노란색으로 표시됩니다. 동일한 클래스의 여러 개체는 단일 엔터티로 간주되므로 동일한 색상으로 표시됩니다.
2) 인스턴스 세분화
인스턴스 세분화는 더욱 철저하게 이루어지고 있으며 일반적으로 여러 객체를 처리할 때 나타납니다. 여기서 차이점은 감지된 물체가 색상으로 마스킹되므로 이미지와 연결된 모든 픽셀에 동일한 색상이 지정된다는 것입니다. 동일한 클래스의 여러 개체는 별개의 엔터티로 처리되므로 다른 색상으로 표시됩니다.
3. 이미지 분할의 응용
1) 자율 주행 자동차
이미지 분할은 자율 주행 자동차에서 다양한 물체를 쉽게 구별하는 데 사용할 수 있습니다. 교통 신호등, 간판, 사람, 자동차가 될 수 있습니다. 운전 명령 알고리즘이 다음 명령을 생성하기 전에 주변 환경을 더 잘 평가하는 데 도움이 될 수 있습니다.
2) 회로 기판 결함 감지
이미지 분할 모델이 탑재된 카메라가 최종 제품에서 생성된 결함을 계속 스캔하면 결함이 있는 장치를 수리하는 데 많은 비용과 시간을 절약할 수 있습니다.
3) 얼굴 인식
휴대폰의 대다수 카메라가 세로 모드를 지원합니다. 세로 모드는 기술적으로 이미지 분할의 결과입니다. 이 외에도 보안 감시는 얼굴과 물체를 구별될 수 있을 때 훨씬 더 효과적입니다.
4) 의료 영상
이미지 세분화는 의료 보고서에서 임상적으로 관련된 정보를 추출하는 데 사용할 수 있습니다. 예를 들어, 이미지 분할은 종양을 분할하는 데 사용할 수 있습니다.
4. MASK R-CNN
Mask R-CNN 아키텍처를 사용하여 이미지 분할을 수행할 수 있습니다. 객체 감지 작업에 선호되는 Faster R-CNN Model의 확장입니다. Mask R-CNN은 클래스 레이블 및 객체 경계 상자 외에도 이진 객체 마스크를 반환합니다. Mask R-CNN은 픽셀 레벨 분할에 능숙합니다.
Mask R-CNN은 이전 버전인 Faster R-CNN과 유사한 아키텍처를 사용하며 픽셀 단위 분할을 위해 Fully Convolutional Network도 활용합니다.
1) 특징 추출
ResNet 101 아키텍처를 활용하여 입력 이미지에서 기능을 추출합니다. 결과적으로, 우리는 Region Proposed Network로 전송되는 기능 맵을 얻습니다
2) 범위 제안 네트워크(RPN - Region Proposed Network)
기능 맵을 얻은 후 경계 상자 후보가 결정되고 RPN은 RoI(관심 영역)를 추출합니다
3) RoI Pool
Faster R-CNN은 RoI 풀 레이어를 사용하여 얻은 제안에서 특징을 계산하여 객체 클래스와 바운딩 박스 좌표를 추론합니다.
4) ROI 정렬
RoI 풀은 RoI 좌표의 양자화로 인해 관심 영역을 가져오는 데 불일치를 일으켰습니다. 픽셀 수준 세분화에는 특이성이 필요했기 때문에 Faster R-CNN의 저자는 RoI Align을 구현하여 이를 영리하게 해결했습니다.
마스킹은 각 RoI에 적용되는 완전히 연결된 소규모 네트워크에 의해 수행되며, 이는 픽셀 대 픽셀 방식으로 세그멘테이션 마스크를 예측합니다.
5. 이미지 분할 예시
이미지 분할의 소스 코드는 아래 링크에서 다운로드 할 수 있습니다.
1) 클론 마스크 R-CNN Github 저장소
주로 구현할 모델의 아키텍처를 다운로드합니다.
https://github.com/matterport/Mask_RCNN.git
컴퓨터에 git이 설치되어 있지 않은 경우 zip으로 파일을 다운로드하고 원하는 디렉토리의 폴더를 추출하십시오.
2) 라이브러리 종속성
이제 필요한 모든 라이브러리가 없을 수도 있으므로 작동하려면 특정 라이브러리가 필요하기 때문입니다.
목록은 다음과 같습니다.
- numpy
- scipy
- pillow
- cython
- matplotlib
- scikit-image
- tensorflow
- keras
- opencv-python
- h5py
- imgaug
- ipython
3. 사전 훈련된 웨이트
모델을 훈련하는 데는 몇 시간, 때로는 하루 이상이 걸리기 때문에 지금 당장 모델을 훈련하는 것이 불가능할 수 있습니다. 따라서 사전 훈련된 모델을 활용하여 입력 이미지에 대한 예측을 생성합니다.
이 링크를 따라 가면 Mask-RCNN의 릴리스 목록을 볼 수 있습니다. 최신 릴리스를 시도 할 수 있지만 불일치가 있었기 때문에 Mask R-CNN 2.0을 사용했습니다. h5 파일을 직접 다운로드하여 첫 번째 단계에서 복제한 Mask R-CNN 저장소의 샘플 폴더에 저장할 수 있습니다.
4. 새 Jupyter Notebook 만들기
이제 Mask R-CNN 저장소의 샘플 폴더 아래에 새로운 Jupyter Notebook을 만들 것이며, 다른 IDE를 사용할 수 있지만 Jupyter Notebook을 사용하면 셀 단위로 코드를 쉽게 실행할 수 있습니다.
강력한 시스템이 없는 경우 Google colab을 사용하여 코드를 실행할 수 있지만 리포지토리와 h5 파일을 올바르게 업로드해야 합니다.
'프로그래밍 > AI' 카테고리의 다른 글
몽고DB의 개요, 기능, 동작방식 소개 (0) | 2024.10.09 |
---|---|
텐서플로의 이해 (TensorFlow) (0) | 2024.10.09 |
딥러닝과 머신러닝의 차이점 (0) | 2024.10.08 |
머신 러닝을 사용한 오디오 분석방법 (0) | 2024.10.07 |
머신러닝의 장점과 단점 (0) | 2024.10.06 |