반응형

전체 글 115

두 개 뽑아서 더하기

문제 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 numbers results [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] 입출력 예 설명 입출력 예 #1 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.) 3 = 2 + 1 입니다. 4 = 1 + 3 입니다. 5 = 1 + 4 = 2 + 3 입니다. 6 = 2 + 4 입니다. 7 = 3 + 4 입니다..

정수 제곱근 판별

문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. 나의 코드 def solution(n): import math a = int(math.sqrt(n)) for i in range(1, a+1): if (n == i**2): return (i+1)**2 return -1 math.sqr..

[Pytorch] torch.backends.cudnn.benchmark do?

torch.backends.cudnn.benchmark 코드는 True와 False로 설정할 수 있다. 이 코드의 역할은 다음과 같다. 내장된 cudnn 자동 튜너를 활성화하여, 하드웨어에 맞게 사용할 최상의 알고리즘(텐서 크기나 conv 연산에 맞게?)을 찾는다. 입력 이미지 크기가 자주 변하지 않는다면, 초기 시간이 소요되지만 일반적으로 더 빠른 런타임의 효과를 볼 수 있다. 그러나, 입력 이미지 크기가 반복될 때마다 변경된다면 런타임성능이 오히려 저하될 수 있다. https://discuss.pytorch.org/t/what-does-torch-backends-cudnn-benchmark-do/5936/7 What does torch.backends.cudnn.benchmark do? Does it..

우분투 alias 설정하기

우분투에서 다양한 명령줄 인터프리터를 치환할 수 있는 명령어를 의미한다. 즉, 자주 사용하는 명령어를 별명(alias)을 사용하여 치환하는 것을 의미한다. 1. 먼저 Command 창에서 alias를 입력한다. $ alias 사용자에 따라 현재 사용되고 있는 alias를 볼수 있다. 2. gedit을 이용하여 ~/.bashrc에서 추가한다. $ gedit ~/.bashrc * vim이나 다른 에디터를 사용해도 된다. 예시) command 창에서 abc를 입력하면, cd ~/heejin/pytorch 명령어가 실행된다. 명령어의 내용은 heejin폴더 밑에 pytorch 파일로 들어가는 것을 의미한다. alias abc='cd ~/heejin/pytorch' 3. 설정이 완료되면, 저장하고 명령어 창에 s..

참고 및 꿀팁 2020.11.10

[2020] RONELD : Robust Neural Network Output Enhancement for Active Lane Detection

Written by Zhe Ming Chng, Joseph Mun Hung Lew, Jimmy Addison Lee [Abstract] 정확한 차선탐지는 자율주행에서 중요한 Task이며, 최근 많은 방법들에서 Tusimple, CuLane와 같은 데이터 셋을 학습하여 사용한다. 각각의 학습데이터를 이용한 방법들은 좋은 정확도를 보이지만, 학습하지 않은(보지 않은) 데이터에 대하여 Performance가 상당히 떨어진다. 본 논문에서는 real-time Robust neural network output enhancement for active lane detection (RONELD) 방법으로 딥러닝 확률 결과 맵으로부터 active lanes들에 대해 식별, 추적, 최적화하였다. 우리는 먼저, 확률 결..

Tensorflow, Tensorflow-gpu 설치할 때 Cuda, Cudnn 호환성

Tensorflow, Tensorflow-gpu 설치시 버전 호환성은 다음과 같다. (Linux 기준) *Window, Linux, macOS는 아래의 글을 참고하시기 바랍니다. www.tensorflow.org/install/source#tested_build_configurations 소스에서 빌드 | TensorFlow 소스에서 TensorFlow pip 패키지를 빌드하고 Ubuntu Linux 및 macOS에 설치합니다. 명령어는 다른 시스템에도 적용될 수 있지만, Ubuntu 및 macOS용으로만 테스트되었으며 지원됩니다. 참고: 잘 테스트되고 www.tensorflow.org

참고 및 꿀팁 2020.11.06

ERFNet : Efficient Residual Fatorized ConvNet for Real-time Semantic Segmentation

Written by Romera, Jose M. Alvarez, Luis M. Bergasa and Roberto Arroyo [Abstract] 지능형 차량의 인식 요구사항을 통합된 방식으로 해결하는 것은 어려운 Task에 속한다. Deep Neural Network는 픽셀 수준에서 이미지의 여러 개체 범주를 분류하기 위해 End-to-End 학습을 수행하기 때문에 적합하다. 그러나, 고품질 성능, 제한된 리소스 간의 trade-off를 지키는 좋은 접근 방식이 존재하지 않기 때문에 실제 차량에서의 적용이 제한된다. 본 논문에서는 정확도 높은 실시간 딥 아키텍쳐를 제안한다. 우리는 뛰어난 정확도를 유지하기 위해 Residual connection과 factorized convolutions를 사용한 새..

RESA : Recurrent Feature-Shift Aggregator for Lane Detection

Written by Tu Zheng, Hao Fang, Yi Zhang, Wenjian Tang, Zheng Yang, HaiFeng Liu, Deng Cai Abstract Lane detection은 자율주행 분야에서 매우 중요한 Tasks 중 하나로, 복잡한 환경(Severe occlusion, ambiguous lanes, etc. )과 background에 비하여 드문 차선 픽셀등으로 인해 어려움을 겪고 있다. 따라서, 일반적인 CNN(Convolution Neural Network)방법으로는 lane feature를 얻기 힘들다. 본 논문에서는 일반적인 CNN을 통해 차선의 풍부한 특징들을 추출하고, 새로운 REcurrent Feature-Shift Aggregator(RESA)모듈을 이용하였..

[2018] Towards End-to-End Lane Detection: an Instance Segmentation Approach

Written by Davy Neven, Bert De Brabandere, Stamatios Georgoulis, Marc Proesmans, Luc Van Gool [Abstract] 현대의 접근 방식은 큰 Receptive Field로 인해 이미지에 차선 표시가 없는 경우에도 픽셀 단위 차선 분할을 위해 학습된 딥러닝 모델을 활용합니다. 이러한 장점들에도 불구하고, ego-lane과 같이 사전 정의된 차선이나 고정된 숫자의 차선들을 탐지하는 것에 제한된다. 본 논문에서는 이러한 문제를 보완하고자 각 레인에 대한 instance 분할 문제로 탐지해야 함을 제안하였다. End-to-End 방식을 사용하였으며 원영상에 탐지된 차선을 맞추기 전, 분할된 차선 인스턴스를 매개 변수 화하기 위해 고정된 "bi..

[2015] Flattened Convolutional Neural Networks for Feedforward Acceleration

Written by Jonghoon Jin, Aysegul Dundar & Eugenio Culurciello [Introduction] 빠른 Feed Forward 실행을 위해 설계된 평면화 된 컨볼루션 신경망을 제시하고자 한다. Parameter들의 중복성, 특히 컨볼루션 신경망에서 컨볼루션 필터의 가중치에 대해 광범위하게 연구되었으며 학습 후 필터의 Low rank 기반을 구성하기 위해 다양한 방법들이 제안되었다. 본 논문에서는 3D 공간에서 모든 방향에 걸쳐 연속적인 1차원 필터로 구성된 평면화된 네트워크를 학습시켜 기존 컨볼루션과 비슷한 성능을 얻었다. 기존 필터의 중복된(redundancy) 계산을 줄였고, 학습과정에서 3D 필터들을 1D 필터들의 연속된 3번 계산으로 달성할 수 있었다. (l..

[2016] ENet : A Deep Neural Network Architecture for Real-Time Semantic Segmentation

[Abstract] pixel-wise Segmentation in real time에서 큰 숫자의 floating point operation은 단점으로 여겨지며, 긴~ run-times로 인해 작동능력을 방해한다. 본 논문에서는 낮은 latency 연산으로 구성된 새로운 딥 뉴럴 네트워크 구조를 제안하였다. E-Net은 기존 대비 18배 이상 빠르며 75배 보다 적은 FLOPS, 79배 적은 파라미터 값을 가지고, 기존 모델에 비해 더 나은 정확도를 보이고 있다. CamVid, Cityscapes, Sun 데이터 셋에서 좋은 성능을 보였으며, 정확도와 네트워크 처리 속도 사이의 Trade-off가 존재한다. 우리는 임베디드 시스템에서 제안된 아키텍처의 성능측정을 제시하고, ENet을 더 빠르게 만들 ..

[2018] Bag of Tricks for Image Classification with Convolutional Neural Networks(part 2)

[Training Refinement] Cosine Learning Rate Decay 학습률에 대한 조정은 중요하다. 본 논문에서는 꾸준히 초기 학습률을 줄이는 전략을 사용하였다. 대부분의 논문에서 사용하는 전략은 기하급수적으로(exponentially) 감소시키는 전략을 많이 사용한다. He et al.은 30 epochs마다 0.1 rate를 감소시켰으며 "step decay"라고 부른다. Szegedy et al.은 2에폭마다 0.94를 감소시켰다. 이와 대조적으로 Loshchilov et al.은 cosine annealing strategy를 사용하였다. 단순한 version은 초기 값을 cosine 함수에 따라서 0으로 감소시키는 것이다. warm up 전략을 무시하고 전체 배치 수 t에서 ..

[2018] Bag of Tricks for Image Classification with Convolutional Neural Networks(Part 1)

Written by Tong He, Zhi Zhang, Hang Zhang, Zhongyue Zhang Junyuan Xie, Mu Li [Abstract] 최근 image classification 분야에서는 Data augmentations and optimization methods와 같은 학습 성능 개선 방안들이 발전하고 있다. 본 논문에서는 성능을 개선시키는 다양한 기법들에 대한 시험을 수행하였고, 최종 모델 정확도에 미치는 영향을 경험적으로 평가하였다. 이러한 개선사항들을 통해 ImageNet에서 ResNet-50의 Top-1 검증 정확도를 75.3%에서 79.29%로 높였다. 또한 Image Segmentation 정확도가 향상되면, 객체 탐지 및 Semantic segmentation과 같..

ImportError: libicui18n.so.55: cannot open shared object file

libicui18n.so.55 파일을 우분투 홈페이지에서 관련 패키지를 찾아보면, libicu55 로 나오며 이를 설치하면 해결된다. amd64의 list of files를 확인해보면, 다음과 같다. libicui18n.so.55 가 있는 것을 확인하였다. 따라서, apt-get을 통해 설치하면 해결된다. libicu55는 현재 ubuntu 16.04 Xenial까지 지원되지만 18.04 Bionic과 호환됩니다. sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt-get update sudo apt-get install libicu55 참고자료 https://packages.ubuntu...

참고 및 꿀팁 2020.08.10

[2018] ICNet for Real-Time Semantic Segmentation on High-Resolution Images

Written by Hengsuang Zhao, Xiaojuan Qi, Xiaoyong Shen, Jianping Shi, Jiaya Jia Abstract Real-time Segmentation 분야에서는 픽셀단위 라벨 추론에 대한 계산량을 줄이는데 있어, 어려움을 가지고 있다. 계층 단위 Multi-Resolution 브랜치들을 이용하여 적절한 label guidance 방법을 수행하였으며, 이미지 해상도에 따른 다양한 정보들을 Cascaded Fusion 하였다. 제안하는 방법은Cityscapes, CamVid, COCO-Stuff 등에서 빠른 속도와 high quality segmentation 결과를 보이고 있다. Introduction CNN-based Semantic Segmentation..

numpy.testing.assert_allclose

numpy.testing.assert_allclose(actual, desired, rtol=1e-07, atol = 0, equal_nan = True, err_msg='', verbose=True) actual과 desired에 비교하고자 하는 값을 넣고, actual값과 desired값이 atol+rtol * abs(desired) 값의 범위를 넘어가면 에러 메세지를 일으킴. *딥러닝 모델의 추론값을 서로 비교할 때 사용해도 좋음 참고자료 https://numpy.org/doc/stable/reference/generated/numpy.testing.assert_allclose.html https://jangjy.tistory.com/360?category=870456

Depth-wise Separable Convolution

기존 컨볼루션 연산은 두가지 분리 가능한 컨볼루션으로 나눌수 있다. 이러한 Separable 연산은 MobileNet이나 Xception 등에서 사용된다. Spatial Separable Convolution, Depth-wise Separable Convolution Spatial Separable Convolution(Depthwise) : 하나의 컨볼루션 연산을 공간적으로 나눈 방법이다. 예를 들어 3x3 컨볼루션 연산은 9 곱셈으로 한번의 컨볼루션 연산을 수행하는 대신, 동일한 효과를 얻기 위해 3x1, 1x3 곱셉으로 두번의 컨볼루션을 수행합니다. 곱셈이 적을수록 계산 복잡성이 줄어들고 수행 속도가 더 빠르다. 연산량의 비교 필터의 크기 : K, 입력의 채널 수 : C, 결과 채널 수 : M 기..

[2018] Pelee: Real-Time Object Detection System On Mobile Devices

Written by Robert J. Wang, Xiang Li & Charles X. Ling Git : https://github.com/Robert-JunWang/Pelee [Abstract] 컨볼루션 신경망이 제한된 Computing Power나 메모리 Resource를 가진 모바일 디바이스에서 동작하기 위해서는 효율적인 모델 디자인이 필요하다. 이에 MobileNet, SuffleNet, MobileNetV2과 같은 형태의 방법들이 제안되었으며, 대부분의 모델들은 효율적인 구현이 부족한 Depthwise separable convolution에 크게 의존하고 있었다. 우리는 기존의 컨볼루션 대신, 효율적인 구조의 PeleeNet를 제안하였다. 우리는 ImageNet ILSVRC 2012 데이터 ..

model.eval()과 with torch.no_grad()

pytorch 프레임워크에서 Train을 하거나 evaluation or Test를 수행할 때 자주 사용하게 되며, 함수간의 차이가 존재한다.혼동하기 쉬우니 구분해서 사용하기 바랍니다. model.eval() will notify all your layers that you are in eval mode, that way, batchnorm or dropout layers will work in eval mode instead of training mode. torch.no_grad() impacts the autograd engine and deactivate it. It will reduce memory usage and speed up computations but you won’t be able ..

반응형