본문 바로가기
728x90
반응형
SMALL

전이 학습12

스타일, 콘텐츠 및 변형 손실 계산하기 스타일, 콘텐츠 및 변형 손실 계산하기 행렬에 전치를 곱하여 그램 행렬을 계산한다. 손실 함수의 두 부분을 계산하기 위해 VGG 네트워크의 여러 컨볼루션 레이어에서 출력된 그램 행렬을 가져온다. 스타일과 원본 이미지와의 유사성을 모두 결정하기 위해 이미지 픽셀을 직접 비교하는 대신 VGG의 컨볼루션 레이어 출력을 비교한다. 손실 함수의 세 번째 부분에서는 서로 가까운 픽셀을 직접 비교한다. VGG 네트워크의 여러 다른 레벨에서 컨볼루션 출력을 가져오기 때문에 그램 행렬은 이러한 레이어를 결합하는 수단을 제공한다. VGG 컨볼루션 레이어의 그램 행렬은 이미지의 스타일을 나타낸다. 알고리즘이 생성할 때 원본 이미지, 스타일 참조 이미지, 최종 출력 이미지에 대해 이 스타일을 계산한다. def gram_mat.. 2024. 2. 14.
Transfer Learning for Keras Style Transfer Transfer Learning for Keras Style Transfer 스타일 전송 기술은 두 개의 이미지를 입력으로 받아 세 번째 이미지를 생성한다. 첫 번째 이미지는 변형하고자 하는 기본 이미지이다. 두 번째 이미지는 소스 이미지에 적용하려는 스타일을 나타낸다. 마지막으로 알고리즘은 스타일 이미지가 특징인 스타일을 에뮬레이트하는 세 번째 이미지를 렌더링다. 이 기술을 스타일 전송이라고 한다. 제시된 코드는 François Chollet이 만든 Keras 문서의 스타일 전송 예제를 기반으로 했다. base_image_path : 스타일을 적용할 이미지 style_reference_image_path : 스타일을 복사할 이미지 먼저, 스타일을 적용할 기본 이미지를 업로드다. import os fro.. 2024. 2. 14.
StyleGAN을 위한 이미지 전처리 StyleGAN을 위한 이미지 전처리 dlib를 사용하여 눈 위치를 기준으로 소스 이미지와 대상 이미지를 중앙에 배치하고 자른다. 이 작업을 수행하기 위해 두 개의 함수를 만든다. 첫 번째는 dlib를 호출하여 인물의 눈 위치를 찾는다. 두 번째 함수는 눈 위치를 사용해 이미지의 중심을 눈 주위로 맞춘다. 정확히 중앙에 맞추지 않고 원래 StyleGAN 훈련 세트와 비슷하게 중앙에서 약간 오프셋을 둔다. 이 오프셋은 생성된 StyleGAN 얼굴의 눈을 감지하여 결정다. 눈 사이의 거리를 통해 얼굴이 얼마나 큰지 알 수 있으며, 이를 통해 이미지의 크기를 일관되게 조정할 수 있다. def find_eyes(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) rects.. 2024. 2. 14.
Transfer Learning for Facial Points and GANs Transfer Learning for Facial Points and GANs 신경망을 사용하여 얼굴 특징, 특히 개인의 눈 위치를 감지하는 방법이 있다. 눈의 위치를 파악하면 인물 사진을 일관성 있게 자를 수 있다. GAN은 무작위 벡터를 사실적인 인물 사진으로 변환할 수 있다. 그 반대로 실제 사진을 숫자 벡터로 변환할 수도 있다. 두 이미지를 이러한 벡터로 변환하면 두 이미지 사이를 변환하는 비디오를 제작할 수 있다. NVIDIA는 눈이 항상 같은 위치에 있도록 일관되게 잘린 인물 사진을 대상으로 StyleGAN을 훈련했다. 이미지를 벡터로 성공적으로 변환하려면 NVIDIA가 크롭을 사용한 방식과 유사하게 이미지를 크롭해야 한다. 여기에 제시된 코드를 사용하면 시작 이미지와 끝 이미지를 선택하고 .. 2024. 2. 14.
조기 중지의 이점 Benefits of Early Stopping 손실은 신경망이 오답에 대해 어느 정도 확신을 가졌는지를 측정한다. 정확도는 신경망의 신뢰도와 관계없이 올바른 분류의 비율이다. import matplotlib.pyplot as plt history_dict = history.history acc = history_dict['accuracy'] val_acc = history_dict['val_accuracy'] loss = history_dict['loss'] val_loss = history_dict['val_loss'] epochs = range(1, len(acc) + 1) plt.plot(epochs, loss, 'bo', label='Training loss') plt.plot(epochs, v.. 2024. 2. 13.
네트워크 생성 및 가중치 전송 Create a Network and Transfer Weights 전송된 가중치로 새로운 신경망을 만든다. 이미지넷에 대해 학습된 가중치가 포함된 Xception 신경망에서 가중치를 전송한다. 기존 Xception 신경망에 keras.applications을 로드한다. base_model의 로딩에는 상당히 많은 작업이 진행된다. 기본 Xception 신경망은 299x299의 이미지를 받아들인다. 표준화한 150x150을 사용해야 하지만 그 차이를 극복하는 것이 비교적 쉽다는 것이 밝혀졌다. 컨볼루션 신경망은 스캔할 때 이미지 텐서에서 커널을 이동한다. Keras는 커널이 스캔하는 이미지가 아니라 레이어의 커널 크기에 따라 가중치의 수를 정의한다. 따라서, 이전 입력 레이어를 폐기하고 원하는 이미지 크기.. 2024. 2. 13.
전이 학습 (Transfer Learning) 전이 학습 (Transfer Learning) 전이 학습은 신경망을 처음부터 훈련하는 대신 미리 로드된 가중치 세트로 훈련을 시작한다. 일반적으로 미리 훈련된 신경망의 최상위 레이어를 제거하고 새로운 최상위 레이어로 다시 훈련한다. 이전 신경망의 레이어는 훈련으로 인해 가중치가 변경되지 않도록 잠긴다. 새로 추가된 레이어만 학습된다. 대규모 이미지 데이터 세트에 대한 신경망을 훈련하려면 많은 컴퓨팅 성능이 필요할 수 있다. Google, Facebook, Microsoft 및 기타 기술 기업들은 다양한 애플리케이션을 위한 고품질 신경망을 훈련하기 위해 GPU 어레이를 활용하고 있다. 이러한 가중치를 신경망으로 전송하면 상당한 노력과 계산 시간을 절약할 수 있다. 사전 학습된 모델이 구현하려는 애플리케이션.. 2024. 2. 13.
[Image Classification] EfficientNet (cats-and-dogs) Dog&Cat 데이터 # 데이터 불러오기 : Cats vs Dogs dataset !curl -O https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_5340.zip import os import shutil import zipfile ROOT_DIR = '/content' DATA_ROOT_DIR = os.path.join(ROOT_DIR, 'catsanddogs') with zipfile.ZipFile(os.path.join(ROOT_DIR, 'kagglecatsanddogs_5340.zip'), 'r') as target_file: target_file.extractall.. 2022. 9. 14.
[시각 지능] Coffee Classification Coffee Classification 커피의 종류는 에스프레소, 아메리카노, 카푸치노, 카페 라떼, 카페 모카 등 다양한 메뉴가 있다. 구글에서 크롤링을 통해 이미지를 수집한다. 아메리카노, 라떼, 모카를 분류한다. import os import glob import math import shutil import numpy as np import tensorflow as tf from tensorflow.keras.layers import Dropout, Dense, GlobalAveragePooling2D from tensorflow.keras.applications import MobileNet from tensorflow.keras.models import Sequential from tensor.. 2022. 8. 28.
[시각 지능] 전이 학습 (Transfer Learning) 전이 학습 (Transfer Learning) CNN 기반의 딥러닝 모델을 훈련시키려면 많은 양의 데이터가 필요하지만 큰 데이터셋을 얻 는 것은 쉽지 않다. 이러한 현실적인 어려움을 해결한 것이 전이 학습인데, 전이 학습은 ImageNet처럼 아주 큰 데이터셋을 써서 사전 학습 모델 (pre-trained model)의 가중치를 가져와 분석하려는 데이터에 맞게 보정해서 사용하는 것을 의미한다. 특징 추출기 (feature extractor)는 컨볼루션 층과 풀링 층의 조합으로 구성되어 있으며 ImageNet 데이터에 대해 이미 학습되어 있다. 분류기 (classifier)는 완전 연결 층 (Dense) 조합으로 구성되며 이미지에 대한 정답을 분류하는 역할을 한다. Cats and Dogs 고양이와 개 이.. 2022. 8. 14.
728x90
반응형
LIST