220711(월) TIL

재은·2022년 7월 11일
0

멋사 AI 6기

목록 보기
20/36

오늘 뭘 했니?

  1. 넘파이 기초와 넘파이 기본예제로 딥러닝 구현
    실습파일: tutorial-deep-learning-on-mnist.ipynb
    Deep learning on MNIST — NumPy Tutorials

  2. 케라스 예제로 의류이미지 분류 실습
    실습파일: 코랩 classification.ipynb의 사본
    기본 분류: 의류 이미지 분류  |  TensorFlow Core

  3. CNN 합성곱신경망 기초
    실습파일: 코랩 cnn.ipynb의 사본
    합성곱 신경망  |  TensorFlow Core

  4. CNN 꽃 이미지분류
    실습파일: 코랩 classification.ipynb의 사본
    이미지 분류  |  TensorFlow Core

  5. 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

  • np.reshape
  • np.where →판다스의 loc 불리언인덱싱과 비슷
  • np.maximum
  • np.minimum
  • np.sum

전치 행렬

  • arr.transpose()
  • arr.T

얕복 vs 깊복

오차계산

  • np.square
  • 등등

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

# filter
original.filter(ImageFilter.BLUR)

OpenCV

실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리

0310 - 이미지 데이터 전처리 (tistory.com)

  • 이미지의 기하학적 변환 - 회전, 이동 등
  • 형태 변형, 이미지 그라디언트, Edge Detection, 이미지 혼합, 윤곽선 찾기,
  • 이미지 변환 - 푸리에 변환, 코사인 변환, 이미지에서 개체 검색, 원 등의 감지, 이미지 분할, 전경 추출 등
# OpenCV는 RGB 형태를 사용하지 않고 BGR을 사용하기 때문에 COLOR_BGR2RGB 을 통해 RGB 형태로 변환합니다.

import cv2

img = cv2.imread(img_path, cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)

# opencv는 따로 창띄워서 보여주므로 plt.imshow로 보는게 낫다
# 리사이징
img_150 = cv2.resize(img, (150,150))

#각 픽셀 주변의 50X50커널 평균값으로 이미지를 흐리게 합니다.
img_blur = cv2.blur(img, (50,50))
plt.imshow(img_blur)

기타

# class_names
train_ds.class_names

부족한 것

np.arange

3F

사실(Fact): CNN 이론에 대해 배웠고 이미지예제로 실습을 진행했다.
느낌(Feeling): 이미지를 다루니까 신기하고 흥미로운데 거기까지다..
교훈(Finding): 하루종일 병든닭.. 건강관리를 잘하자

profile
데린이여요

0개의 댓글