목록AI (51)
Deep Learning study
view(*args) → Tensor view는 Tensor의 size를 바꾸어주는 역할을 한다 . 이건 다른것 보다는 예시를 보는게 이해가 빠를것 같다. y라는 tensor를 하나 준다. y를 y.size(1) * y.size(2) * y.size(0) 로 view한다. 결과는 아래와 같다. 마찬가지로 2*2*3 이였던 tensor를 3*4 tensor로 바꾸었다. 위의 y tensor를 4*3 tensor로 바꾸었다. view를 하는 방식은 tensor안에있는 값들을 차례대로 나열하여 다시 재배열 시키는 것 같다. 위의 y로 예를들면 1 1 2 2 3 3 4 4 5 5 6 6 을 4*3으로 만들려고 하면 1 1 2 / 2 3 3 / 4 4 5 / 5 6 6 이런식으로 자르는 것이다. 그리고 아직도 헷..
You Only Look Once: Unified, Real-Time Object Detection 오늘 정리할 것은 YOLO ~ YOLO 는 you only live once 라는 말로 잘 알고 있을 것 이지만, 여기서는 you only look once ! 뛰어난 작명 센스 ... 기존의 R-CNN에서는 region proposal 을 따로 찾고 bounding box 를 찾고 class 분류를 했다. 그러므로 region proposal 과정에서의 오버헤드가 컸기 때문에 성능향상에 어려움이 있었다. 하지만 YOLO는 grid방식을 이용하여 region proposal 의 오버헤드를 없앴다. grid 방식을 사용하면 그 grid cell 하나하나가 proposal 이 되기 때문에 오버헤드가 없어지는 ..
이번 포스팅은 YOLO를 읽기전에 한 번쯤 읽어보아야 할 것 같아서 간략하게나마 정리 보았다. R-CNN, Fast-RCNN , Faster-RCNN에 대해서 알아보자 R-CNN R-CNN은 Region proposals with CNN 의 줄임으로 이미지 안에 어떤 object 들이 있는지 찾아내는 것을 목적으로 한다. 먼저 input 이미지에서 2000개 정도의 subimage를 뽑아낸다. object들이 존재할 것 같은 부분을 잘라내어 주는것이다. 그리고 그 각각의 이미지들을 CONV net을 통과시키기 위해 알맞는 사이즈로 변환후 CNN을 통해 분류작업(classification)을 한다. 그 후에 SVM(support vector machine)을 이용해 각 object 들을 분류해준다. 또한 ..
저번에 흥미를 가져 읽어보았던 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 ..
class torch.nn.Sequential(*args)[source] 편하게 순차적으로 실행하도록 담는 container라고 생각하면 될 것 같다. 내가 했던것을 예를들면 x = self.conv1(x) x = self.dropout(x) x = self.pool(F.relu(x)) x = self.conv2(x) ... 뭐 이런식으로 썼다. 하지만 위의 함수를 쓰면 model = nn.Sequential( nn.Conv2d(....), nn.ReLU(), nn.Conv2d(20,64,5), nn.RELU() ) 이므로 forward() 에서 x = self.model(x) 만 써주면 된다. 깔끔하고 편리한 함수인것 같다. 이걸 왜 지금 알았을까 원문보러가기
class torch.nn.Upsample(size=None, scale_factor=None, mode='nearest')[source] input은 minibatch * channels * depth * height * width 이다, 하지만 2D에서는 4D Tensor만 있으면 된다. Size와 scale_factor는 같이 사용하면 의미가 명확하지 않기 때문에, 같이사용하지 않는다. size(tuple, optional) : output사이즈를 직접 설정해 준다. (Depth, Height, Width) scale_factor(int, optional) : Depth, Height, Width에 입력받은 정수 만큼 곱해준다. (1,1,2,2) 가 인풋으로 들어오면 (1,1,4,4)가 된다. mo..