
안녕하세요, 오늘은 google에서 작성한 MobileNet의 두 번째 버전입니다. 정식 이름은 MobileNetV2: Inverted Residuals and Linear Bottlenecks로 기존의 MobileNet에서 cnn구조를 약간 더 수정하여 파라미터 수와 연산량을 더욱 줄인 네트워크입니다. 논문링크: https://arxiv.org/abs/1801.04381 MobileNetV1 리뷰: https://minimin2.tistory.com/42 우선 논문에 제시된 아래 cnn 구조를 먼저 살펴보겠습니다. 두 구조의 block내부는 모두 지난 포스팅에서 설명드린 depthwise separable convolution입니다. (a)는 일반적인 resnet 구조에서 사용하는 residual 구조..

안녕하세요, 오늘은 MobileNet:Efficient Convolutional Neural Networks for Mobile Vision Application에 대해 리뷰해보겠습니다. 논문 링크: https://arxiv.org/abs/1704.04861 CNN의 초기 모델 VGG Network는 다들 아실 겁니다. 아래는 VGG-16 Network의 구조입니다. 단순히 채널 수를 증가시키며 convolution-pooling 의 연속으로 구성되어있습니다. 가장 직관적인 구조로 이해도 쉽고 구현하기도 쉽습니다. 하지만 모바일 환경에서 구동시키기엔 convolution 구조가 다소 무겁습니다. 그래서 파라미터량을 획기적으로 줄이기 위해 MobileNet이라는 새로운 논문이 나오게 됩니다. 이는 기존의 ..

Logging로그는 서버에서 많이 사용되는 도구로, 우리가 작성한 코드가 정상적으로 동작하는지, 어떤 오류가 발생했는지 등을 추적하기 위해 사용됩니다. Python에서는 logging 모듈을 이용하여 로그를 출력할 수 있습니다.logging 모듈을 사용하면, 로그를 어떤 형식으로든 출력할 수 있습니다. 예를 들어, 파일에 저장하거나 콘솔에 출력하는 등의 방법으로 로그를 확인할 수 있습니다. 이를 통해 우리는 코드의 동작 상황을 쉽게 파악하고, 문제가 발생했을 때 빠르게 대응할 수 있습니다.또한, logging 모듈은 다양한 로그 레벨을 제공하여, 우리가 관심 있는 부분에 대해서만 로그를 출력할 수 있습니다. 예를 들어, 디버그 모드에서는 모든 로그를 출력하고, 운영 모드에서는 오류 메시지만 출력하도록 설..
Python에서 폴더 또는 경로를 생성하는 법을 알아보겠습니다. os는 python 기본 내장 모듈로서, 경로 생성 등 다양하게 사용될 수 있습니다. 바로 경로를 생성하는 법을 알아 보겠습니다. import os # 폴더 생성 os.mkdir('./new_folder') # 디렉토리 생성 os.makedirs('./a/b/c', exist_ok=True) 크게 두 가지 방법이 있는데요, os.mkdir와 os.makedirs가 있습니다. 두 개의 차이에 대해 설명드리겠습니다. 우선 mkdir은 한 폴더만 생성이 가능합니다. 아래처럼 ./a/b/c 와 같이 폴더 내의 폴더는 생성할 수 없습니다. 단, 기존에 new_folder라는 폴더가 있으면 os.mkdir('./new_folder/a') 를 통해 a라..

안녕하세요, 딥러닝 관련 논문을 읽으며 나중에 공부한 내용을 상기하고자 논문리뷰 포스팅을 시작합니다. 단순 공부 목적으로 틀린 부분이 있으면 지적해주시면 감사하겠습니다. 첫 논문은 Learning Deep Features for Discriminative localization 이라는 논문입니다. [Introduction] 기존 CNN의 모델은 classification 을 이미지 내에서 어떤 특징(feature)를 보고 판단하는지 알 수가 없었습니다. 하지만 출력의 결과를 시각화하여 실제 모델이 이미지의 어떤 부분을 보고 분류하는지 알 수 있게 하였습니다. 이를 Class Activation Map이라고 하며, 줄여서 CAM라고 부릅니다. [모델] 기존 일반적인 모델에서는 마지막 feature map을..

