80

[Python] 데코레이터 ( decorator )

데코레이터 데코레이터는 사용자가 기존 함수를 수정하지 않고, 새로운 기능을 추가할 수 있는 Python 의 디자인 패턴이다. 데코레이터를 이해하기 전에 알아야할 가장 중요한 것이 있다. 바로, 파이썬에서는 함수도 객체라는 것이다. 함수가 객체이기 때문에 다음 3가지도 파이썬에서는 가능하다. - 함수를 변수에 담을 수 있다. - 함수를 파라미터로 전달할 수 있다. - 함수 안에서도 함수를 정의할 수 있다. 이 개념을 활용해 데코레이터 함수를 작성할 수 있다. 데코레이터 이해하기 데코레이터의 정의에서 사용자가 기존 함수를 수정하지 않고, 새로운 기능을 추가할 수 있다는게 어떤 의미일까? 인사를 하는 greeting 함수를 작성했다고 가정하자. def greeting(): print("Nice to meet ..

[PyQt5] QGraphicsScene 의 좌표 체계, QGraphicsView 과의 관계

PyQt5 로 툴을 개발하던 중 이해가 되지 않는 현상을 마주쳤다. 다음 과 같이 GraphicsScene 으로 도형을 그린 후, 똑같은 좌표 값을 이용해 다시 같은 자리에 도형을 그리려고 했다. 1. QGraphicsView 를 생성하고, view 에 도형을 그릴 수 있는 GraphicsScene 객체를 생성 2. GraphicsScene 에서 도형을 생성한다. 3. 생성한 도형의 좌표 x, y 값을 추출해 json 으로 저장한다. 4. json 파일을 다시 로드해 x, y 값에 맞는 GraphicsScene 도형을 그린다. 그런데 분명 A 도형의 좌표계를 똑같이 B 도형을 그렸는데, A 와 B 의 위치가 같지 않았다. 결론부터 말하면 GraphicsScene 와 QGraphicsView 간의 관계때문..

개발/기타 2022.07.15

Bayesian Neural Network 에 대해서

Acitve learning 을 공부하면서, data 혹은 model 의 uncertainty 값을 잘 활용하면 모델 성능을 높일 수 있다는 것을 배웠다. data uncertainty 개념은 상대적으로 잘 이해됐는데, model uncertainty 에 대해서는 잘 이해되지 않아서 쓰는 글 Model uncertainty 우리가 학습시킨 인공지능이 내놓은 prediction 값이 얼마나 믿을만한 값인지 어떻게 알 수 있을까 ? 어떤 모델이 결정을 내릴 때 그 값이 얼마나 확실한지 ( certain ) 알아야 실생활에 사용될 어플리케이션 ( 예를 들면 자율 주행 ) 에 사용 가능할 것이다. 또 모델이 어떤 부분에서 certain 하고 어떤 부분에서는 uncertain 한지를 알고 있다면, 이 차이를 고려..

[PyTorch] Batch Normalization 와 running_mean / running_var

PyTorch로 구현된 논문 코드 리뷰 중, 모델 레이어의 weight 들의 mean, std 계산을 다음과 같이 구현한 코드를 보았다. vector = torch.cat([ torch.mean(self.conv3.bn.running_mean).view(1), torch.std(self.conv3.bn.running_mean).view(1), torch.mean(self.conv3.bn.running_var).view(1), torch.std(self.conv3.bn.running_var).view(1), torch.mean(self.conv5.bn.running_mean).view(1), torch.std(self.conv5.bn.running_mean).view(1), torch.mean(self.c..

ActiveLearning

Active learning 이란 ? 인공지능이 데이터를 학습하려면 데이터, 그리고 GT 레이블 값이 있어야 하는데, 사람이 직접 레이블을 만들어야하기 때문에 비용이 굉장히 많이 든다. 그래서 나온 개념이 active learning 이다. unlabel 데이터셋에서 특정 기준을 통해 선별한 subset 만 사람이 레이블하도록 해 최소한의 비용으로 label 데이터셋을 구성한다. 이 프로세스를 반복해서 모델 성능을 점차 올려가는 것이 active learning 이다. Active learning 의 특징 (1) Query learning 환자가 아파서 의사한테 갔는데 아무말도 안하고 가만히 있으면, 의사가 환자의 질병이 무엇인지 알 수 없다. 따라서 의사가 질병을 진단하기 위해 여러가지 질문을 환자에게..

[논문리뷰] SPFCN: Select and Prune the Fully Convolutional Networks forReal-time Parking Slot Detection

SPFCN: Select and Prune the Fully Convolutional Networks for Real-time Parking Slot Detection Zhuoping Yu et al, 2020 IEEE Intelligent Vehicles Symposium (IV), Oct 2020, Pages 445-450 1. Introduction 차량에 탑재된 센서 기반 접근 방식을 사용해 주차 가능한 주차 슬롯을 찾는 것을 목표로 한다. 이 때, 시각적 방법을 사용해 주차 슬롯 내 라인과 모서리를 감지해 주차 슬롯을 찾는 것이 해당 논문의 목표이다. (1) Hourglass 구조를 통해 주차 구역을 탐지하는 방법, 해당 모델 구조와 intermediate supervsion 의 효과를 탐색한다..

[Python] 백준 24445번 - 알고리즘 수업 - 너비 우선 탐색 2

from collections import deque def bfs(graph, visited, start): q = deque([start]) visited[start] = 1 order = 2 while q: next = q.popleft() for n_idx in graph[next]: if visited[n_idx] == 0 : q.append(n_idx) visited[n_idx] = order order += 1 if __name__ == '__main__': n, m, r = map(int, input().split()) graph = [[] for _ in range(n+1)] visited = [0] * (n+1) for _ in range(m): a, b = map(int, input(..

[Python] 백준 24444번 - 알고리즘 수업 - 너비 우선 탐색 1

from collections import deque def bfs(graph, strt, visited): q = deque([strt]) visited[strt] = 1 order = 2 while q: node = q.popleft() for next in graph[node]: if visited[next] == 0 : q.append(next) visited[next] = order order += 1 if __name__ == '__main__': n, m, r = map(int, input().split()) graph = [[] for _ in range(n+1)] visited = [ 0 for _ in range(n+1)] for i in range(m): a, b = map(int, ..

[Python] 백준 1388번 - 바닥장식

n, m = map(int, input().split()) arr = [] for i in range(n): arr.append(input()) cnt = 0 for i in range(n): rows = arr[i].split('|') for r in rows: if r != '': cnt += 1 for j in range(m): temp = [] for k in range(n): temp.append(arr[k][j]) temp_str = ''.join(temp) if '-' not in temp_str : cnt += 1 else : cols = temp_str.split('-') for c in cols: if c != '': cnt += 1 print(cnt) 원래는 깊이우선탐색 문제를 풀려고..