분류 전체보기 41

SegNet 간단 리뷰

SegNet Semantic Segmentation for Scene Recognition(장면을 다양한 개체의 구성 요소로 분할하는 작업) 을 위한 네트워크 Encoder와 Decoder로 나뉨 Encoder단에 VGG16을 사용 (FCL를 제외한 13개 convolution layers만을 사용) 메모리 사용량과 연산 속도 측면에서 효율적인 네트워크 [간단한 VGG16 리뷰] VGG 16 기존의 Network들 보다 층을 깊게 가져감 깊어지면서 분류 에러가 감소하는 것을 관찰 더 작은 크기의 kernel로 더 많은 covolution을 진행 → 파라미터의 개수가 줄어들어 학습의 속도가 빨라짐 그와 동시에 층의 개수가 늘어나면서 특성에 비선형성을 더 증가하며 성능 향상 → ex) [산출된 특성맵의 사이..

FCN 간단 리뷰

FCN (Fully Convolutional Networks) Semantic Segmentation 문제를 위해 제안된 딥러닝 모델 대부분의 Semantic Segmentation 방법론은 FCN을 기반으로 함 Semantic Segmentation 모델을 위해 기존에 이미지 분류에서 우수한 성능을 보인 CNN 기반 모델(AlexNet, VGG16, GoogLeNet)을 목적에 맞춰 변형시킨 것 이러한 변형 과정에는 크게 Convolutionalization, Deconvolution (Upsampling), Skip architecture 이 있음 위치 정보를 유지하기 위해 모든 FC-layer를 Conv-layer로 대체하는 방법 하지만 convolutionalization 이후의 feature m..

Semantic Segmentation - Part 1

이번에 진행하고 있는 CV 프로젝트를 위해서 공부하고 있는 개념들이나 모델들을 정리하는 겸 글을 적어보려 한다. 우리 프로젝트는 Segmentation과 Object Localization/Detection과 관련된 주제를 다루고 있다. 그래서 이에 대해서 공부하고 어떤 모델을 왜 선택했는지에 대해서 기록할 예정이다. 먼저, Segmentation에 대해서 알아보자. Before learning Semantic Segmentation What is Classification, Object Localization/Detection, Segmentation? Classification 하나의 인풋에 하나의 레이블만을 예측 Object Localization/Detection 물체의 레이블을 예측함과 동시에 ..

프로그래머스 코딩테스트 고득점 Kit : 완전탐색 - (프로그래머스 42839번 : 소수 찾기)

완전탐색 part에서는 크게 까다로웠던 문제는 없었던 것 같다. 이번 part에서는 다른 사람의 풀이 중 인상 깊었던 풀이가 있던 문제에 대해서 리뷰 하겠다. [문제 설명] 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 먼저 이 문제가 요구하는 게 무엇이고, 어떻게 접근할 지 생각해보자. 해당 문제는 '주어진 숫자들을 조합하여 만들 수 있는 소수의 개수를 반환' 하는 것을 요구하고 있다. 그렇다면 이를 어떻게 풀어나가야할까? 해당 문제는 최적의 방법으로 소수의 개수를 구할 수 없다. 즉, 주어..

프로그래머스 코딩테스트 고득점 Kit : 정렬 - (프로그래머스 42746번 : 가장 큰 수)

오랜만의 문제 리뷰인 것 같다. 오늘은 고득점 kit 정렬 part에서 좀 까다로웠던 문제에 대해 다뤄보겠다. [문제 설명] 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 먼저, 이 문제가 어떤 것을 요구하는지 어떤 방식으로 접근해야 되는지 살펴보자. 문제는 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하기를 요구하고 있다. 그렇다면 이를 어떻..

[파이썬] heapq 모듈 < import heapq >

[Heapq 모듈] - heapq heap 같은 경우는 해당 리스트에서 가장 큰 값을 뺄 때 시간 복잡도 및 효율성을 고려한 모듈이라 할 수 있다. 데이터를 저장 후 정렬하는 것이 아니라, 데이터를 저장하면서 정렬하기 위해선 이 heapq 모듈을 사용해야 한다. 하지만 중요한 점은 heap은 이진트리를 기반으로 정렬된다는 것이다. 즉, heap으로 정렬된 리스트는 엄밀히 말하면 완전히 정렬 되진 않는다. 자식노드가 부모노드보다 크기만 하면 되는 조건을 가지고 있기에 sorted함수 와는 다르게 정렬이 된다. 그래서 heap같은 경우 최대값과 최솟값을 구할 때 주로 사용된다. (또한, heap은 root가 최솟값이 되도록 설정 된다.) 특히나 반복적으로 리스트에 값을 집어넣거나 빼면서 최대, 최솟값을 구할..

공부/파이썬 2021.08.30

[파이썬] Collections 모듈 < import collections >

[Collections 모듈] - deque deque(데크)는 double-ended queue의 줄임말로 양방향에서 데이터를 처리할 수 있는 queue형 자료구조를 의미한다. 그렇다면 deque는 도대체 왜? 언제? 쓰는 것일까? deque는 스택이나 큐를 사용할 때 이용하면 일반적인 리스트보다 빠른 연산 속도를 제공한다. 즉, 시작점의 값을 넣고 빼거나, 끝 점의 값을 넣고 빼는 데 최적화된 연산 속도를 제공한다는 뜻이다. 리스트에서 push나 pop을 자주 사용해야 하는 문제가 있다면 deque를 사용하는 것을 적극 추천한다. [deque의 method들] 더보기 append(x) 데크의 오른쪽에 x를 추가 appendleft(x) 데크의 왼쪽에 x를 추가 extend(iterable) itera..

공부/파이썬 2021.08.26

프로그래머스 코딩테스트 고득점 Kit : 힙 part - (프로그래머스 42627번 : 디스크 컨트롤러)

힙 파트를 푸는 도중 난이도가 좀 있는 문제가 있어 기록하려 한다. 내가 풀었던 방식에 대해 설명하고 내가 막히고 잘못 풀었던 부분에 대해서도 설명하겠다. [문제 설명] 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 먼저, 이 문제가 요구하는 것이 무엇이고 이를 어떻게 접근해야 되는지 파악해보자. 일단 이문제는 '작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지'를 원하고 있다. 하지만 이 요구사항만 본다고 바로 접근 방식을 파악할 수 있는 것은 아니다. ..

프로그래머스 코딩테스트 고득점 Kit : 스택/큐

그다음으로 푼 문제들은 스택/큐 파트 부분이다. 이 부분에서 좀 까다로웠던 문제 하나를 소개하겠다. 내가 풀었던 방식에 대해 설명하고 다른 사람의 풀이 중 괜찮은 풀이 또한 설명하겠다. [문제 설명] 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 좀 까다로웠던 문제는 다리를 지나는 트럭이다. 일단 이 문제가 요구하는 게 무엇이고 어떻게 접근해야 되는지 알아보자. 먼저, 이문제가 요구하는 것은 무게, 다리의 길이, 다리의 최대 수용 트럭 무게가 주어진 상황에서 트럭이 순서대로 최단 ..

프로그래머스 코딩테스트 고득점 Kit : 해시

몇개의 기출들을 푼 뒤 이제 프로그래머스 코딩테스트 고득점 kit를 유형별로 모두 풀어보려 한다. 풀면서 괜찮은 문제나 다른 사람들의 괜찮은 풀이방식이 있다면 소개하겠다. 일단 먼저 해시(hash)파트이다. 해시 파트 같은 경우 문제들이 막 괜찮은 편은 아니라고 느껴서 (해시로 풀지않고 다른 방식으로 구현하는 것이 더 좋은 문제들도 있었음), 몇개의 문제에서의 풀이 및 새롭게 알게된 툴(?)들에 대해서 소개하고 다른 사람의 풀이 중 괜찮은 것들에 대해서만 소개하겠다. 먼저, 첫번째 문제같은 경우 해시로 풀기보다는 다른 방식으로 접근하기 보다는 sort를 이용하여 푸는 것이 직관적으로 이해가 더 쉽고 시간복잡도에 있어서도 효율적이였다. 사실 이문제에서 얻은 것은 collection 모듈이다. 다른 사람의 ..