jjimini98 / CapstoneProject2

Capstone_Project2
0 stars 2 forks source link

annotations shape : (5, 224, 224, 3, 1) #32

Closed skdlfjl closed 3 years ago

skdlfjl commented 3 years ago

BatchDatsetReader.py의 _read_images(self) 에서

print(self.images.shape)
print(self.annotations.shape)

이부분 실행했을 때 결과가 (5, 224, 224, 3) (5, 224, 224, 3, 1) 이렇게 나옵니다

사실 왜 이렇게 뜨는지는 모르겠고... annotations의 shape를 (5, 224, 224, 3, 1) 에서 (5, 224, 224, 3)로 수정하고 싶으면 self.annotations = np.reshape(self.annotations, (5, 224, 224, 3)) 이 코드를 추가해주면 됩니다. 위에서도 말했지만 왜 저렇게 뜨는지 모르겠어서(ㅋㅋ) 혹시 필요할수도 있을 것 같아 추가한 코드라 필요한 경우 써주면 됩니다.

skdlfjl commented 3 years ago

self.images : (5, 224, 224, 3) self.annotations : (5, 224, 224, 3, 1) 일 경우 (reshape으로 차원을 축소하지 않은 경우)

print("self.images :", self.images)
print("self.annotations :", self.annotations)

로 확인해보면 self.images : [[[[17 17 17] [12 12 12] [16 16 16] ... [17 21 24] [15 19 20] [17 18 20]]

[[13 13 13] [16 16 16] [12 12 12] ... [20 24 27] [16 20 21] [17 18 20]]

[[12 12 12] [15 15 15] [16 16 16] ... (생략)

self.annotations : [[[[[128] [ 0] [ 0]]

[[128] [ 0] [ 0]]

[[128] [ 0] [ 0]]

...

[[128] [ 0] [ 0]]

[[128] [ 0] [ 0]]

[[128] [ 0] [ 0]]]

[[[128] [ 0] [ 0]]

[[128] [ 0] [ 0]]

[[128] [ 0] [ 0]]

... (생략)

이렇게 뜹니다

self.images : (5, 224, 224, 3) self.annotations : (5, 224, 224, 3) 일 경우 (reshape으로 차원을 축소한 경우)

self.annotations : [[[[128 0 0] [128 0 0] [128 0 0] ... [128 0 0] [128 0 0] [128 0 0]]

[[128 0 0] [128 0 0] [128 0 0] ... [128 0 0] [128 0 0] [128 0 0]]

[[128 0 0] [128 0 0] [128 0 0] ... [128 0 0] [128 0 0] [128 0 0]]

...

이렇게 self.images 와 비슷한 형태로 바뀝니다.

추가로 FCN.py의

  if FLAGS.mode == "train":
    for itr in range(MAX_ITERATION):
      # 학습 데이터를 불러오고 feed_dict에 데이터를 지정합니다
      train_images, train_annotations = train_dataset_reader.next_batch(FLAGS.batch_size)

이 부분에서

      print("train_images :", train_images)
      print("train_annotations :", train_annotations)

위 코드를 추가하면 같은 결과를 확인할 수 있습니다.

skdlfjl commented 3 years ago

해당 코드 적용시 FCN.py에서 발생하는 ValueError: Cannot feed value of shape (2, 224, 224, 3, 1) for Tensor 'annotation:0', which has shape '(?, 224, 224, 1)' 의 내용이

ValueError: Cannot feed value of shape (2, 224, 224, 3) for Tensor 'annotation:0', which has shape '(?, 224, 224, 1)' 로 변경됩니다. 역시 참고해서 필요하면 사용..ㅋㅋ

skdlfjl commented 3 years ago

BatchDatsetReader.py의 _read_images(self) 에서

print(self.images.shape)
print(self.annotations.shape)

이부분 실행했을 때 결과가 (5, 224, 224, 3) (5, 224, 224, 3, 1) 이렇게 나옵니다

사실 왜 이렇게 뜨는지는 모르겠고... annotations의 shape를 (5, 224, 224, 3, 1) 에서 (5, 224, 224, 3)로 수정하고 싶으면 self.annotations = np.reshape(self.annotations, (5, 224, 224, 3)) 이 코드를 추가해주면 됩니다. 위에서도 말했지만 왜 저렇게 뜨는지 모르겠어서(ㅋㅋ) 혹시 필요할수도 있을 것 같아 추가한 코드라 필요한 경우 써주면 됩니다.

self.annotations = np.reshape(self.annotations, (5, 224, 224, 3)) 코드 대신 self.annotations = np.reshape(self.annotations, (len(self.images), 224, 224, 3)) 을 써주면 validation과 training에 있는 이미지의 갯수가 달라도 정상적으로 reshape 됩니다.

image

+) jiHee_FCNtest브랜치의 test.py에 교수님이 준 dataset을 train 601개, val 100개로 랜덤추출 하여 (복사)저장한 코드를 push해뒀습니다.