'programming/Deep Learning'에 해당되는 글 12건

  1. 2019.06.17 딥러닝 스터디03 - style transfer
  2. 2019.06.09 딥러닝 스터디02
  3. 2019.06.07 딥러닝 스터디 01
  4. 2019.05.28 20190527 딥러닝 개념 설명

스타일 트랜스퍼(style transfer) 

 CNN(convolutional neural network) 


스타일 트랜스퍼(style transfer)?

스타일 이미지를 학습시킨 후에, 콘텐츠 이미지에 적용시키는 것. 

ex) 반고흐 이미지를 스타일 이미지로 정함. 
반고흐 이미지를 내 얼굴 사진의 스타일을 바꾸는 필터로 사용하는 것을
스타일 트랜스퍼라고 이해할 수 있다. 

CNN(convolutional neural network : 합성곱 신경망)?

머신러닝을 사용할 때 어떤 식으로 학습시킬지 미리 graph를 설계한다. 

CNN은 model의 설계 방식 중 하나라고 생각하면 된다.

CNN의 특징은 학습시킬 대상의 특징을 가져온다. 


Neural Network란?


튜토리얼에서 사용하는 Neural Network 모델은 vgg16이다. 

vgg16은 16개의 레이어로 구성된 CNN(합성곱 신경망)이다.

스타일 이미지와 콘텐츠 이미지의 loss(손실) 값을 줄여서
두 이미지의 차이를 줄여 콘텐츠 이미지에 스타일을 적용시키기 위해서 사용된다. 


과정

<전처리>
  • 라이브러리 import
  • 이미지 전처리 (생략) 
<머신러닝>
  • 손실함수 만들기(MSE)
    • 콘텐츠 손실함수
    • 스타일 손실함수 (gram matrix)
    • 노이즈 제거 손실함수 
  • 스타일 트랜스퍼 알고리즘
    • 손실함수에 gradient descent(기울기) 적용
    • 손실함수 정규화 

<실행>
  • 콘텐츠, 스타일 이미지 가져오기
  • 콘텐츠 레이어 아이디 지정 
  • 스타일 레이어 아이디 지정(하위 레이어 / 상위 레이어)
  • 스타일 트랜스퍼 실행 (손실함수 최적화)

그람행렬 - 자기 자신에 전치행렬(90 돌린) 곱한

사용이유는 스타일에만 집중할 있도록 하기 위해서이다. 컨텐츠에는 적용되지 않는다.


손실함수는 컨텐츠 이미지와 mixed이미지 손실을 MSE를 사용해서 구한다.


Session은 




Reference

https://www.youtube.com/watch?v=YoBEGQD3LCc

Posted by 도이(doi)
,

https://docs.google.com/document/d/1e65KbFCfMDlGAm4guatKLo9sVs-msiHwyXp5dfo58zk/edit?usp=sharing


구조를 엔지니어링하는 것이 

특성을 엔지니어링하는 것이다. 


어떤 특성이 유용한지 아닌지 사람이 직접 판단하는 어려움은 의미 x

어떤 특성을 주든 딥러닝은 알아서 관점에서 특성을 학습함 


딥러닝은 알아서 배우기 때문에 결과적으로 힘든 부분은

수작업으로 특성이나 모델을 작업하는 있는 것이 아니라 

모델 구조의 선택에 있다. 어떤 하이퍼 파라미터를 쓸지 

특정 데이터셋에 어떤 신경망이 적합한지를 판단하는게 중요함. 


어떤 머신러닝 문제를 다루든 모델을 학습시키기 전에

항상 데이터를 트레이닝과 테스팅으로 나누는 것부터 해야 한다. 


추천 시스템에는 가지 유형이 있음 = 콘텐츠 기반, 유사성 기반

콘텐츠 기반 - 과거 기록을 통한 예측

유사성 기반(collaborative filtering) - 다른 사용자의 선호도를 바탕으로 예측 

> 유사성 기반은 크게 가지로 나뉨 - 아이템&아이템, 사용자&아이템 유사성 


정밀도와 재현율은 추천 시스템을 평가하기 좋은 방법

정밀도 - 관련 있는 결과값들이 차지하는 비율

