fcn 예제

Postato il 2 Ago 2019 in Senza categoria

이 예제에서는 캠브리지 대학의 CamVid 데이터 집합 [2]를 사용하여 교육을 실시합니다. 이 데이터 집합은 운전 중 얻은 거리 수준 뷰를 포함하는 이미지 모음입니다. 데이터 집합은 자동차, 보행자 및 도로를 포함한 32개의 의미 체계 클래스에 대한 픽셀 수준 레이블을 제공합니다. 또한 미리 학습된 FCN 버전을 다운로드합니다. 미리 학습된 이 모델을 사용하면 교육이 완료될 때까지 기다릴 필요 없이 전체 예제를 실행할 수 있습니다. doTraining 플래그는 예제에서 학습된 네트워크를 사용하는지 또는 코드 생성을 위해 미리 학습된 FCN 네트워크를 사용하는지 여부를 제어합니다. 컴퓨터 비전 도구 상자™ 이 예제에서 사용되는 라벨오버레이 기능용입니다. 데이터 보강은 네트워크의 정확도를 향상시키는 데 도움이 되므로 네트워크에 더 많은 예제를 제공하기 위해 교육 중에 사용됩니다. 여기서는 데이터 보강에 +/- 10픽셀의 임의의 왼쪽/오른쪽 반사 및 임의의 X/Y 변환이 사용됩니다. imageDataAugmenter를 사용하여 이러한 데이터 보강 매개 변수를 지정합니다. coder.checkGpuInstall 함수를 사용하고 이 예제를 실행하는 데 필요한 컴파일러및 라이브러리가 올바르게 설정되어 있는지 확인합니다. 참고: 데이터 다운로드 시간은 인터넷 연결에 따라 다릅니다.

다운로드 작업이 완료될 때까지 예제 실행이 진행되지 않습니다. 또는 웹 브라우저를 사용하여 먼저 데이터 집합을 로컬 디스크에 다운로드할 수 있습니다. 그런 다음 outputFolder 변수를 사용하여 다운로드한 파일의 위치를 가리킵니다. 32개의 클래스를 11로 줄이려면 원래 데이터 집합의 여러 클래스가 함께 그룹화됩니다. 예를 들어 “자동차”는 “자동차”, “SUV픽업트럭”, “트럭_버스”, “기차”, “기타 이동”의 조합입니다. camvidPixelLabelIDs 지원 기능을 사용하여 그룹화 된 레이블 아이디를 반환합니다. 이 폴더에는 MXNet의 완전 컨볼루션 네트워크(FCN)에 대한 예제 구현이 포함되어 있습니다. 이 예는 UC 버클리의 롱 외에 의한 FCN 논문을 기반으로 합니다. 이상적으로는 모든 클래스에 동일한 수의 관측이 있습니다.

그러나 CamVid의 클래스는 불균형되어 있으며, 이는 거리 장면의 자동차 데이터 세트에서 흔히 볼 수 있는 문제입니다. 이러한 장면은 하늘, 건물 및 도로가 이미지에서 더 많은 영역을 커버하기 때문에 보행자 및 자전거 타는 픽셀보다 더 많은 하늘, 건물 및 도로 픽셀을 갖습니다. 제대로 처리하지 않으면 학습이 지배적 인 클래스에 유리하게 편향되어 있기 때문에 이러한 불균형은 학습 과정에 해로울 수 있습니다. 이 예제의 나중에 이 문제를 처리하기 위해 클래스 가중치를 사용합니다. 예를 들어 Boxsup은 경계 상자 주석을 감독으로 사용하여 네트워크를 학습하고 의미 체계 분할에 대한 예상 마스크를 반복적으로 개선했습니다. 간단한 그것은 입력 라벨 소음의 문제로 약한 감독 제한을 처리하고 소음 제거 전략으로 재귀 교육을 탐구. 픽셀 수준 레이블링은 다중 인스턴스 학습 프레임워크 내의 세분화 작업을 해석하고 모델을 제한하여 이미지 수준 분류를 위해 중요한 픽셀에 더 많은 가중치를 할당하도록 추가 레이어를 추가했습니다. 이 예제에서는 GPU 코더 ™ 사용하여 NVIDIA® GPU에서 완전히 컨볼루션 된 의미 분할 네트워크를 교육하고 배포하는 방법을 보여 주며, 이 예제에서는 출력의 공간 정밀도가 주로 다른 FCN 아키텍처의 변형이 있습니다. 예를 들어, 아래 그림은 FCN-32, FCN-16 및 FCN-8 변형을 보여줍니다.

그림에서 컨볼루션 레이어는 풀링 레이어 사이의 수직 선으로 표시되며, 이 레이어는 피처 맵의 상대적 크기를 명시적으로 표시합니다. 이 예제는 VGG-16 네트워크에서 초기화된 가중치를 가진 완전 컨볼루션 시맨틱 세분화 네트워크를 만듭니다. vgg16 함수는 VGG-16 네트워크 지원 패키지에 대한 딥 러닝 도구 상자 모델의 존재를 확인하고 미리 학습된 VGG-16 모델을 반환합니다. 교육 절차를 설명하기 위해 이 예제에서는 의미 체계 이미지 세분화를 위해 설계된 한 가지 유형의 컨볼루션 신경망(CNN)인 FCN-8s[1]를 학습합니다. 의미 체계 세분화를 위한 다른 유형 네트워크는 완전히 컨볼루션 네트워크 SegNet 및 U-Net을 포함한다. 여기에 표시된 교육 절차는 이러한 네트워크에도 적용할 수 있습니다.