목록AI/Deep Learning (49)
우노
ONNX 란? ONNX(Open Neural Network Exchange)는, Tensorflow, PyTorch 와 같은, 서로 다른 DNN 프레임워크 환경에서 만들어진 모델들을, 서로 호환해서 사용할 수 있도록 도와주는 공유 플랫폼입니다. 예를 들어, Tensorflow 에서 모델을 만들고, 이를 ONNX 그래프로 export 하면, PyTorch 와 같은 다른 프레임워크에서도, 해당 모델을 import 해서 사용할 수 있습니다. ONNX 사용 과정 위 그림은, PyTorch 모델을 ONNX 그래프로 export 하는 전체 과정을 도식화한 것입니다. 진행 과정은 아래 순서와 같습니다. 첫 번째 PyTorch 모델과 Sample input 을 인자로 하여, torch.onnx.export 함수를 호출..
트랜스포머(Transformer)란? 인공신경망 알고리즘은 크게, 합성곱 신경망(CNN), 순환 신경망(RNN), 트랜스포머(Transformer) 3가지로 나눠집니다. 이 중 트랜스포머는, 2017년 구글이 발표한 논문인 "Attention is all you need"에서 나온 모델로, 셀프 에텐션(Self-Attention)이라는 방식을 사용하는 모델입니다. 트랜스포머는, 이러한 어텐션 방식을 사용해, 문장 전체를 병렬구조로 번역할 뿐만 아니라, 멀리 있는 단어까지도 연관성을 만들어 유사성을 높였으며, RNN의 한계를 극복했습니다. 또한, 이미지나 언어 번역에 폭넓게 쓰이고 있으며, GPT-3, BERT 등이 가장 관심을 많이 받고 있는 모델입니다. Hugging Face 란? '허깅 페이스..
들어가기 앞서, 딥러닝 모델을 특정 디바이스 상에서 효율적으로 동작시키기 위해서는, 동작시킬 딥러닝 모델을, 타겟 디바이스에서 최적의 속도와 정확도를 낼 수 있는 머신 코드로 변환해야합니다. 이러한 코드 변환 작업을 자동으로 지원해주는 도구를, ‘딥러닝 컴파일러’라고 합니다. 딥러닝 컴파일러 개념도 딥러닝 컴파일러는, 다양한 딥러닝 플랫폼에서 학습된 딥러닝 모델을 입력으로 받아, 특정 하드웨어에서 동작 가능한 머신 코드(또는, 백엔드 코드)를 자동으로 생성합니다. 최근 제안된 XLA, TVM, Glow 와 같은 딥러닝 컴파일러들은, TensorFlow, Pytorch, MxNet, ONNX 등의 프레임워크로 작성된 모델을 입력으로 하여, CPU 및 GPU 용 백엔드 코드를 생성하고 있습니다. CPU 용 ..
TensorFlow Lite(TFLite) 란? TensorFlow Lite(TFLite)는 구글에서 개발한, TensorFlow(keras) 모델 최적화 라이브러리입니다. TensorFlow(keras) 모델만 최적화할 수 있습니다. TFLite 는 TFLite Converter 와 TFLite Interpreter 로 구성되어있습니다. TFLite Converter TensorFlow 모델을, Interpreter가 사용할 수 있도록 최적화하는 역할입니다. 효율적이고, 용량이 적으며, 성능은 유지하도록 TFLite Interpreter 최적화된 모델을 다양한 하드웨어에서 돌아갈 수 있도록 도와주는 역할입니다. 모바일 폰, 임베디드 리눅스 디바이스, 마이크로 컨트롤러 등... 따라서, TFLite 는 ..
들어가기 앞서, 모바일이나 임베디드 환경에서, 딥러닝 모델을 사용한 추론은 어렵습니다. 일반 PC 와 달리, 메모리, 성능, 저장공간 등의 제한이 있기 때문입니다. 따라서, 딥러닝에서는 모델 경량화와 관련된 연구들이 많이 진행되고 있습니다. 즉, “모델을 가볍게 만드는 연구”라고 이해할 수 있습니다. 이러한 경량화 연구는 크게 두 가지로 나눠집니다. 모델을 구성하는 알고리즘 자체를 효율적인 구조로 설계하는 연구 기존 모델의 파라미터들을 줄이거나 압축하는 연구 전자의 경우, 대표적인 방법으로 “모델 구조 변경”, “효율적인 합성곱 필터 기술”, “경량 모델 자동 탐색 기술” 이 존재합니다. 모델 구조 변경 모델 구조를 변경함으로써 경량화하는 방법 (ResNet, DenseNet, SqueezeNet, et..
Tensorflow version 확인 코드 $ python > import tensorflow as tf > tf.__version__ '2.2.0' 참고 https://daeson.tistory.com/295
Tensorflow 는, 두 개의 포맷 (SavedModel 과 HDF5) 으로 모델을 저장할 수 있습니다. SavedModel 포맷으로 모델 저장/불러오기 (기본) SavedModel 포맷은 TF2.x 의 기본 파일 포맷입니다. 모델 저장하기 # 모델 생성 및 훈련 model = create_model() model.fit(train_images, train_labels, epochs=5) # 전체 모델을 기본 포맷으로 저장 model.save('model') 모델 불러오기 import tensorflow as tf # 모델 불러오기 load_model = tf.keras.models.load_model('model') HDF5 포맷으로 모델 저장/불러오기 .h5(HDF5)..
Distributed Training (분산 학습) 이란? 딥러닝 모델 설계 과정에는 많은 시간이 소요됩니다. 따라서, 모델의 학습 과정을 가속화하는 것은 매우 중요합니다. 분산 학습은 이러한 딥러닝 모델의 학습 시간을 단축하는데 필수적인 기술 중 하나입니다. Distributed Training 분산 학습의 핵심 개념은 크게 3가지로 분류할 수 있습니다. 작업 분할 방식 Model Parallelism Data Parallelism Parameter 동기화 방식 Synchronous replication Asynchronous replication Gradient 취합 방식 All-Reduce (Parameter Server) Ring-AllReduce 작업 분할 방식 작업 분할 방식은 2가지로 분류됩..
Import library import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from sklearn.model_selection import GridSearchCV from sklearn.model_selection import KFold from sklearn.metrics import make_scorer from sklearn.metrics import mean_squared_error from tensorflow import keras from tensorflow.keras.models import Sequential from tensorflow.keras.layers impor..
Semantic Segmentation이란? Semantic Segmentation 은 컴퓨터비젼 분야에서 가장 핵심적인 분야 중 하나이며, 위 그림처럼, 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것입니다. 더 구체적으로는 아래 그림처럼, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것입니다. Semantic Segmentation은 다른 컴퓨터비젼 문제들과 마찬가지로, Deep Convolution Neural Network (깊은 신경망)을 적용해서 많은 발전을 이루었습니다. 이번 포스트에서는 Semantic Segmentation 에 대해서 자세히 설명하고, 자주 활용되는 몇가지 접근방법을 알아보겠습니다. Semantic Segmentation의 의미와 목적 Semantic S..