전체 글

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

[IC2D] ShuffleNet: An Extreme Efficient Convolutional Neural Network for Mobile Devices (CVPR2018)

안녕하세요. 지난 포스팅의 [IC2D] Residual Attention Network for Image Classification에서는 CNN에서 어텐션 (attention)이라는 개념을 도입한 RAN에 대해서 소개시켜드렸습니다. 오늘은 MobileNet에 이어 효율성을 극한으로 강조한 논문인 ShuffleNet에 대해서 소개해드리도록 하겠습니다. Background 최근 나온 수많은 합성곱 기반의 신경망들은 인간의 한계를 뛰어넘어 ILSVRC 대회에서도 굉장히 높은 성능을 보여왔습니다. 하지만, 이러한 모델이 발전될 수록 그만큼 연산량 및 복잡도가 크게 증가하기 때문에 이를 실생활에서 활용하기는 어려운 측면이 있었습니다. 이와 같은 문제를 해결하기 위해 모델을 단순하게 만드는 pruning, comp..

Programming/Coding Problem

BOJ 9506번: 약수들의 합

핵심 포인트 기초 구현력 약수의 정의 제출코드 while True: N = int(input()) if N == -1: break div = [n for n in range(1, N//2+1) if N % n == 0] if sum(div) == N: print("{} = {}".format(N, ' + '.join(map(str, div)))) else: print("{} is NOT perfect.".format(N)) 해설 언제 입력이 끝날 지 모르기 때문에 while 문을 이용해서 -1이 입력되면 반복문을 탈출할 수 있도록 만들어놓습니다. 다음으로 지난 포스팅에서 본 것과 동일한 방법으로 약수를 찾는 데 다른 점은 가장 큰 약수는 주어진 수의 절반이므로 N // 2만큼 순회합니다. 만약 div의 ..

Programming/Coding Problem

BOJ 2501번: 약수 구하기

핵심 포인트 기초 구현력 약수의 정의 제출코드 N, K = map(int, input().split()) div = [n for n in range(N, 0, -1) if N % n == 0] if len(div) < K: print(0) else: print(div[::-1][K-1]) 해설 두 자연수 N과 K가 입력되면 제일 먼저 N의 약수가 무엇인지 알아야합니다. 저는 리스트 컴프리헨션에 조건문을 추가하여 N부터 시작해서 1까지 1씩 감소시키면서 N을 나누었을 때 나누어떨어지는 수를 div 리스트에 append 하여 약수들이 들어간 리스트를 만들었습니다. 다음으로 K가 약수의 개수보다 크면 출력할 수 있는 약수가 없기 때문에 0을 출력해줍니다. K가 약수의 개수보다 작은 경우에는 현재 div 리스트..

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

[IC2D] Residual Attention Network for Image Classification (CVPR2017)

안녕하세요. 지난 포스팅의 [IC2D] Xception: Deep Learning with Depthwise Separable Convolutions (CVPR2017)에서는 Inception 모델의 최종 변형 구조인 Xception에 대해서 소개해드렸습니다. Xception은 실제로 많은 논문에서 ResNet과 같이 다양한 downstream task에서 backbone으로 사용되고 있으며 특히 Deepfake detection에서 많이 활용되고 있는 추세입니다. 오늘은 지금까지 성능을 향상시키기 위한 파라미터였던 깊이, 너비, cardinality, diversity가 아닌 attention의 개념을 컴퓨터 비전에 접목한 RAN에 대해서 소개시켜드리도록 하겠습니다. Background Attentio..

Programming/Coding Problem

BOJ 5086번: 배수와 약수

핵심 포인트 기초 구현력 제출코드 while True: N, M = map(int, input().split()) if N == M == 0: break if N M and N % M == 0: print('multiple') else: print('neither') 해설 여기서 입력이 언제 끝날지 모르기 때문에 무한 반복문을 걸어주어야합니다. 이때, 두 자연수를 입력받았을 때 둘 다 0이라면 그냥 반복문을 종료시킵니다. 다음으로 N M 인 경우에 N을 M으로 나누어 떨어지면 'multiple'라고 출력하면 됩니다. 두 경우 모두 해당하지 않으면 ..

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

[IC2D] Xception: Deep Learning with Depthwise Separable Convolutions (CVPR2017)

안녕하세요. 지난 포스팅의 [IC2D] PolyNet: A Pursuit of Structural Diversity in Very Deep Networks (CVPR2017)에서는 CNN 모델의 diversity를 강조하여 Inception 모델의 새로운 변형 구조인 PolyNet을 제안하였습니다. 오늘은 Inception 모델의 최종버전이라고 할 수 있는 Xception에 대해서 소개해드리도록 하겠습니다. Xception: Deep Learning with Depthwise Separable Convolutions We present an interpretation of Inception modules in convolutional neural networks as being an intermediat..

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

[IC2D] PolyNet: A Pursuit of Structural Diversity in Very Deep Networks (CVPR2017)

안녕하세요. 지난 포스팅의 [IC2D] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning (AAAI2017)에서는 Inception 모델과 ResNet의 결합을 통한 새로운 SOTA 성능의 모델인 Inception-ResNet 에 대해서 알아보았습니다. 오늘은 이러한 구조를 더욱 일반화한 PolyNet에 대해서 소개해드리겠습니다. Background 지금까지 저희가 보았던 영상 분류 모델들을 보면 대부분 ResNet 기반의 모델들이였습니다. 다른 변형구조로는 InceptionNet과 ResNet 구조를 결합한 Inception-ResNet과 cardinality를 강조한 multi-path 기반의 ResNex..

Programming/Coding Problem

BOJ 2903번: 중앙 이동 알고리즘

핵심 포인트 기초 구현력 제출코드 N = int(input()) arr = [3] for i in range(1, N): arr.append(arr[-1] + 2**i) print(arr[-1]**2) 해설 문제 설명이 복잡하기는 한데 단순히 N번째에서 점의 개수를 출력하는 문제 입니다. 패턴을 분석하면 다음과 같습니다. 1). N = 1 $\rightarrow$ 점의 개수 $3^{2}$ 2). N = 2 $\rightarrow$ 점의 개수 $5^{2}$ 3). N = 3 $\rightarrow$ 점의 개수 $9^{2}$ 4). N = 4 $\rightarrow$ 점의 개수 $17^{2}$ 따라서, 반복문을 N번 반복하면서 N번째에 해당하는 밑 숫자를 얻은 뒤 제곱하면 됩니다. 참고자료 및 그림출처 백준..

Johns Hohns
Everyday Image Processing