Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[9주차] 컴퓨터 비전 학습 경진대회 #9

Open
mingxoxo opened this issue Feb 18, 2021 · 4 comments
Open

[9주차] 컴퓨터 비전 학습 경진대회 #9

mingxoxo opened this issue Feb 18, 2021 · 4 comments

Comments

@mingxoxo
Copy link
Member

mingxoxo commented Feb 18, 2021

글자에 숨겨진 숫자 이미지 예측
https://dacon.io/competitions/official/235626/overview/

@mingxoxo
Copy link
Member Author

ResNet

  • 152개의 층을 가진다. GoogLeNet이 22개의 층을 가진 것에 비해 약 7배 깊어졌다.
  • 기본적으로 VGG-19의 구조를 뼈대로 한다. 거기에 컨볼루션 층들을 추가해서 깊게 만든 후에, shortcut들을 추가하는 것
  • 34층의 ResNet은 처음을 제외하고는 균일하게 3 x 3 사이즈의 컨볼루션 필터를 사용했다. 그리고 특성맵의 사이즈가 반으로 줄어들 때, 특성맵의 뎁스를 2배로 높였다.

image
그림에서 네트워크가 깊어지면서 top-5 error가 낮아진 것을 확인할 수 있다.
하지만 신경망을 무조건 깊게 쌓는다고 성능이 계속 좋아지는 것은 아니다.

  • ResNet의 핵심 : Residual Block
    입력값을 출력값에 더해줄 수 있도록 지름길(shortcut)을 하나 만들어준다.
    image

기존의 신경망 : 입력값 x를 타겟값 y로 매핑하는 함수 H(x)를 얻는 것이 목적
ResNet : F(x) + x를 최소화하는 것을 목적으로 한다.
x는 변할 수 없는 값이므로 F(x)를 0에 가깝게 만드는 것이 목적이 된다.
F(x) = H(x)-x, H(x)-x를 잔차(residual)라고 한다. 즉, 잔차를 최소화 해주는 것.

ResNet의 original 논문에 의하면 경험적으로(empirically) 입력과 출력이 같아지도록 놓고 학습을 시켰더니 더 좋은 결과가 나왔다고 한다.

image

출처 : https://bskyvision.com/644

@mingxoxo
Copy link
Member Author

mingxoxo commented Feb 19, 2021

  • np.where

where함수는 조건문을 사용할 수 있다.
출력은 index로 반환된다.

image

조건에 만족하는 특정 값들을 찾아 원하는 숫자로 바꿀 수 있다.
파이썬의 for문 보다 빠르다고 알려져 있다.
image
image

출처 : https://pinkwink.kr/1236

  • ImageDataGenerator
    : 이미지 데이터를 증식(Data Augmentation)시킬 수 있도록 해준다. --> 이미지 데이터 생성
    실시간 데이터 증강을 사용해서 텐서 이미지 데이터 배치를 생성한다. 데이터에 대해 (배치 단위로) 루프가 순환된다.
  1. 이미지 위, 아래, 왼쪽, 오른쪽으로 움직이기(평행이동)
  2. 이미지 위, 아래, 왼쪽, 오른쪽으로 뒤집기
  3. 이미지를 랜덤한 각도로 돌리기
  4. 이미지의 밝기를 랜덤하게 다르기 주기
  5. 이미지를 랜덤하게 zoom 하기 (당겨졌다 줄여졌다)
train_generator = idg.flow(x_train,y_train, batch_size = 1)
#data와 label 배열을 가지고 온다. batch size만큼 data를 증가시킨다.

출처 : https://m.blog.naver.com/PostView.nhn?blogId=isu112600&logNo=221582003889&proxyReferer=https:%2F%2Fwww.google.com%2F
https://whereisend.tistory.com/53

@mingxoxo
Copy link
Member Author

mingxoxo commented Feb 23, 2021

tf.keras.layers.experimental.preprocessing

  1. Resizing : 배치 된 이미지 입력의 크기를 목표 높이와 너비로 조정
  2. Rescaling : scale만큼 곱해준 후 offset만큼 더해준다.
    • [0, 255] --> [0, 1] : scale=1./255
    • [0, 255] --> [-1, 1] : scale=1./127.5, offset=-1

출처 : https://www.tensorflow.org/api_docs/python/tf/keras/layers/experimental/preprocessing

@mingxoxo
Copy link
Member Author

mingxoxo commented Feb 23, 2021

DenseNet

Densely Connected Convolutional Networks

최근 연구에 따르면 convolutional networks가 입력에 가까운 레이어와 출력에 가까운 레이어 사이의 짧은 연결을 포함할 경우 훨씬 더 깊고 정확하게 효율적으로 훈련할 수 있다는 것을 보여주었다.
본 논문에서는 이러한 관찰을 수용하고 각 레이어를 feed-forward방식으로 다른 모든 레이어에 연결하는 DenseNet (Dense Convolutional Network)을 소개한다.

레이어가 L개 있는 기존의 convolutional networks에는 각 레이어와 후속 레이어 사이에 하나씩 L 연결이있는 반면, 우리 네트워크에는 L (L + 1) / 2 직접 연결을 가진다.
각 레이어에 대해 모든 이전 레이어의 feature map이 입력으로 사용되고 자체 feature map이 모든 후속 레이어의 입력으로 사용됩니다.

vanishing-gradient problem을 완화, feature propagation 강화, feature reuse 장려, parameter 수 상당히 줄인다.

image
image

image

출처 : https://www.kaggle.com/pytorch/densenet121
https://jayhey.github.io/deep%20learning/2017/10/13/DenseNet_1/
DenseNet 공부하기 좋은 블로그 : https://hoya012.github.io/blog/DenseNet-Tutorial-1/
https://wingnim.tistory.com/39

Bottleneck

차원을 줄였다가 뒤에서 차원을 늘린다. --> 연산 시간을 줄이기 위해

image

출처 : https://m.blog.naver.com/PostView.nhn?blogId=laonple&logNo=220764986252&proxyReferer=https:%2F%2Fwww.google.com%2F

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant