본문 바로가기

개발/딥러닝

(19)
[논문 리뷰] NEfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (EfficientNet) ConvNet을 사용하는 네트워크들은 네트워크의 폭, 깊이, 해상도를 잘 바꾸면 모델의 성능이 향상된다고 합니다. 그럼 가장 성능이 좋은 값을 인공지능이 찾도록 하면 되지 않을까요? 이 논문은 여러 파라미터들을 잘 찾아주는 인공지능에 대한 것입니다.  접근법우선 문제에 대한 정의를 해 봅시다. i번째 Conv레이어는 다음과 같이 정의됩니다. $Y_i=F_i(X_i)$ $Y_i$는 출력 텐서, $F_i$는 연산, $X_i$는 입력 텐서입니다.입력 텐서는 (H_i, W_i, C_i)로 표현되는데 $H_i$는 너비, $W_i$는 높이, $C_i$는 채널 수입니다. ConvNet $N$은 $F_k\odot F_{k-1}\odot... F_1(X_1) = \bigodot_{j=1... k} F_j(X_1)$로 표..
[논문 리뷰] Neural Architecture Search: A Survey(NAS) Neural Architecture Search(NAS)는 인공지능을 만들어 주는 인공지능입니다. 보통 인공지능을 만들 때 모델을 만드는데 이 모델을 인공지능을 이용해서 만들어 보자는 것입니다. 이 인공지능의 컨셉과 발전 과정 집중해서 이야기해 보겠습니다.기본 전략3가지 개념을 알아야 합니다. search space : dense net, convolution, skip connection 등 여러 레이어가 있습니다.search strategy : search space를 어떻게 탐색할지 정합니다.performance estimation strategy : 찾은 아키텍쳐가 얼마나 성능을 내는지 구합니다. 직접 트레이닝해도 되고 퍼포먼스를 예측하는 알고리즘을 도입할 수 있습니다. search strateg..
[논문 구현] Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation(DeepLabV3Plus) deepLabV3Plus는 이전 논문들과 다르게 모델 구조가 살짝 복잡합니다. 그래서 모델을 구현하는 것에 중점을 맞출 것입니다. 이전에 사용한 논문을 다시 가져왔습니다. atros conv는 기존의 conv를 변형한 것입니다. tensorflow 에서는 DepthwiseConv2D에 dilation_rate 속성을 주어 구현할 수 있는데 귀찮으니 ResNet50을 그대로 가져다 쓰겠습니다.모델 구현우선 512,512,3 크기를 입력받는다고 하겠습니다. keras.applications에서 ResNet을 가져옵니다. weights는 초기 가중치, include_top은 마지막 dense 레이어를 포함하는지 여부, input_tensor은 입력 크기입니다. 저희 모델의 큰 그림은 아래와 같습니다.여기서 *..
[논문 리뷰] Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation(DeepLabV3Plus) 일반적인 segmentation에 대해 잘 동작하는 논문입니다. U-net과 비슷한 계열이라고 할 수 있습니다. U-net 비교했을 때 무엇이 달라졌는지 알아보겠습니다.목표U-net은 의료 데이터에서 시작을 했고 해당 데이터 특성에 맞는 로스 function을 사용했습니다. 하지만 이 논문은 네트워크 구조를 향상하는 것에 목표를 두었습니다. 그러기 위해 독특한 convolution을 제안합니다. 일반적인 conv 연산은 이전 레이어의 피쳐가 10개, 필터의 너비와 높이가 3*3이라 하면 10*3*3 크기의 필터 하나가 하나의 피쳐 맵을 형성 합니다. 하지만 이거는 연산이 너무 많습니다. 그래서 아래 구조의 convolution을 제안합니다. (b)는 필터의 너비와 높이를 1*1로 만든 것으로 기존의 co..
[논문 구현] You Only Look Once:Unified, Real-Time Object Detection(YOLO v1) 구현 모델 구현모델 구현 자체는 상당히 쉽습니다.우선 Conv 부분을 먼저 만들어 줍니다.아래와 같이 만들어 줍니다. 그리고 밑에 Dense를 사용합니다. 이때, gpu 메모리가 터진다고 경고를 할 때가 있는데 껐다 켜면 해결이 됩니다. 최종적으로 7*7*(3+5*2)로 나옵니다. 3은 클래스의 수입니다.로스로스를 구현해 보겠습니다. 우선 오브젝트가 있는 것과 없는 것으로 나눕니다. 오브젝트가 있는 각각의 셀을 박스 예측과 클래스 예측으로 나눕니다. 한 피쳐 픽셀 당 2개의 바운딩 박스를 예측하므보 5*2 개를 뽑아냅니다. 오브젝트가 없는 것에 대해 confidence score를 계산합니다. 예측한 바운딩 박스와 타겟의 바운딩 박스의 IOU를 구한 다음 가장 많이 겹치는 박스를 구합니다. 셀 당 2개의 박스..
[논문 리뷰] You Only Look Once:Unified, Real-Time Object Detection(YOLO v1) ssd와 마찬가지로 물체가 어디 있고 어떤 문체인지 판단하는 네트워크입니다. 모델이 상당히 간단하고 앵커박스가 없는 것이 특징입니다.  모델 구조 처음 448*448 크기의 이미지로 시작합니다. 이 이미지를 Conv2D를 이용해 7&7*30으로 줄입니다. 마지막 라벨에서는 7*7*30이 됩니다. 7*7은 피쳐의 크기입니다. 클래스가 20개고 각 피쳐픽셀 당 2개의 바운딩 박스가 들어있습니다. 각 바운딩 박스는 5개의 값으로 이루어 지는데요, 중심 좌표(x,y)와 너비와 높이(w,h)와 컨피던스 스코어(c)로 이루어져 있습니다. 그래서 각 피쳐픽셀 당 20+(5*2)=30개로 이루어 집니다. 이전에는 바운딩 박스마다 클래스를 주었는데요, 이번에는 피쳐픽셀 당 라벨이 정해집니다.백그라운드이 전에는 각 바운딩..
[논문 구현] SSD: Single Shot MultiBox Detector 로스 구현 우선 이 전에 만든 AnchorBox 레이어는 제거해 주도록 하겠습니다. 로스를 계산할 때 필요할 줄 알았는데 로스를 계산할 때가 아니라 데이터 전처리 단계에서 진행하는 것이 훨씬 좋을 것 같네요. 각각의 anchorbox마다 양성인지 아닌지, 양성이면 어떤 객체인지 IOU를 기반으로 전부 작성해 주고 loss를 계산해 줍니다. 이제 로스를 구현해 보겠습니다.논문에서는 smoothL1 로스를 사용했습니다. 로스는 다음과 같이 생겼습니다. -0.5 ~ 0.5까지는 $\frac {x^2}{2}$, 나머지는 $\left\vert x \right\vert - 0.5$ 를 사용합니다. 모든 곳에서 미분 가능하게 하기 위해서인 것 같습니다.아래와 같이 계산합니다. tf.를 사용해 줘야 나중에 학습이 가능합니다. 그..
[논문 구현] SSD: Single Shot MultiBox Detector 모델 구현 이제 SSD를 구현해 보겠습니다. 저는 이미지를 받으면 트럼프 카드의 위치와 카드의 색(빨강, 검정)을 찾아주는 인공지능을 만들 것입니다.  논문에서는 vgg-16을 Conv5_3 레이어까지 가져왔습니다. 아래 그림에서 D에 해당하는 부분입니다. 이 부분 먼저 구현해 보겠습니다. 여기서 he_normal은 가중치를 초기화 해 주는 방법 중 하나입니다. kernel_regularizer은 커널의 가중치가 너무 커지는 것을 막기 위한 것입니다. 해당 모델의 summary를 출력해 봅니다. 이 뒤 부분도 진행해 줍니다. 다행히 논문과 같은 구조가 나왔습니다. 이제 각 클래스 별 confidence와 위치를 가져올 것입니다. 이 값들은 c4_3, c7, c8_2, c9_2, c10_2, c11_2에서 Conv2..
[논문 리뷰] SSD: Single Shot MultiBox Detector Faster R-CNN에서는 학습하는 데에 여러 단계가 필요했습니다. 이 과정을 한 단계로 줄인 것이 SSD입니다.모델이 상당히 간단한 녀석이기 때문에 실제로 구현한다고 생각하면서 구현에 필요한 정보 기준으로 말씀드리겠습니다.기본 개념R-CNN에서는 selective search, faster-rcnn에서는 resion proposal network와 anchor box를 통해 물체가 있을만한 곳을 살펴보았습니다. 근데 selective search는 뭔가 정확하지 않을 것 같고 anchor box는 크기가 너무 정해져 있어 큰 물체와 작은 물체가 함께 있으면 둘 다 인식하기 어렵습니다.SSD에서는 같은 크기의 anchor box(논문에선 default box로 표현하는데 편의를 위해 anchor box..
[논문 리뷰] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks faster R-CNN은 R-CNN(https://codestudycafe.tistory.com/63)을 조금 더 빠르게 바꾼 모델입니다. R-CNN에서 어떤 것이 달라졌는지로 시작해 보겠습니다.무엇이 달라졌나?R-CNN은 2000개의 영역을 뽑아내고(resion proposal) 각 영역에 대해 CNN을 돌립니다. 그러면 CNN을 2000번 돌리게 되는데 이것을 한 번으로 줄였습니다.end-to-end 학습이 가능합니다. SVM을 제거해서 한번에 학습이 가능합니다.3개의 모델을 합쳐서 만들었습니다.(CNN, resion proposan network, fast R-CNN)어떻게 진행되나?다음 과정을 거칩니다.먼저 CNN을 통과시켜 feature map을 뽑아냅니다.resion proposal netwo..