AI/TensorFlow & PyTorch 18

[PyTorch] Mask R-CNN을 이용한 인스턴스 분할

torchvision의 maskrcnn_resnet50_fpn을 이용하여 인스턴스 분할을 해보겠습니다. 시맨틱 분할, 인스턴스 분할에 대한 내용은 이곳을 확인해 주세요. torchvision은 파이토치에서 제공하는 데이터셋과 모델 패키지입니다. maskrcnn_resnet50_fpn은 말 그대로 ResNet50기반의 FCN 입니다. maskrcnn_resnet50_fpn은 pre-trained model이기 때문에 따로 학습할 필요가 없습니다. __prediction()은 Mask R-CNN 모델의 출력(masks, labels, boxes, scores)을 입력된 confidence에 따라 리턴합니다. __get_coloured_mask()는 입력 이미지(mask)에서 인스턴스의 색을 랜덤으로 설정하여..

[PyTorch] FCN을 이용한 시맨틱 분할

torchvision의 fcn_resnet101을 이용하여 시맨틱 분할을 해보겠습니다. 시맨틱 분할에 대한 내용은 이곳을 확인해 주세요. torchvision은 파이토치에서 제공하는 데이터셋과 모델 패키지입니다. fcn_resnet101은 말 그대로 ResNet101 기반의 FCN 입니다. fcn_resnet101은 pre-trained model이기 때문에 따로 학습할 필요가 없습니다. 사용 방법은 간단합니다. 모델 출력의 'out'을 softmax를 이용하여 class를 분류하고 그 값을 픽셀값으로 사용하면 됩니다. 아래는 전체 코드입니다. [fcn.py] import torch import torchvision import torchvision.transforms as transforms from ..

[PyTorch] Faster R-CNN을 이용한 객체 탐지

torchvision의 fasterrcnn_resnet50_fpn을 이용하여 객체 탐지를 해보겠습니다. 객체 탐지에 대한 내용은 이곳을 확인해 주세요. torchvision은 파이토치에서 제공하는 데이터셋과 모델 패키지입니다. fasterrcnn_resnet50_fpn은 말 그대로 ResNet50 기반의 Faster R-CNN 입니다. fasterrcnn_resnet50_fpn은 pre-trained model이기 때문에 따로 학습할 필요가 없습니다. predictions의 boxes는 x, y, w, h 좌표이며 labels은 class index 값입니다. (0, 1, 2, ...) 마지막으로 scores는 probability으로, 기본적으로 값이 높은 순으로 정렬된 값을 얻을 수 있습니다. 위에 ..

[TensorFlow] InceptionV3을 이용한 이미지 검색

InceptionV3를 이용하여 이미지를 검색해 보겠습니다. 이미지 검색에 대한 내용은 이곳을 확인해 주세요. 이미지 검색은 쿼리 이미지와 데이터베이스 이미지들의 유사도를 계산하여 쿼리 이미지와 유사한 이미지를 찾는 것입니다. 계산하는 유사도는 이미지의 feature이며, InceptionV3의 출력입니다. InceptionV3의 출력은 2048입니다. 또한 유사도는 유클리드 거리(Euclidean distance)를 계산하여 판단합니다. 데이터셋은 The Oxford-IIIT Pet Dataset에서 다운로드 후 data 디렉토리를 생성하여 저장하면 됩니다. 쿼리 이미지는 Abyssinian_1.jpg입니다. 아래와 같이 쿼리 이미지와 유사한 이미지 50개를 확인합니다. Abyssinian_1.jpg는..

[PyTorch] CNNs을 이용한 이미지 분류

본 포스팅은 이전 포스팅과 같은 내용을 TensorFlow가 아닌 PyTorch로 구현한 내용입니다. 모델의 구성은 다음과 같습니다. 이전 포스팅의 TensorFloe 모델과 같은 구조입니다. 따라서, TensorFlow와 PyTorch 코드를 비교해서 보시면 더욱 좋을 것 같습니다. 아래는 전체 코드입니다. [train.py] # Import library from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelEncoder from pathlib import Path import cv2 import matplotlib.pyplot as plt import numpy as np import pa..

[TensorFlow] CNNs을 이용한 이미지 분류

CNNs을 이용하여 이미지를 분류해 보겠습니다. 이미지 분류에 대한 내용은 이곳을 확인해 주세요. 이미지 분류 class는 airplane, car, cat, dog, flower, fruit, motorbike, person으로 분류 개수는 총 8개입니다. 이미지는 CIFAR나 다른 데이터셋을 사용해도 됩니다. 또한 학습에 사용할 이미지를 /data/train과 /data/test 디렉토리에 나누어 저장합니다. /data/train에는 이미지 class별로 디렉토리를 생성합니다. 모델의 구성은 다음과 같습니다. 학습에 사용할 optimizer는 Adam이며, softmax를 이용한 multi class 분류이기 때문에 loss는 sparse_categorical_crossentropy를 사용합니다. 학..

[TensorFlow] GAN 예제 코드

GAN을 이용하여 MNIST 데이터를 생성해 보겠습니다. import numpy as np import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential, Model from tensorflow.keras.layers import Input, Reshape, Flatten from tensorflow.keras.layers import Dense, Dropout from tensorflow.keras.layers import BatchNormalization from tensorflow.keras.layers import UpSampling2D, Conv2D, M..

[TensorFlow] 오토 인코더를 이용한 이미지 노이즈 제거

오토 인코더를 설계하여 MNIST 데이터의 노이즈 제거를 해보겠습니다. import numpy as np import tensorflow as tf from tensorflow.keras import datasets import matplotlib.pyplot as plt from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import Conv2D from tensorflow.keras.layers import MaxPool2D from tensorflow.keras.layers import UpSampling2D # 랜덤 시드 설정 np.rand..

[TensorFlow] RNN, LSTM, GRU를 이용한 영화 리뷰 감성 분석

RNN, LSTM, GRU를 이용하여 imdb 영화 리뷰 감성 분석을 해보겠습니다. import numpy as np import tensorflow as tf from tensorflow.keras.datasets import imdb from tensorflow.keras.preprocessing import sequence from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, SimpleRNN, LSTM, GRU from tensorflow.keras.layers import Embedding from tensorflow.keras.layers import Dropout from tensorf..

[TensorFlow] 텐서플로우(TensorFlow 2.x) CNN을 이용한 Fashion MNIST

이전 포스팅에서 Fashion MNIST 데이터를 DNN을 이용해 학습했습니다. 이번에는 CNN을 이용하여 학습해보겠습니다. 코드는 '텐서플로 2.0 프로그래밍' 예제에서 가져왔습니다. import tensorflow as tf import matplotlib.pyplot as plt # set gpu gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: # Currently, memory growth needs to be the same across GPUs for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) logical_gpus = tf.config.e..