아직이 책의 Caffe 마스터 스레드에은 없지만 Caffe에서 의미 론적 세분화에 대한 자습서가 많이 있습니다. 처음에는 Fully Convolutional Networks master 및 tutorial on using SegNet (GitHub는 별도로 here) 또는 DeepLab을 사용하여 자습서를 조사해야합니다. 이것들은 의미 론적 세분화를 위해 Caffe를 사용하는 최첨단 방법입니다.
더 직접적으로 귀하의 질문에 대답하기 위해,
1) 데이터 준비 : 최근 깊은 학습 방법에 관심을 보여이있는 사용자로 , 당신은 아마 데이터를 수행 할 하나 개의 방법이 없다는 것을 발견 할 것이다 예비. 그것들은 수학적으로 가능한 것 (결국 완전히 연결된 레이어를 가진 네트워크는 같은 비율의 이미지와 보통 같은 크기를 필요로합니다)과 성능 (평균 빼기)을 향상시키는 것에 모두 의존합니다. 즉, 평범한 몇 가지 기술이 있습니다 (전체 컨벌루션 네트워크와 같이 다양한 저울의 이미지를 사용할 수 있음을 간략히하기 위해이 지점에서 가정합니다. 자르기가 어떻게 작동하는지 알고 싶다면 좋은 점이 있습니다. Caffe의 ImageNet 튜토리얼에서 데이터 준비의 유형에 대한 설명). Transformer
클래스를 사용하여, 대부분의 사람들이 다음을 수행하십시오 분할의 맥락에서
transformer.set_transpose('data', (2,0,1)) # move image channels to outermost dimension
transformer.set_mean('data', mu) # subtract the dataset-mean value in each channel
transformer.set_raw_scale('data', 255) # rescale from [0, 1] to [0, 255]
transformer.set_channel_swap('data', (2,1,0)) # swap channels from RGB to BGR
, 즉 당신이해야 할 모든 것입니다. 시맨틱 레이블은 이미지 자체 (일반적으로)의 형태입니다. 예를 들어, 파스칼 VOC CAFFE 예, 당신은 ** 네트워크 계층에 대한 정의는
가 기억
n.data, n.label = L.Python(module = 'pascal_multilabel_datalayers', layer = datalayer, ntop = 2, param_str=str(data_layer_params))
** 2) 네트워크 계층 정의로 라벨에 읽어 신경에 대한 화려한 비트 중 하나 네트워크는 입력 및 출력을 제외하고 다양한 데이터 유형을 처리 할 수 있습니다. 따라서 중간 레이어는 모두 같고 실제로는 입력이 동일합니다.결국 당신이 필요로하는 것은 이미지에 대한 교차 엔트로피 손실을 평가하는 것입니다. DeepLab 들어, 그들은 이것을 수행 "Interp" layer 썼습니다. 한편 SegNet은 "Upsample" layer type이라고 썼습니다. softmax 전에 네트워크 출력을 레이블과 동일한 크기로 만들려면 simply use a Softmax
나는이 모든 것에 단점을 가지고 있다고 생각합니다. 명확하게 Caffe에서 이것을 올바르게 수행하는 명확한 방법이지만, 좋은 점은 성공적으로 수행 된 많은 예제가 있다는 것입니다. 희망이 도움이