inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

Mask rcnn mask 관련 질문입니다.

580

Daniel

작성한 질문수 4

0

안녕하세요. 

일전에 mask rcnn 모델 및 panoptic segmentation 모델 (Detectron2)의 mask boolean을 pixel coordinate으로 변경하는 것에 관한 질문을 했던 사람입니다. 

말씀하신대로 mask rcnn의 mask는 boolean 값만 뱉어내고, 그 boolean 값은 특정 threshold 값을 넘는지 안 넘는지에 대해 정해진다고 이해했습니다. (Detectron2의 panoptic segmentation의 경우 segment_id를 pixel 별로 출력하는 것으로 파악됩니다. )

그러나 mask rcnn의 경우 특정 threshold 값을 안다고 하더라도, 그 mask polygon의 pixel coordinate 값들을 어떤 식으로 구해야 하는지 아직 이해가 되지 않습니다. boolean을 integer로 바꾼다고 하더라도 0 혹은 1의 값일 테고, 이 값으로는 어떤 mask가 어떤 class에 속해있는 polygon인지 알 방법이 없다고 생각이 듭니다. 

혹 이러한 mask boolean 값을 original pixel coordinate polygon 값으로 변경하는 function이나 API가 존재할까요? 

어떤식으로 접근을 해야 이거를 해결할 수 있을지 도움 주시면 정말 감사하겠습니다. 

Detectron2 panoptic segmentation 결과값에 대해서도 혹 아시는 것이 있으시다면 조언 부탁드립니다. 

감사합니다. 

딥러닝 컴퓨터-비전 tensorflow keras python 머신러닝 배워볼래요?

답변 4

0

Daniel

감사합니다!!

0

권 철민

아래로 다시 해보시지요.

https://colab.research.google.com/drive/1NkEUfCCsWoRviq4J6DezoxxsfSU-zUVr?usp=sharing

안되면 아래로 download 해보십시요,

https://raw.githubusercontent.com/chulminkw/DLCV/master/colab_tf115_modify_files/Matterport%ED%8C%A8%ED%82%A4%EC%A7%80%EB%A5%BC_%EC%9D%B4%EC%9A%A9%ED%95%9C_Segmentation_colab_mask_pixel_position.ipynb

0

Daniel

보내주신 링크에 엑세스 권한을 주시면 감사하겠습니다. 

0

권 철민

안녕하십니까,

mask boolean 행렬에서 행렬의 위치 인덱스를 뽑아내는 식을 사용하면 될 것 같습니다.

해당 소스코드를 제 코랩에서 작성하였습니다.

https://colab.research.google.com/drive/1NkEUfCCsWoRviq4J6DezoxxsfSU-zUVr?authuser=2#scrollTo=hBDWkp_kwI-P

안 열리시면 아래 공유 소스코드 눌러 주십시요.

https://colab.research.google.com/drive/1NkEUfCCsWoRviq4J6DezoxxsfSU-zUVr?usp=sharing

해당 소스코드에서 아래 내용을 참조 하시면 될 것 같습니다.

# mask array 추출
mask_array  = results[0]['masks']
# class id 추출 
class_array = results[0]['class_ids']
print(class_array)
print(mask_array.shape, class_array.shape)
# mask_array값 중에서 True 즉 값이 0 보다 큰 값에 대한 array의 위치 인덱스를 추출하고 이를 다시 transpose로 변환. 
mask_array_index = np.transpose((mask_array > 0).nonzero())
print(mask_array_index)
print(mask_array_index.shape)
# 추출된 전체 mask 위치 인덱스와 class_id를 기반으로 순차적으로 class_id별 mask 위치 인덱스를 추출하여 total_class_id_positio에 Set형태로 저장. 
total_class_id_position_list = []
for class_array_index, class_id in enumerate(class_array):
  #print('class_array_index:', class_array_index, ' class_id:', class_id)
  #print('mask position index:', mask_array_index[mask_array_index[:,2] == class_array_index])
  class_id_position_set = (class_id, mask_array_index[:, :2])
  total_class_id_position_list.append(class_id_position_set)

print(total_class_id_position_list)
찾고자 하는 코드였으면 합니다.

강의 환경설정 질문

0

38

2

Custom Dataset에서의 polygon 정보 관련

0

81

3

cvat.ai 보안 수준이 궁금합니다

0

77

2

캐클 nucleus 챌린지 runpod 실습 코드 에러 질문드립니다.

0

93

3

추론 결과의 Precision(또는 mAP) 평가 방법

0

81

2

mmdetection mask rcnn inferenct 실습 시 runpod 템플릿 관해서 질문드립니다.

0

57

2

runpod에서 google drive 연결 시 오류 발생

0

106

2

로드맵 선택

0

64

1

mmcv

0

55

2

Anchor box의 Positive 처리 위치

0

59

2

해당 강의 runpod 적용 후 에러 제보드립니다

0

83

2

run pod credit 관련 제보

0

93

2

mmdetection 2.x과 3.x 호환 관련 표기

0

75

2

mm_faster_rcnn_train_kitti.ipynb 실행 오류

0

93

3

질문 드립니다.

0

74

3

mm_faster_rcnn_train_coco_bccd 실행 오류 질문드립니다.

0

75

1

강사님께 수정을 제안드리고 싶은 것이 있습니다.

0

91

1

google automl efficientdet 다운로드 및 설치 오류

0

71

1

이상 탐지에 사용할 비전 기술 조언 부탁드립니다.

0

100

2

OpenCV 관련 질문드립니다.

0

68

2

mmcv 설치관련해서 문의드려요

0

326

3

강의 구성 관련해서 질문이 있습니다

1

133

2

모델 변환 성능 질문드립니다.

0

122

1

NMS 로직 문의 드려요

0

111

2