오늘 뭘 했니?
-
넘파이 기초와 넘파이 기본예제로 딥러닝 구현
실습파일: tutorial-deep-learning-on-mnist.ipynb
Deep learning on MNIST — NumPy Tutorials
-
케라스 예제로 의류이미지 분류 실습
실습파일: 코랩 classification.ipynb의 사본
기본 분류: 의류 이미지 분류 | TensorFlow Core
-
CNN 합성곱신경망 기초
실습파일: 코랩 cnn.ipynb의 사본
합성곱 신경망 | TensorFlow Core
-
CNN 꽃 이미지분류
실습파일: 코랩 classification.ipynb의 사본
이미지 분류 | TensorFlow Core
-
CNN 말라리아 셀 이미지분류
실습파일: 코랩 1001-malaria-image-PIL-OpenCV-input.ipynb의 사본
뭘 배웠니?(new)
NUMPY
참고하면 좋을듯
https://codetorial.net/numpy/functions/index.html
- ndarray.ndim
배열의 축(차원) 수
- ndarray.shape
배열의 차원. 예) shape 결과가 (5, 6, 3) 이라면 튜플의 길이(len)가 3차원
- ndarray.size
배열의 총 요소 수, = shape의 요소의 곱
- ndarray.dtype
- ndarray.itemsize
- np.zeros()
0으로 채워진 배열 생성. 메모리를 할당받아 0으로 초기화 후 반환
- np.ones()
1로 채워진 배열 생성
- np.empty()
무작위값으로 채워진 빈 배열 생성, 메모리를 할당만 받고 초기화 없이 반환
- np.arange()
특정 범위값에 해당하는 배열 생성
- np.linspace()
지정 범위의 균일한 간격의 숫자 반환
- np.argsort()
지정된 축으로 정렬할 인덱스 순서 반환
- np.lexsort()
키값으로 정렬
- np.searchsorted()
정렬된 배열에서 요소를 찾음
- np.partition()
부분정렬
- 인덱싱
- 슬라이싱
- 브로드캐스팅
Reshaping
SEARCH
- np.where →판다스의 loc 불리언인덱싱과 비슷
- np.maximum
- np.minimum
- np.sum
전치 행렬
얕복 vs 깊복

오차계산
dot
- a@b
np.dot(a,b)
np.matmul(a,b)

A Visual Intro to NumPy and Data Representation – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)
과대적합을 방지하기 위한 전략
과대적합과 과소적합 | TensorFlow Core
가중치를 규제하기
- L1 규제는 가중치의 절댓값에 비례하는 비용이 추가됩니다(즉, 가중치의 "L1 노름(norm)"을 추가합니다).
- L2 규제는 가중치의 제곱에 비례하는 비용이 추가됩니다(즉, 가중치의 "L2 노름"의 제곱을 추가합니다). 신경망에서는 L2 규제를 가중치 감쇠(weight decay)라고도 부릅니다. 이름이 다르지만 혼돈하지 마세요. 가중치 감쇠는 수학적으로 L2 규제와 동일합니다.
L1 규제는 일부 가중치 파라미터를 0으로 만듭니다. L2 규제는 가중치 파라미터를 제한하지만 완전히 0으로 만들지는 않습니다. 이것이 L2 규제를 더 많이 사용하는 이유 중 하나입니다.
드롭아웃 추가하기
드롭아웃을 층에 적용하면 훈련하는 동안 층의 출력 특성을 랜덤하게 끕니다
더 많은 훈련 데이터를 모읍니다.
네트워크의 용량을 줄입니다.
CNN 합성곱신경망
AKA. 피쳐자동추출기
필터 Filter
커널 Kerner
- 컨볼루션 커널의 (행, 열) => 필터 사이즈
- 대부분 홀수를 씀
스트라이드 Stride
패딩 Paadding
- 경계 처리 방법
- ‘valid’ : 유효한 영역만 출력이 됩니다. 따라서 출력 이미지 사이즈는 입력 사이즈보다 작습니다.
- ‘same’ : 출력 이미지 사이즈가 입력 이미지 사이즈와 동일합니다.
채널 Channel
특징맵 Feature Map
액티베이션 맵 Activation Map
풀링 Pooling
tf.keras.layers.MaxPool2D(
pool_size=(2, 2), strides=None, padding='valid', data_format=None,
**kwargs)
- 종 출력 데이터(Activation Map)의 크기를 줄이거나 특정 데이터를 강조 → 데이터의 사이즈를 줄여주며 노이즈를 상쇄시키고, 미세한 부분에서 일관적인 특징을 제공
- 종류 보통 Max Pooling 사용
- Max Pooling(최대값) 가장 큰 값들만 가져와 사이즈를 감소
- Average Pooling(평균값)
- Min Pooling(최소값)
드롭아웃 Dropout
데이터증강 Data augmentation
- 학습 데이터가 적어서 과대적합이 우려될 때, 기준 데이터의 이미지를 랜덤하게 생성하여 데이터의 수를 증강
- train에만 적용
- 숫자의 경우 형태변경으로 의미가 바뀔 수도 있어 주의해야 함 ex 6,9
PIL
파이썬 인터프리터에 다양한 이미지 파일 형식을 지원하고 강력한 이미지 처리와 그래픽 기능을 제공하는 자유-오픈 소스 소프트웨어 라이브러리
- 픽셀 단위의 조작
- 마스킹 및 투명도 제어
- 흐림, 윤곽 보정 다듬어 윤곽 검출 등의 이미지 필터
- 선명하게, 밝기 보정, 명암 보정, 색 보정 등의 화상 조정
- 이미지에 텍스트 추가
from PIL import Image, ImageFilter
original = Image.open(cell_img)
original
original.size
original.resize((100,100))
original.save
original.filter(ImageFilter.BLUR)
OpenCV
실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리
0310 - 이미지 데이터 전처리 (tistory.com)
- 이미지의 기하학적 변환 - 회전, 이동 등
- 형태 변형, 이미지 그라디언트, Edge Detection, 이미지 혼합, 윤곽선 찾기,
- 이미지 변환 - 푸리에 변환, 코사인 변환, 이미지에서 개체 검색, 원 등의 감지, 이미지 분할, 전경 추출 등
import cv2
img = cv2.imread(img_path, cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
img_150 = cv2.resize(img, (150,150))
img_blur = cv2.blur(img, (50,50))
plt.imshow(img_blur)
기타
train_ds.class_names
부족한 것
np.arange
…
3F
사실(Fact): CNN 이론에 대해 배웠고 이미지예제로 실습을 진행했다.
느낌(Feeling): 이미지를 다루니까 신기하고 흥미로운데 거기까지다..
교훈(Finding): 하루종일 병든닭.. 건강관리를 잘하자