안녕하세요, 오늘은 버전관리 시스템 git을 효율적으로 관리할 수 있는 GUI 프로그램을 소개드립니다. 기존의 git을 CLI(command line interface)로 사용하시는 분도 많겠지만, 소스트리를 통해 명령어 대신 버튼 클릭으로 훨씬 수월하게 버전을 관리할 수 있습니다. 소스트리는 무료이고 시각적으로 커밋과 브랜치를 표현해주기 때문에 관리가 훨씬 쉬워집니다. 단, git에 대해 잘 모르신다면 이전 블로그 https://minimin2.tistory.com/30?category=781893 에 가셔서 CLI방식의 기초 명령어와 개념에 대해 이해하는 것을 권장드립니다. 우선 아래 주소에서 소스트리를 다운받으세요. https://www.sourcetreeapp.com Sourcetree | Fre..
이전 포스팅에서는 tensorflow를 이용해서 여러개의 레이어를 쌓고 그것을 통해 MNIST 손글씨 숫자인식을 구현해보았는데요, CNN(Convolutional Neural Network)을 통해 더욱 높은 정확도를 구현해보겠습니다. 기본적으로 CNN이란 이전의 일반적인 네트워크랑 달리 필터라는 것을 사용합니다. 이미지는 사실 2차원으로 구성된 데이터이기 때문에 이를 1차원으로 나열하면 이미지의 특성을 알아차리기 쉽지 않습니다. 2차원의 특성을 살리고자 CNN모델이 개발이 되었고 어떻게 구현하는지 살펴보겠습니다. 위 그림은 가장 기본적인 모델로 Convolutional Layer와 Pooling Layer를 두개를 연달아 놓은 후 그 데이터를 1차원으로 만들어 주고 Fully Connected Laye..
이번에는 tensorflow로 손글씨(MNIST)를 분류하는 것을 구현할 것입니다. MNIST란 0~9까지의 숫자를 손글씨로 표현한 데이터입니다. tensorflow로 이 데이터를 쉽게 불러올 수 있습니다. 이전까지 Linear Regression, Logisitc Regression을 통해 선형적인 것과 이항적인 것을 분류하는 것을 했었는데, 이 MNIST데이터는 0~9까지 multi class를 분류해야 합니다. 이를 학습하기 위해 나온 함수는 softmax입니다. 소스를 통해 살펴보겠습니다. 12345import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tffrom tensorflow.examples.tutorials.mnist..
Logistic Regression란 선형회귀와 다르게 출력이 2가지인(0또는 1) 이항분류를 하는 경우 사용한다. 예를들어 새로 온 메일이 스팸인지 아닌지 구별하거나 남자인지 여자인지 등 분류의 경우가 2가지인것을 사용한다. tensorflow 소스를 통해 알아보겠습니다. 123456789101112131415161718192021222324import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltimport pandas as pdimport seaborn as sns x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]]y_data = [[0], [0], [0], [1], [1], ..
딥러닝을 사용할 수 있는 프레임워크 Tensorflow를 통해 선형회귀(Linear Regression)을 구현하겠습니다. 선형회귀란 데이터를 선형적으로 표현할 수 있는 것을 말합니다. 기본적으로 2차원 그래프에서 한 직선을 구한다고 생각하면 됩니다. tensorflow 소스를 통해 살펴보겠습니다. 123456789101112131415161718192021222324252627import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tf x_data = [4.0391, 1.3197, 9.5613, 0.5978, 3.5316, 0.1540, 1.6899, 7.3172, 4.5092, 2.9632]y_data = [11.4215, 10.0..
- Total
- Today
- Yesterday