전체 글
1. 카메라 스티커앱 만들기 첫걸음 스마트폰 시대에 모두가 가지고 있는 얼굴인깃 카메라앱! 2. 사진 준비하기 과정 얼굴이 포함된 사진을 준비하고 사진으로부터 얼굴 영역 face landmark 를 찾아낸다. (landmark를 찾기 위해서는 얼굴의 bounding box를 먼저 찾아야한다.) 찾아진 역역으로 부터 머리에 왕관 스티커를 붙여넣는다. # 이미지 저장하기 (opencv를 통해 저장할 경우 bgr순으로 저장되니 rgb형태로 바꿔줌) import os import cv2 import matplotlib.pyplot as plt import numpy as np import dlib my_image_path = os.getenv('HOME')+'/aiffel/camera_sticker/images..
8-0. Intro 이번장의 목표는 딥러닝의 특징과 과제, 그리고 가능성을 알아 가는 것이다. 8-1. 더 깊게 우리는 그 동안 신경망에 대해 많은 것을 배웠다. 이제 그 동안 배운 기술들을 활용해 MNIST 데이터셋의 손글씨 숫자 인식에 도전해보자. 신경망 구현 손글씨 숫자 인시모델을 만들기 위해 VGG 신경망을 참고해 다음과 같은 신경망을 구현하였다. 위 신경망의 구현 내용은 다음과 같다. 3x3의 작은 필터를 사용한 합성곱 계층 활성화 함수는 ReLU 완전연결 계층 뒤에 드롭아웃 계층 사용 Adam을 사용해 최적화 가중치의 초기값은 He초기값 사용 이와 같은 깊은 신경망의 특징은 층이 깊어지면서 채널 수가 더 늘어난다는 것이다. 또한 풀링 계층에서 중간 데이터의 공간 크기를 점차 줄여나간다. 이 신..
7-0. Intro 이번장의 목표는 합성곱 신경망(CNN)의 매커니즘을 자세히 설명하고 이를 파이썬으로 직접 구현하는 것이다. 자 그럼 시작해보자! 7-1. 전체구조 합성곱 신경망의 전체 구조는 합성곱 계층과 풀링 계층 그리고 앞에서 배운 완전연결 계층(Affine 계층)을 연결한 구조이다. 먼저 지금까지 사용해왔던 Affine 계층을 다시 그림으로 살펴보자. 그림에서는 Affine 계층과 ReLU 계층을 4개를 연결하였고 마지막에는 Affine 계층과 Softmax 함수를 이용해 최종결과를 출력한다. 이 그림은 합성곱 신경망을 표현한 그림이다. CNN의 특징은 합성곱 계층과 ReLU 그리고 Pooling 계층을 앞에 구현하였고 뒤에는 Affine, ReLU조합을 그대로 구현하였다는 것이다. 7-2. 합..
Fundamental 05 1. 맥북의 중고가 맞춰보기 데이터 확인 import pandas as pd macbook = pd.read_csv('~/aiffel/bike_regression/data/macbook.csv') print(macbook.shape) macbook.head() (80, 2) used_years price 0 2.65 175 1 3.80 63 2 0.95 273 3 4.50 133 4 4.45 106 data : macbook.csv (실습을 위한 간의 데이터) shape : 데이터는 used_years(사용한 연도), price(가격) 두 개의 col을 갖는 80개의 데이터 셋이다. 데이터 시각화 import matplotlib.pyplot as plt # 실행한 브라우저에서 ..
1. 객체 지향 프로그래밍 1) 객체란? 파이썬에서는 정수, 실수, 문자열, 배열, 딕셔너리등등 모든것이 객체이다. 파이썬에서 object라 불리는 것들은 모두 변수에 할당될 수 있고, 함수의 인자로 넘겨질 수 있는 것들이다. 그러므로 파이썬에 나오는 모든 것들은 object이다. 요약 • 파이썬에서는 모든 것(부울, 정수, 실수, 데이터구조(list,tuple,dict,set...), 함수, 프로그램, 모듈)이 객체다. • 객체는 상태(state)를 나타내는 속성(attribute)과 동작(behavior)을 나타내는 메서드(method)가 있다. • 객체의 속성은 변수로 구현된다. 객체의 메서드는 함수로 구현된다. 2) 객체 지향 프로그래밍이란? 객체지향 프로그래밍(OOP: Object Oriente..
6-0. Intro 이번 장의 주제 가중치 매개변수의 최적값을 탐색하는 최적화 방법 가중치 매개변수 초깃값 하이퍼파라미터 설정방법 오버피팅의 대응 책 (가중치 감소, 드롭아웃) ✔️ 이번장의 목표 : 신경망 학습의 효율과 정확도를 높이기! 6-1. 매개변수 갱신 신경망 학습의 목적은 손실 함수의 값을 최소화 하기위한 매개변수 찾기이다. 이러한 문제를 해결하는 방법을 최적화(optimization)이라고 한다. 우리는 지금가지 매개변수의 기울기를 이용해 손실함수의 값을 최소화 시키는 확률적경사하강법(SGD)방법을 살펴보았다. 이제 SGD의 단점들을 살펴보고 다른 최적화방법들을 살펴보자. 확률적 경사 하강법(SGD) 확률적 경사 하강법이 무엇인지 잊어버렸을 수 도 있으니 복습해보자. class SGD: ""..
5-1. Intro 이전장 4장에서 가중치 매개변수에 대한 손실 함수의 기울기를 수치미분을 통해 구하였다. 수치 미분은 단순하고 구현도 간단하서 유용하지만 시간이 오래 걸린다는 단점을 가지고 있다. 이번장에서는 개선방안인 오차역전파법을 배워보자. 5-1. 계산 그래프 오차역전파법을 이해하는 방법으로는 크게 수식을 통한 이해, 계산 그래프를 통한 이해가 있다. 여기서 우리는 두 번째 방법인 계산 그래프를 통해 오차역전파 법을 이해해보자. 💡 계산 그래프란? 계산 과정을 그래프로 나타낸 것이다. 여기서 그래프는 복수의 노드와 에지로 표현된다. 자 그럼 계산 그래프를 활용해 문제를 풀어보자. 문제 -> 현빈 군은 슈퍼에서 사과를 2개, 귤 3개 샀습니다. 사과는 1개의 100원, 귤은 1개 150원입니다. 소..
4-0. Intro 💡 학습이란? 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것 이번 장에서는 신경망이 학습할 수 있도록 해주는 지표인 손실 함수를 소개한다. 4-1. 데이터 학습 기계학습의 중심에는 데이터가 존재한다. 기계학습에서는 이러한 데이터들을 분석하고 특징들을 추출하여 예측을 한다. 신경망에서는 이런한 특징을 선정하는 것을 자동적으로 해준다. 위에 그림은 사람, 기계학습, 신경망의 차이를 직관적으로 보여준다. 사람은 직접 눈으로 보며 특징을 찾아내고 검출하지만 기계락습은 사람이 생각한 특징을 토대로 기계학습을 한다. 반면에 신경망에서는 데이터의 특징을 자동으로 선정하며 결과를 추출한다. 이러한 과정의 딥러닝을 종단간 기계학습이라고 한다. 훈련 데이터와 시험 데이터 보통 기계학..
1. 다양한 머신러닝 알고리즘 머신러닝의 알고리즘 종류 지도학습 (Supervises Learning) 비지도학습 (Unsupervised Learning) 강화학습 (Reinforcement Learning) 상황이나 구현하고자 하는 Application에 따라 합쳐서 사용될 수 있다. ex) 알파고의 경우 지도학습을 톨해 바둑 기보를 학습하고 강화학습으로 최적화하였다. 2. 사이킷런에서 가이드하는 머신러닝 알고리즘 3. Hello Scikit-learn 설치 $ pip install scikit-learn 버전 확인 import sklearn print(sklearn.__version__) 4. 사이킷런의 주요 모듈 데이터 표현법 💡 데이터 셋은 Numpy의 ndarry, Pandas의 DataFra..



