목록딥러닝 (18)
Deep Learning study
오늘은 입대한 이래로 처음으로 읽어본 논문을 정리해보려고 한다. 이 논문은 captcha solver 를 GAN을 이용해 구현한 내용이다. 흔히 captcha는사이트 회원가입을할때 많이 볼 수 있을것이다. captcha 는 사람과 프로그램을 구별하기 위한 방법으로 위의 사진과 같은 형태를 가지고 있다. text를 프로그램이 인식하기 힘들도록 글자를 서로 overlap 시킨다던가 사이에 선을 그어놓고나 , 글자를 왜곡시키고 노이즈가 있는 배경을 사용하는 등의 방법을 사용한다. 이 논문에 따르면 이전에도 머신러닝을 사용한 captcha solver에 대한 연구들이 있었지만, 사람의 손을 많이 타고 (데이터 라벨링, 데이터 수집, 전처리 등..) 많은 데이터를 수집해야하는 등의 불편함이 있었다고한다.이런 말을..
이제 연구실도 나왔고 어떻게 하면 GPU를 사용해서 딥러닝 공부를 계속 할 수 있을까 찾다가 colab을 발견하고 사용하려고 한다 ㅎㅎ 1. 구글 드라이브에 들어가기 구글 드라이브에 들어가면 왼쪽 상단에 [새로만들기]라는 것이 보일것입니다. 그것을 눌러주면 위와같이 나오고 거기서 [연결할 앱 더보기]를 클릭해 줍니다. 2. colaboratory 연결하기 [연결 할 앱 더보기]를 클릭해서 나온 창에서 [colaboratory]를 검색한후 [연결하기]를 눌러줍니다. 3. colab 시작하기 이제 다시 [새로만들기]를 누르면 [colaboratory]가 생성된 것을 볼 수 있습니다. 그리고 그것을 클릭 해 줍니다. 그러면 jupyter notebook 과 유사한 창이 뜨게 됩니다. 4. GPU 사용하기 go..
저번에 흥미를 가져 읽어보았던 Generative Adversarial Nets에 대해 정리를 해봐야겠다. 수식은 최대한 생략하고.. 바탕이되는 내용과 이해중심으로? 이 논문을 찾아보게된 이유는 공부를하다 문득 Colorization이라는것을 보게되었는데 너무 재미있어보여서 찾다 찾다보니 여기까지 오게된것같다. 먼저 논문을 보면서 GAN에 딸린 Adversarial 이란 것에 의문을 많이 가졌었는데, GAN을 구조를 모르기때문에 '상반된' 이라는 것이 무엇을 의미하는지 감이오지 않았기 때문에 그랬던것 같다. Adversarial이라고 쓰는 이유를 살펴보자면 GAN에서는 Generator(G) 와 Discriminator(D) 라는 상반된? 대립적인? 모델을 사용하기 때문이다. 말 그대로 Generator..
이전에 3번의 시도에 거쳐서 했던 실험을 끝내려고 한다 최종으로 만들어낸 모델을 살펴 보자. 사실 음.. 전에 것과 별반 차이는 없는것 같다.. Generator 내가 구성한 모델은 다음과 같다. 흑백이미지를 노이즈와 합쳐준것을 input으로 넣어준다. Conv layer 와 maxpool 로 이미지를 encode 한다 (encode한다는 말이 맞는건지는 잘 모르겠다.) 그런다음 maxpool layer를 거치면서 줄어든 사진크기를 deconvolution 으로 decode 하면서 크기를 복원시켜나간다. decode 하는 과정중에 encode 과정에서의 output을 계속해서 더해줬는데 , 저 과정 없이 실행을 했었더니(trial2) 형체를 알아보기 힘든 모양이 나왔다. 그래서 원래 이미지의 모양을 잊지..
Black & White 이미지를 Color 로 바꾸는 모델을 만들기 위해서 GAN 이라는 모델을 이용할 것이다. 사실 처음에는 그냥 단순한 ConvNet으로 해결하려 했지만 성능은 참담했다. 흑백이미지를 input으로 학습을 시켰을때, Color이미지를 만들어내는것이 아니라 원래 이미지보다 약간은 흐린 갈색 이미지가 나오게 되는 것 이였다. 그래서 찾다가 찾다가 , GAN 을 알게되고 공부해 보았다. 첫번째로 만들어낸 모델은 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667class Generator(nn.Module): def ..
며칠간 재미있는 대화 데이터를 가지고 대화모델을 만들어 보았다. source.txt 거울 보면 본인이 잘생겼다는 생각이 드나요? 너만 자꾸 생각나 생일 축하해! 너무 더워서 숨이 턱턱 막혀 주말에 뭐하지? 짜증나 ... target.txt 당연하죠. 전 거울을 볼 때마다 스스로 잘생겼다는 생각을 해요 나도 그래. 내 머릿속은 항상 너로 가득 차 있어. 생일 축하해줘서 고마워 많이 더우신가 봐요. 서핑? 이번 주말에는 날씨가 좋대~ 뭐가 짜증 나시는지 들어드릴게요. 얘기해보세요 ... 대충 이런대화모델! 전체적인 코드는 pytorch tutorial을 보고 만들었다 12345678910111213141516from __future__ import unicode_literals, print_function,..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816..
계속 검색하다가 transfer learning이 연관되어 나오는것 같아서 찾아보았다.그중 Resnet이 보이길래 그냥 resnet을 써 보았다. 12345678910111213141516171819202122232425262728293031323334353637net = models.resnet50(pretrained = True)num_ftrs = net.fc.in_featuresnet.fc = nn.Linear(num_ftrs,2)net.cuda() import torch.optim as optim criterion = nn.CrossEntropyLoss()optimizer = optim.SGD(net.parameters(), lr = 0.004) for epoch in range(45): runn..