전체 글 (43) 썸네일형 리스트형 PGGAN을 이용한 강아지, 고양이 생성모델 만들기 (2) 이번 글에서는 지난 글에서 만든 데이터셋과 모델을 이용하여 훈련을 시켜보도록 하겠습니다. 먼저 데이터셋과 model state dict를 가져오기 편리하게 steps별로 path를 리스트형태로 정의해줍니다. steps는 모델의 steps와 같은 의미입니다. test_size는 train log에 찍을 이미지의 개수입니다. dataset의 directory_path는 미리 정의해둔 dataset_path의 self.steps번째에서 찾을 수 있습니다. dataset을 로드하여 trainloader와 validloader를 정의해줍니다. 생성자와 판별자도 정의해주고요. loss function과 optimizer도 정의해줍니다. test_z는 train log에 사용할 잠재벡터입니다. 마지막으로 모델의 st.. PGGAN을 이용한 강아지, 고양이 생성 모델 만들기 (1) 이번 글에서는 데이터 전처리를 진행해보도록 하겠습니다. 데이터셋은 아래 링크에서 다운로드 받으시면 됩니다. https://www.kaggle.com/andrewmvd/animal-faces Animal Faces 16,130 images belonging to 3 classes. www.kaggle.com 강아지와 고양이 생성 모델이기 때문에 dog과 cat 폴더만 사용할 것입니다. 먼저 PIL Image를 tensor로 변환하는 메소드와 폴더 안의 이미지를 모두 tensor로 변환하는 메소드를 만들어줍니다. 그리고 폴더 리스트를 모두 이미지로 변환한 후 반환하는 메소드를 만들어줍니다. 이제 알맞게 전처리를 하면 끝입니다. 추가로 몇가지를 더 해주도록 하겠습니다. make gif 메소드는 epoch마다 .. PGGAN을 이용한 강아지, 고양이 생성모델 만들기 (0) 이 챕터의 목적은 PGGAN을 이용하여 256x256 해상도의 강아지, 고양이 생성모델을 만드는 것입니다. 먼저 프로젝트를 구현해보기 전에 PGGAN에 대한 이해가 필요합니다. PGGAN에 대한 이해가 부족하신 분은 아래 링크를 참고하세요. (https://simplepro.tistory.com/44) 모델 구조는 다음 링크를 참고하였습니다. (https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/ProGAN) 이 글에서는 모델 구조만 설계합니다. 먼저 논문에서 사용한 모델 구조를 봐보도록 하겠습니다. Generator 구조를 보면 n_channels가 512, 512, 512, 512, 256, .. (22) PGGAN (Progressive Growing of GAN) PGGAN(ProGAN)은 고해상도 이미지를 생성하기 위해 제안된 획기적인 기술입니다. 이미지를 해상도별로 학습시켜 비교적 고해상도에서도 안정적인 학습이 가능합니다. PGGAN에는 크게 네가지 아이디어가 존재합니다. 1. Progressive Growing - 점진적으로 해상도를 높여가며 학습합니다. 2. PixelNorm - 기존에 많이 쓰이는 BatchNorm과는 달리 픽셀별로 Normalization 작업을 수행합니다. 3. Equalized Learning Rate - 가중치를 sqrt(2/입력개수)로 나누어 모든 가중치가 동일한 속도로 학습될 수 있도록 합니다. 4. Minibatch Std - Discriminator의 마지막 블록에 해당 레이어를 추가하여 모드 붕괴 현상을 완화합니다. 차근차.. (21) 오토인코더와 GAN 이번 글에서는 오토인코더와 GAN에 대해 알아보도록 하겠습니다. 먼저 오토인코더에 대해 알아보도록 하겠습니다. 오토인코더는 비지도학습에 쓰이는 인공신경망입니다. 레이블이 없는 데이터의 잠재표현을 학습하는 인공 신경망이지요. 다음은 오토인코더의 구조입니다. Encoder와 Decoder로 구성되어있고, 대부분 가운데 은닉층을 기준으로 대칭입니다. x가 입력되면, x가 출력되어야 하는 구조입니다. 잘 학습된 모델에서는 가운데 은닉층의 값이 입력의 특성추출 결과가 될 것입니다. 위의 그림에서는 10차원 데이터를 3차원으로 차원축소한 결과가 되겠네요. 오토인코더의 또 다른 특징으로는 새로운 데이터를 생성할 수 있다는 점입니다. 학습할 때 사용된 x들의 평균 코딩(가운데 은닉층의 값)과 표준편차 코딩을 구하여 가.. (20) 어텐션과 트랜스포머 오늘은 자연어처리 분야에서 혁신적인 아이디어로 큰 기여를 한 두가지 기술인 어텐션과 그를 이용한 트랜스포머를 다루도록 하겠습니다. 먼저 어텐션부터 알아보도록 하겠습니다. 어텐션은 이름에서 알 수 있듯이 각 인코더의 상태 중 집중해야 할 상태에 집중을 합니다. 기존 RNN의 인코더-디코더 구조를 이용한 기계 번역의 예시를 보도록 하겠습니다. Encoder로 들어간 문장 중 어떤 한 단어가 어디에서 번역될지 학습하는 데에는 오랜 시간이 걸리게 됩니다. 이 문제점을 해결하고자 한것이 바로 어텐션입니다. (어텐션의 역할이 어떤 위치에서 어떤 의미가 번역되어야 하는지 도와줍니다.) Encoder의 모든 단어에 대한 상태값을 이용합니다. 각 Decoder 타임스텝에서 어떤 단어에 집중해야 하는지 Encoder의 상.. (19) RNN 구조 인공신경망에는 다양한 신경망 아키텍처가 존재합니다. 그 중에 이번 글에서는 RNN(Recurrent Neural Network)이라는 신경망 아키텍쳐를 알아보도록 하겠습니다. RNN 구조는 시계열 데이터를 쉽게 다룰 수 있는 구조입니다. 예를 들어 주가 예측을 할 수 있고, 또 자연어처리 분야에서 번역을 할 수도 있겠네요. RNN은 기대하는 input의 길이가 없습니다. 즉 임의의 길이를 가진 sequence를 다룰 수 있다는 것입니다. 첫번째로 RNN 구조에 대해 알아보도록 하겠습니다. 위의 사진은 한 개의 뉴런으로 이루어져 있는 RNN 구조입니다. x(input)와 y(output) 그리고 그 다음 타임스텝에 전해지는 h(state)가 있습니다. 오른쪽은 RNN구조를 시간에 따라 펼친 모습입니다. 수.. (18) 컴퓨터 비전 컴퓨터 비전에는 크게 세 가지의 문제가 존재합니다. 크게 분류, 객체 탐지, 시맨틱 분할이 존재합니다. 컴퓨터 비전은 CNN이라는 신경망 아키텍처를 기반으로 많이 발전되고 있습니다. CNN은 합성곱 신경망(Convolutional Neural Network)으로 합성곱 층과 풀링 층이 존재합니다. David H. Hubel과 Torsten Wiesel은 1958년 시각 피질의 구조에 대한 연구를 진행하였고, 시각 피질 안의 뉴런이 국부 수용장(시야의 일부 범위 안에 있는 시각 자극에만 반응한다는 것)을 가진다는 것을 알아냈습니다. 이를 이용하여 인공신경망에서도 각 뉴런들이 국부 수용장을 갖게 한 것이 CNN입니다. 합성곱 층에서는 input image에 일정 크기의 filter를 stride 간격으로 연.. 이전 1 2 3 4 ··· 6 다음