재현율 - 관련 있다고 결과들 중에 실제 선택한 비율 


행렬 분해 기반 추천 시스템 (평점 예측  )

SVD 결과는 원래 행렬을 인수분해 행렬이다. 

특이값 분해 적용. 

특이값 분해를 하면 개의 결과가 나옴 -  U(사용자 벡터), S(아이템 벡터), Vt(2차원 상의 점들)

https://darkpgmr.tistory.com/106



Posted by 도이(doi)
,



csv파일

','로 구분지은 data txt 파일 포맷


DataFrame

2차원 배열 자료 구조 

*'series'는 1차원 배열 자료 구조 
  2차원 배열 자료 구조가 기본적으로 더 많이 사용 됨. 


자료구조

정리방식


*다른 형태의 파일 읽기(read_fwf, read_csv)

read_fwf 

고정폭 파일에서 데이터 프레임 읽어오기
공백 구분자로 만들어진 파일 읽음


read_csv 

','로 구분되는 파일 읽기
csv파일 읽음


*데이터 핸들링? - 데이터를 다룬다. 

*선형회귀 - 이해안됨


회귀분석 

무언가를 예측하는 분석, 예측값만 존재, 항상 오차 존재 


결정계수 

회귀식이 얼마나 정확한지를 나타내는 숫자,  r²으로 표현(1에 근사할 수록 정확도 높음)


가설검정

회귀식이 믿을 만한지 의사결정 



Posted by 도이(doi)
,

Feature Detector( = Kernal, Filter) : 필터(인공지능이 학습한 것) W값(Wx+b = z)

Feature Map : 결과 이미지

Convolution : Filter를 Input Image에 적용하는 것(곱하기)


Image(= Input Image) / Convolved Feature(= Feature Map)



CNN?
Convolution 연산의 특징은 속도가 빠르다는 것이다. 그 이유는 Feature 즉, 특징을 뽑기 때문이다. 정확히 똑같은 이미지를 뽑는 것이 아닌 Filter에 의한 Feature 이미지를 뽑는다. 


Layer : 얕다(가장 큰 특징을 잡음, 단순) / 깊다(복잡 detail한 feature를 잡음) 

Channel : 필터링을 통해서 계산되어 나온 하나의 특성을 가진 이미지. 1개의 필터는 feature map의 channel이 된다. channel의 수는 feature map의 filter의 개수와 동일하다.

위 이미지에서 네모들의 집합을 layer(동시에 feature maps임), 네모 한장 한장은 channel이자 feature map이라고 생각하면 된다. 네모들이 Convolution연산되어 이미지를 만든 것을 feature map이라 한다. 


필터는 Input Image의 matrix를 일정 간격으로 돌면서 합성곱을 계산한다. 
'일정 간격'을 Stride라고 한다. 

위 예제에서 Stride는 1로 필터를 Input Image에서 돌면서 Convolution 연산을 통하여 Feature Map을 만드는 과정을 보여준다. 만약, Stride가 2이면 2칸씩 이동하게 된다. 


Gradient : 변화량

Score : benefit 점수


MultiScale : 원본 이미지를 가공하여 여러 사이즈의 이미지를 합하여 본다. 

Octave : 단계
ex) octave_scale = 1.4 / 1번 옥타브가 올라가면 1.4만큼 이미지의 크기를 키운다. 



피라미드 제너레이션

이미지에서 특징점을 뽑아 블러처리하여 이미지 사이즈를 줄이는 방식

파스칼 피라미드

가우시안 필터는 연속적이기 때문에 가우시안 필터와
유사한 수치를 가진 파스칼 피라미드를 사용한다.


라플라시안 피라미드 

L0 = g0 – EXPAND (g1)

g0에서 확장된 g1값을 빼주면 g0가 고유하게 가지고 있는 feature를 뽑아낼 수 있다.  



render_lapnorm(T(layer)[:,:,:,139], img0)

render_lapnorm 함수이름

T(layer)[차원, width, height, channel]
channel을 변경해주면 다른 filter가 적용된 것을 볼 수 있음. 

img0에 함수 적용 


[참고]

GoogleLeNet인셉션 리뷰

Posted by 도이(doi)
,