전체 글

논문 함께 읽기/Data Augmentation (DA)

[DA] The Effectiveness of Data Augmentation in Image Classification using Deep Learning (arxiv2017)

안녕하세요. 지난 포스팅의 [DA] CutMix: Regularization Strategy to Train Strong Classifier with Localizable Features (ICCV2019)에서는 데이터 증강에서 중요한 방법 중 하나인 CutMix를 소개시켜드렸습니다. 오늘은 새로운 방법론을 소개해드리는 것은 아니고 GAN 기반의 데이터 증강을 수행할 때 성능 향상을 분석하는 논문을 리뷰하고자 합니다. 가벼운 마음으로 보셔도 될 거 같습니다. 일단, 본 논문에서는 2가지 데이터 증강을 수행할 때 2가지 접근법을 제안합니다. 1). 학습하기 전에 분류기에 학습할 새로운 데이터를 미리 만들어 놓는다. 2). 학습을 진행하면서 분류기에 학습할 새로운 데이터를 함께 만든다. 1)번 같은 경우에는..

Programming/Coding Problem

BOJ 2743번: 단어 길이 재기

핵심 포인트 문자열 제출코드 print(len(input())) 해설 파이썬에서는 문자열을 리스트와 유사하게 생각할 수 있기 때문에 len() 함수를 이용해서 문자열에 포함된 문자의 개수를 출력할 수 있습니다. 참고자료 및 그림출처 백준 코딩 문제

Programming/Coding Problem

BOJ 27866번: 문자와 문자열

핵심 포인트 문자열 문자열 인덱싱 제출코드 S = input() idx = int(input()) - 1 print(S[idx]) 해설 문자열 변수 S과 인덱싱하고 싶은 번호를 입력받은 뒤 문자열 인덱싱을 통해 출력하면 됩니다. 참고자료 및 그림출처 백준 코딩 문제

Programming/Coding Problem

BOJ 10811번: 바구니 뒤집기

핵심 포인트 반복문 : for문 1차원 배열 reversed() 함수 제출코드 N, M = map(int, input().split()) backets = [i + 1 for i in range(N)] for _ in range(M): i, j = map(int, input().split()) backets[i - 1:j] = reversed(backets[i - 1:j]) print(' '.join(map(str, backets))) 해설 backets 변수에 1번부터 $N$번까지 정렬된 바구니의 번호를 초기화시켜줍니다. 다음으로 $M$번 반복문을 순회하면서 뒤집는 시작번호 $i$와 끝번호 $j$를 입력 받게 되죠. 이때, $i$번 인덱스부터 $j$번 인덱스까지 슬라이싱 한뒤 reversed 함수를 이..

논문 함께 읽기/2D Image Classification (IC2D)

[IC2D] Deep Pyramid Residual Networks (CVPR2017)

안녕하세요. 지난 포스팅의 [IC2D] Densely Connected Convolutional Networks (CVPR2017)에서는 ResNet을 기반으로 블록 내의 계층 간 연결성을 강화한 DenseNet에 대해서 알아보았습니다. 이를 통해서, 더 낮은 파라미터로 충분히 좋은 성능을 낼 수 있다는 것을 검증하였습니다. 오늘도 ResNet 기반의 새로운 모델인 PyramidNet에 대해서 소개해드리도록 하겠습니다. Background ResNet에서는 Residual Block 간의 shortcut path를 도입하여 잔차 학습 (residual learning)이라는 개념을 도입하였습니다. 이를 통해, 기존의 VGGNet과 같이 단순한 모델에서 발생하던 diminish problem이나 gradi..

Programming/Coding Problem

BOJ 5597번: 과제 안 내신 분..?

핵심 포인트 반복문 : for문 1차원 배열 제출코드 check = [0] * 30 for _ in range(28): check[int(input()) - 1] = 1 for idx, check_ in enumerate(check): if check_ != 1: print(idx + 1) 해설 check 변수에 해당 번호의 학생이 과제를 제출 (1)했는 지 안했는(0) 지를 저장해놓습니다. 이제 반복문을 통해 한 줄에 하나씩 입력을 받을 때 마다 제출한 학생의 번호에 따른 check 변수를 0에서 1로 바꾸어줍니다. 출력할 때는 한번 더 반복문과 enumerate를 이용해서 번호순으로 과제를 제출하지 않은 학생의 번호를 출력해줍니다. 참고자료 및 그림출처 백준 코딩 문제

Programming/Coding Problem

BOJ 10813번: 공 바꾸기

핵심 포인트 반복문 : for문 제출코드 N, M = map(int, input().split()) switch = [map(int, input().split()) for _ in range(M)] backets = [i + 1 for i in range(N)] for i, j in switch: old_i, old_j = backets[i - 1], backets[j - 1] backets[i - 1], backets[j - 1] = old_j, old_i print(' '.join(map(str, backets))) 해설 switch 리스트에서는 각 바구니에 들어있는 공을 바꾸는 정보를 넣어주고 backets 리스트에는 현재 바구니안에 들어있는 공의 번호를 넣어줍니다. 초기화는 [1, 2, 3, 4,..

논문 함께 읽기/2D Image Segmentation (IS2D)

[IS2D] SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation (IEEE TPAMI2017)

안녕하세요. 지난 포스팅의 [IS2D] U-Net: Convolutional Networks for Biomedical Image Segmentation (MICCAI2016)에서는 현재 수많은 영상 분할 영상의 기초가 되는 UNet에 대해서 알아보았습니다. 오늘은 이를 좀 더 효율적으로 구현한 SegNet에 대해서 소개해드리도록 하겠습니다. SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation We present a novel and practical deep fully convolutional neural network architecture for semantic pixel-wise segmentation t..

Johns Hohns
Everyday Image Processing