[ML/DL] 이미지 배열에 대한 이해

나개발자.__.·2024년 6월 6일

[ML/DL] CNN

목록 보기
4/12

여기는 제 공부하는 노트이므로 참고로만 봐주시고 틀린 개념이 있다면 알려주시기 바랍니다.

군대에 온지 67일이 지났다. 군대에서 꾸준하게 공부를 하고있다. 최대한 시간이 아깝지 않도록 최선을 다해 살고있는 것 같다. 주변 선임분들도 다들 좋으시고 부대 위치도 좋다.

사회에 있을때보다 당연히 시간은 부족하지만.. 항상 긍정!
참고로 내 친구도 나랑 같이 있다 ㅋㅋ.. 정말 끈질긴 우정인 것 같다.

요즘에는 CNN을 공부하고 있고 꾸준하고 알고리즘을 풀고있다. 딥러닝.. 어렵다! 내가 전역했을 때 지금보다 훨씬 발전한 내가 되었으면 좋겠다.

배열

열이란..? 일종의 자료구조인데 파이썬에서는 리스트라는 자료구조가 존재한다. 같다고 보면 될 것 같다.

배열은 파이썬에서 '[]'로 나타낼 수 있다. [0, 1, 2, 1, 2, 3, ...] 이런식으로?

이미지를 표현하는 방식

이미지는 컴퓨터에서 숫자로 표현할 수 있다.
그런 숫자를 배열로 표현할 수 있다. 이런 숫자들 하나하나가 이미지의 데이터 즉, '정보'다.

Grayscale이미지는 2차원, Color이미지는 3차원이다.(Color이미지는 RGB라는 채널이 존재하기 때문)

하지만 실제 모델에 들어갈 때는 한개의 이미지가 아니므로 각각 3, 4차원이 된다.
참고로 하나의 이미지가 들어가더라도 이미지 차원을 확장해줘야 모델이 돌아간다.

pred_proba = model.predict(np.expand_dims(test_images[0], axis=0))
print('softmax output:', pred_proba)
pred = np.argmax(np.squeeze(pred_proba))
print('predicted class value:', pred)

np.expand_dims처럼 차원을 확장해줘야 한다.(위 코드에서 이미지는 Grayscale이미지다.)

여기서 중요한 점은 케라스 모델은 2차원을 받지 않는다는 점이다.

Sequential Model을 만들때 Input을 2차원으로 만들지만 입력은 3차원이 되기 때문이다.

위 그림은 Color 이미지가 어떻게 되어있는지에 대한 그림이다. 회색으로 되어있는 것은 Grayscale 이미지라고 보면 될 것 같다.

profile
나 개발자가 되고싶어..요

0개의 댓글