반응형

분류 전체보기 823

[PyTorch] data augmentation(resize, flip, shift, brightness, contrast, gamma) 함수 정의하기

파이토치로 data augmentation 함수를 정의해보겠습니다. transformation.Compose 함수로 정의하면 쉽게 data augmentation을 사용할 수 있지만, 이 경우에 모든 dataset에 적용이 됩니다. custum dataset을 train과 val로 나눈뒤에 각각에 다른 transformation을 적용하기 위해 함수를 정의해서 사용합니다. 이번 포스팅에서 정의할 data augmentation은 resize, horizontally flip, vertically flip, shift, brightness, contrast, gamma, scale label) 입니다. 1. 이미지 resize 이미지를 resize 해줌과 동시에 label도 갱신해줘야 합니다. import..

[PyTorch] 이미지 크기와 바운딩박스 좌표를 resize 하는 함수 정의

image transformation을 수행함과 동시에 바운딩 박스 좌표(labels)도 갱신시켜줘야 합니다. 이미지의 크기를 변경하면 객체의 위치도 변경되기 때문에 바운딩 박스 좌표도 그에 맞게 변경하는 함수를 정의하겠습니다. AMD dataset은 AMD, Non-AMD 두 종류의 이미지가 있으며 크기가 다릅니다. 크기를 256x256으로 고정시키고, 그에 따라 바운딩박스의 중심 좌표(label)도 갱신시키는 함수를 정의해보겠습니다. AMD와 Non-AMD 이미지 입니다. 둘의 크기는 다르므로 256x256 크기로 일치시켜주겠습니다. import torchvision.transforms.functional as TF # create a data transformation pipeline for sin..

[PyTorch] single object image 분석

안녕하세요! Grand Challenge 에서 제공하는 ADM dataset으로 데이터를 분석해보도록 하겠습니다! amd.grand-challenge.org/ 여기에서 회원가입한 후 대회에 참가하면 dataset을 다운로드 할 수 있습니다..ㅎㅎ AMD dataset은 안구의 중심와(Fovea) 이미지와 Fovea의 중앙 위치(label)로 이루어져 있습니다. 우선, 다운로드 받은 label 엑셀 파일을 pandas로 불러와 확인해보겠습니다. import os import pandas as pd # loading Fovea_location.xlsx path2data = '/content/cookbook/MyDrive/data' path2labels = os.path.join(path2data, 'Trai..

[논문 읽기] Feature Pyramid Net, FPN(2017) 리뷰

FPN, Feature Pyramid Networks for Object Detection 논문을 읽어보고, 내용을 정리한 포스팅입니다. Abstract 스케일 불변성(scale-invariance)를 얻기 위해 Feature Pyramids를 사용하는 것은 필수적입니다. 하지만 Feature Pyramids는 많은 연산량과 메모리가 필요하여, detection 속도가 느려지는 문제점이 있습니다. 이를 개선하기 위해 제안된 방법이 FPN입니다. FPN을 Faster R-CNN에 사용하여 최고 성능을 얻었습니다. Different Architectures for Detection object detection 방법은 image를 CNN에 전달시켜 생성된 feature map을 이용합니다. 이미지의 해상도가..

[파이썬 알고리즘 인터뷰] 31. 상위 K 빈도 요소

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 31. 상위 K 빈도 요소 leetcode 346. Top K Frequent Elements 문제입니다. leetcode.com/problems/top-k-frequent-elements/ 풀이 1. 우선순위 큐 이용 파이썬에서 우선순위 큐는 heapq 모듈을 사용합니다. nums의 빈도수를 Counter 모듈로 저장한뒤에, heapq에 빈도수를 음수로 저장합니다. heapq는 최소합을 제공하므로 음수로 저장해야 합니다. k번 반복하여 heapq를 pop하면 빈도수가 많은 요소순대로 추출이 됩니다. def topKFrequent(self, nums, k): f..

Python/알고리즘 2021.03.05

[파이썬 알고리즘 인터뷰] 30. 중복 문자 없는 가장 긴 부분 문자열

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 30. 중복 문자 없는 가장 긴 부분 문자열 leetcode 3. Longest Substring Without Repeating Characters 문제입니다. leetcode.com/problems/longest-substring-without-repeating-characters/ 풀이 s를 enumerate로 index와 char을 하나씩 꺼냅니다. char에 해당하는 index를 dictionary에 저장하고, char가 이미 dictionary에 저장되어 있으면 중복 문자입니다. 이 경우에 start를 변경해줍니다. def lengthOfLongest..

Python/알고리즘 2021.03.05

[파이썬 알고리즘 인터뷰] 29. 보석과 돌

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 29. 보석과 돌 leetcode 771. Jewels and Stones 문제입니다. leetcode.com/problems/jewels-and-stones/ 풀이 1. 한줄 풀이 def numJewelsInStones(self, J, S): return sum(s in J for s in S) S에 있는 char을 하나씩 꺼내면서 J에 있는 char이면 True를 반환합니다. sum 함수로 True의 개수를 다 더합니다. 2. Counter 이용 def numJewelsInStones(self, J, S): freqs = collections.Counter(..

Python/알고리즘 2021.03.05

[확률론] 연속형 확률분포 - 정규 분포(Normal Distribution)

고려대학교 김성범 교수님의 확률/통계 강의와 교재 'Sheldon Ross, A First Course in Probability (10th edition)' 를 공부하고 정리한 내용입니다. 정규 분포(Normal Distribution) 정규분포는 가우시안 분포(Gaussian Distribution)으로 부르기도 합니다. 확률 변수 X가 정규 확률 변수거나 정규 분포를 따를 때, 확률 밀도 함수(pdf)는 다음과 같습니다. 모수(parameter)는 $\mu$(평균), $\sigma^2$(분산) 입니다. 모수는 확률 분포의 모양을 결정하는 중요한 수입니다. $\mu$ = 0, $\sigma$ =1 일때, 정규 분포는 다음과 같습니다. 위 분포에서 모수가 바뀌게 되면 분포의 위치와 모양이 변경됩니다. ..

수학/확률론 2021.03.05

[파이썬 알고리즘 인터뷰] 28. 해시맵 디자인

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 28. 해시맵 디자인 leetcode 706. Design HashMap 문제입니다. leetcode.com/problems/design-hashmap/ 풀이 연결 리스트로 구현한 해시맵입니다. 충돌을 처리하는 방법은 개별 체이싱입니다. class MyHashMap: # 초기화 def __init__(self): self.size = 1000 self.table = collections.defaultdict(ListNode) # 삽입 def put(self, key, value): index = key % self.size # 인덱스에 노드가 없다면 삽입 후 종..

Python/알고리즘 2021.03.04

[파이썬 알고리즘 인터뷰] 27. k개 정렬 리스트 병합

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 27. k개 정렬 리스트 병합 leetcode 23. Merge K Sorted Lists 문제입니다. leetcode.com/problems/merge-k-sorted-lists/ 풀이 우선순위 큐를 활용해서, 최소값에 해당하는 node.val을 추출하고, next가 존재하면 next.val를 우선순위 큐에 다시 넣어줍니다. 파이썬에서 우선순위 큐는 heapq 모듈을 사용합니다. def mergeKLists(self, lists): root = result = ListNode(None) heap = [] # 각 연결 리스트의 루트를 힙에 저장 for i in ..

Python/알고리즘 2021.03.04
반응형