본문 바로가기

반응형

전체 글

(72)
[Keras] SqueezeNet Model (CNN) 이란? - 1 (이론편) 서 론 머신러닝, 혹은 딥러닝을 공부하다 보면 '모델'이라는 개념이 등장한다. 주로 석/박사를 졸업하고 현업으로 AI직군을 들어가면 모델 설계 업무를 주로하게 된다. 요즘 모델의 트렌드는 주로 Accuracy, 즉 예측 정확성을 올리는 데에 집중되어 있다. 그렇기에 요즘 핫한 YOLOv3, Darknet, VGGNet 등등 예측 정확성은 매우 뛰어나다. 하지만 그 모델의 사이즈는 굉장히 무겁다. 가장 간단한 CNN 모델 중 하나인 AlexNet 같은 것조차, 사실 라즈베리파이나 스마트폰 등에 올리기 버거울 정도의 무게이다. 그래서 2016년 11월에 등장한 SqueezeNet은 임베디드 현장에서는 매우 큰 호평을 받게 되었다. (SqueezeNet: AlexNet-level accuracy with 50..
[DSP] 푸리에 변환, DFT와 FFT (Fast Fourier Transform) - 1 서 론 FFT란 무엇인가? 프로그래밍을 하다보면, 특히 영상처리, 인공지능(머신러닝/딥러닝), 디지털 신호처리(DSP), 임베디드 시스템, 등을 하다보면 FFT라는 말이 자주 나온다. 그리고 공대생이라면 대학교 1학년이나 2학년 과정에서 자주 들어봤을 단어이기도 하다. (특히 공업수학/공학수학에서...) FFT란 Fast Fourier Transform의 약자이며 고속 푸리에 변환이라는 뜻이다. 그렇다면 고속 푸리에 변환이 있다면 중속 푸리에 변환과 저속 푸리에 변환도 있을까? 우선 이러한 개념을 익히기 위해 푸리에 변환에 대해 알아야 한다. 푸리에 변환은 기본적으로 시간 도메인(Time Domain)을 주파수 도메인(Frequency Domain)으로 변환시키는, 즉 시간에 대한 함수(혹은 신호)를 구..
[딥러닝] 합성곱 신경망, CNN(Convolutional Neural Network) - 이론편 배 경 우리는 AI 시대에 살고 있다. 거의 모든 제품에는 어떤 인공지능이 들어가 있고 어떤 기능을 해서 어떻게 삶을 윤택하게 하는지에 대해 논하고 있다. 그 중 가장 대표적인 인공지능 알고리즘이라고 한다면 CNN과 RNN, DNN을 꼽기도 한다. 그 중에서도 딥러닝의 선구자라고 할 수 있는 CNN은 어디서 나왔고 어디에 활용될 수 있을까? 우선 CNN을 비롯한 딥러닝 알고리즘들이 크게 주목을 받기 시작하게 된 계기는 컴퓨터 비전 분야의 올림픽이라 할 수 있는 2012년 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)에서 제프리 힌튼 교수팀의 AlexNet이 Top 5 Test Error 기준 15.4%를 기록하여 2위(26.4%)를 큰 폭으로 따돌..
[통신 이론] MQTT, MQTT Protocol (MQTT 프로토콜) 이란? - 2 (실전편) Broker 다운로드 MQTT를 실제로 이용해보기 위해선 MQTT 서버 역할을 하는 Broker가 필요하다. 물론 그 서버를 만드는 것도 하나의 방법이겠지만, 널리 사용되는 방법 중 하나인 상용 Broker를 이용해보자. 우리가 사용해볼 Broker는 mosquitto라는 MQTT Broker이다. 다운로드하는 방법은 아래와 같다. Windows 기준 https://mosquitto.org/download/ Download Source mosquitto-1.6.8.tar.gz (319kB) (GPG signature) Git source code repository (github.com) Older downloads are available at https://mosquitto.org/files/ Bin..
[통신 이론] MQTT, MQTT Protocol (MQTT 프로토콜) 이란? - 1 (이론편) 이 론 MQTT(Message Queueing Telemetry Transport)는 2016년 국제 표준화 된 (ISO 표준 ISO/IEC PRF 20922) 발행-구독(Publish-Subscribe) 기반의 메시지 송수신 프로토콜이다. 작은 코드 공간이 필요하거나 네트워크 대역폭이 제한되는 원격 통신을 위해, 즉 IoT와 같은 제한된, 혹은 대규모 트래픽 전송을 위해 만들어진 프로토콜이다. 그렇기에 TCP/IP 프로토콜 위에서 동작하지만 동시에 굉장히 가벼우며, 많은 통신 제약들을 해결해준다. (그러나 이 말은 동시에 MQTT는 Bluetooth나 Zigbee처럼 별도의 모듈로 별도의 대역폭을 갖는 통신 규약이 아닌, WiFi나 기타 방법을 통해 인터넷을 통해 TCP/IP 기반의 메시지 송수신을 한..
면접 질문 모음 아래 면접 질문 모음은 필자가 생각나는대로 추가하도록 하며, 한 줄 이내로 끝나는 경우 해당 항목 아래에 답을 적고, 만약 더 깊게 원리를 파악해야 하는 문제라면 따로 포스팅을 작성 후 링크를 연결하도록 하겠다. 아래 면접 질문 모음은 실제 필자가 겪었던(질문 받았던) 면접 질문 리스트이므로, 필자의 직군과 맞지 않는다면 필요성이 없을 수도 있다. 단, 필자가 취업 시장에서 금융IT/임베디드/IoT/SW개발/빅데이터/AI 등 많은 분야를 지원했었으므로 (그만큼 프로젝트 경험이 많았고 도전해볼만한 가치가 있었다고 믿었기에) 꽤 넓은 스펙트럼이 포함되어 있긴 하다. 면접 질문 프로세스와 스레드의 차이점 OIS 7계층이란 무엇인가? 1GB가 넘는 대용량 파일에서 가장 작은/큰 수 5개 찾아내는 법 아는 자료구..
[Golang] 고루틴과 채널(chan)을 이용한 피보나치 수열 이번에는 고루틴과 채널을 이용하여 피보나치 수열을 생성하는 함수를 만들어보자. 소스 코드는 다음과 같다. // Go Fib package main import "fmt" func Fib(max uint64)
[Golang] 채널로 큐(Queue)를 만들어보자! 이번에는 번외 프로젝트로 큐를 만들어보도록 하자. 이 프로젝트를 통해 Golang의 채널(chan)이라는 연산자/자료형이 갖는 성질을 터득해볼 수 있다. 소스 코드는 아래와 같다. 우리는 5칸 짜리 큐를 만들고, 1, 2, 3을 차례대로 넣었다가 Pop 시킬 것이다. // making queue with Go channel package main import "fmt" type Queue struct { item chan int } // save inputs func (q *Queue) Append(val int) { q.item

반응형