1. 이미지 정보를 보여주는 함수 정의
def print_image_summary(image, labels):
print('--------------')
print('Image Details:')
print('--------------')
print(f'Image dimensions: {image.shape}')
print('Channels:')
if len(labels) == 1:
image = image[ ... , np.newaxis ] ------ ⓐ
for i, lab in enumerate(labels):
min_val = np.min(image[:,:,i]) ------ ⓑ
max_val = np.max(image[:,:,i])
print(f'{lab} : min={min_val:.4f}, max={max_val:.4f}') #python f-string formating
ⓐ image[..., np.newaxis]
① ELLIPSIS 객체
d array([[[ 0, 1, 2],
[ 2, 3, 4],
[ 4, 5, 6]],
[[ 8, 9, 10],
[10, 11, 12],
[12, 13, 14]],
[[16, 17, 18],
[18, 19, 20],
[20, 21, 22]]])
>>d[1 , ...] //첫번째 차원의 두번째 인덱스를 선택
array([[ 8, 9, 10],
[10, 11, 12],
[12, 13, 14]])
>> d[... , 1] //세번째 차원의 두번째 인덱스를 선택
array([[ 1, 3, 5],
[ 9, 11, 13],
[17, 19, 21]])
② np.newaxis; 차원을 확장하는 numpy 함수
arr1 = np.array([1, 2, 3, 4])
/* 행 부분에 newaxis 추가 : 행의 차원을 확장 */
print(arr1[np.newaxis])
>>[[1 2 3 4]]
/* 열 부분에 newaxis 추가 : 열의 차원을 확장 */
print(arr1[:, np.newaxis])
>> [[1]
[2]
[3]
[4]]
ⓑ 다차원 배열 슬라이싱
- 배열의 부분 집합을 하위배열로 조회 및 변경하는 방식
ndarry[start : stop : step ]
· start : 시작 인덱스(기본값 0)
· stop : 끝 인덱스(기본값 마지막 index)
· step : 증감 간격(기본값 1)
2. 이미지 호출
image_gs = imread('../chap5/data/bird.jpg', as_gray=True)
fig, ax = plt.subplots(figsize=(9, 16)) ----- ⓐ
imshow(image_gs, ax=ax) ----- ⓑ
ⓐ fig : 그림
ax : 그림에 그려질 그래프
ⓑ matplotlib.pyplot.imshow(X-image data, axis)
3. 이미지 정보 표현
print_image_summary(image_gs, ['G'])
Image dimensions: (703, 454) : 행, 열의 픽셀 개수
G : min=0.0000, max=1.0000 : 최솟값과 최댓값이 각각 0과 1
⇒ 255로 나누는 이유 : 이미지 값의 범위를 0~255에서 0~1 값의 범위를 갖도록 하기 위함
Q. 이미지 값의 범위는 0~255로 고정? 왜 이 값인지?
A. 픽셀 값이 0~255사이이므로
ELLIPSIS 객체 : https://tech.madup.com/python-ellipsis/
'Etc > Deep Learning' 카테고리의 다른 글
6장 합성곱 신경망Ⅱ(1) - 이미지 분류를 위한 신경망(LeNet-5) + 실습 : 🔜파이썬 개념 추가 정리하기 (0) | 2021.08.09 |
---|---|
5장 합성곱 신경망Ⅰ(4) - 그래프 합성곱 네트워크 (0) | 2021.08.09 |
5장 합성곱 신경망Ⅰ(3) 실습 - 특성맵 시각화 (0) | 2021.08.08 |
5장 합성곱 신경망Ⅰ(3) - 미세조정기법(전이학습), 설명 가능한 CNN (0) | 2021.08.06 |
5장 합성곱 신경망Ⅰ(2) 실습- 전이학습- 특성 추출 기법(+ 텐서플로 허브) (0) | 2021.08.04 |