CV(7)
-
[CV Study] Accelerating the Super-Resolution Convolutional Neural Network
Paper Link: https://arxiv.org/pdf/1608.00367.pdf Image super-resolution(SR) 태스크에서 SRCNN이 좋은 성능을 거두었지만 real-time 서빙을 하기에는 연산 비용이 너무 크다는 문제가 있다. 이 논문에서는 모래시계 모양의(encoder-decoder 구조를 생각하면 된다.) CNN 구조를 활용하여 기존의 SRCNN을 경량화, 가속화하는 것에 중점을 두었다. 이를 위해서 다음과 같은 3가지 방법을 취하였다. DCGAN, pix2pix 등에서 사용하는 transposed convolution(deconv)을 네트워크의 후반부에 활용하여, 저해상도(LR)의 입력 이미지와 고해상도(HR)의 출력 이미지 간의 매핑이 E2E로 학습가능한 네트워크 구조..
2020.07.05 -
[CV Study] ShuffleNet: An Extremely Efficient Convolutional Neural Network for M
MobileNet 논문의 제목인 "MobileNet: Efficient Convolutional Neural Networks for Mobile Vision Applications"과 ShuffleNet 논문 제목이 상당히 비슷한 것을 보면 알 수 있듯, ShuffleNet 역시 MobileNet처럼 보다 가벼운 모델을 만드는 데 중점을 두고 있으며 MobileNet 보다 뛰어난 성능을 보인다. MobileNet이나 GoogLeNet에서는 1x1 convolution(pointwise convolution)이 연산량과 파라미터 수를 줄이는데 효율적이어서 적극적으로 활용되었다. 하지만 Xception이나 ResNeXt의 op별 연산량을 살펴보면 1x1 conv에서 매우 많은 시간을 소요하고 있다는 사실을 ..
2020.06.14 -
[CV Study] MobileNet: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNet(MobileNet V1)은 모바일 기기에서 서빙 가능한 가벼운 모델을 만들겠다는 동기로 진행된 연구이다. MobileNet의 핵심은 연산량과 파라미터 수를 줄이는 역할을 하는 depthwise separable convolution이다. 사실 이것만 이해해도 MobileNet을 이해했다고 볼 수 있다. Depthwise Separable Convolution 위의 그림이 depthwise separable convolution이며, depthwise convolution과 pointwise convolution이 연속적으로 이어진 형태이다. 이러한 형태의 convolution이 어떤 이점이 있는 지를 살펴보기 위해 일반적인 convolution, depthwise convolution,..
2020.06.13 -
[CV Study] GoogLeNet: Going Deeper With Convolutions
Inception이라는 이름은 "Network In Network"에서 영감을 받아서 지어진 이름이다. 딥러닝 모델의 성능을 높이는 방법 중 하나는 모델 depth와 width를 늘리는 것이다. 하지만 이는 곧 더 많은 파라미터, 더 큰 용량, 더 많은 연산량, 오버피팅 가능성으로 이어진다는 문제가 있다.이 문제를 해결 하기 위한 방법 중 하나는 fully connected layer를 sparsely connected layer 구조로 바꾸는 것인데, dropout을 통해 정규화(regularization) 효과를 거두는 경우가 이에 해당한다. 하지만, CPU/GPU 특성상 non-uniform sparse data에 대해서는 효율적인 커널 연산이 어렵다는 문제가 있다. (연산량을 100배 줄이더라도 ..
2020.06.13 -
[CV Study] SqueezeNet: AlexNet-Level Accuracy With 50x Fewer Parameters and <0.5MB Model Size
Accuracy가 같다면 더 작을 모델일수록 (1) 서버 간의 커뮤니케이션을 줄일 수 있고, (2) 더 작은 대역폭(bandwidth)로도 서빙이 가능하고, (3) 한정된 메모리의 가속기에서 사용에 용이하다. SqueezeNet은 ImageNet에서 AlexNet과 동일한 수준의 accuracy를 유지하면서도 50배 더 적은 파라미터를 사용하고, compression 기법을 적용했을 때 AlexNet보다 510배 작은(
2020.06.11 -
[Operating System] Condition Variable
상호배제의 문제는 lock을 통해서 해결했지만, lock은 쓰레드 간에 lock을 얻는 순서를 정해줄 수 있는 기능은 없다. 이와 같은 ordering의 문제는 CV와 semaphore를 통해서 해결할 수 있다. CV란? CV란 말 그대로 조건이 만족되기를 기다리는 공유 변수를 의미한다. 뒤에서 살펴 보겠지만 CV가 쓰레드 간에 공유되는 state라는 점은 꼭 명심해야할 부분이다. Ex) 쓰레드에서 instruction 수행 이전에 컨디션이 만족 되었는지를 먼저 확인하고 싶은 경우가 존재한다. 예를 들어서 parent 쓰레드가 child 쓰레드가 완료되었는지(exit 했는지) 확인을 하고 싶은 경우에 join()을 사용한다. CV의 특징 1. 쓰레드 간 공유되는 공유 변수이므로 상호 배제가 되어야 한다...
2020.06.03