[CV] ResNet-18로 특정 Image의 feature 추출하기 (PyTorch)
·
Computer Vision💖/Basic
오늘은 리부탈에서 사용했던 간단한 feature extraction 과정을 포스팅해보려고 한다. 리부탈 끝난 기념으로 여유롭게 포스팅을 하구있다 🥳🔥 우선 오늘 포스팅할 내용은 특정 Image 하나가 들어왔을 때, 이 image를 잘 나타내는 feature를 추출하는 pytorch 방법이다. 나의 경우에는 segmentation map의 feature가 필요했고, 단순 convolution layer를 쌓는 것보다 pretrain된 PyTorch 내장 모듈을 사용하는 것이 좋을 것 같다는 생각에 ResNet을 이용하게 됐다. 우선 간단히 ResNet-18부터 짚고 넘어가고, 어떻게 특정 image의 feature를 추출하는지 그 code를 소개해보려고 한다. # ResNet-18 우선 이 글을 읽는 독자..
[백준] 치킨배달(Python) - 구현 & 백트래킹
·
Algorithms 💻/BAEKJOON
# 문제 문제가 언뜻 보면 복잡해보이지만, 사실 M개의 치킨집을 선택하는 최적의 입지를 구하는 문제다. 여기서 최적의 입지의 기준이란 각 집으로부터 "치킨거리"의 합이 가장 작아지는 M개의 치킨집을 고르는 경우를 구하는 것 ! "치킨거리"를 구하는 공식 또한 인덱스를 기준으로 하기에 그렇게 어렵지 않다. # 입출력 # Idea # Code 우선 이 문제는 구현과 백트래킹으로 풀 수 있으므로, 구현으로 푸는 방법을 먼저 소개하겠다. itertools의 combination 함수를 이용하면 쉽게 구현 가능하다. """ 치킨 배달 - Combination으로 먼저 풀기 """ from itertools import combinations # 해당 치킨집 조합과 1들의 거리를 리턴하는 함수 def distanc..
[CV] Test-Time Domain Adaptation의 의미와 간단 정리
·
Computer Vision💖/Domain (DA & DG)
리뷰를 하다가 Test-Time Domain Adaptation (TTDA) 관련 paper를 보게됐다. 단순 DA 분야는 익숙한 분야이지만, Test-Time Domain Adaptation은 익숙치 않은 용어라 간단히 정리하고 넘어가려고 한다. # Domain Adaptation 우선 Domain Adaptation이란 서로 다른 distribution을 가진 두 도메인에 robust한 모델을 만드는 것을 목적으로 하는 분야이다. 여기서 주로 두 두메인은 source domain과 target domain으로 나뉘며, 서로 다른 데이터셋 분포를 가진다고 가정한다. 만약 source domain에서 학습된 모델을 target domain에 적용하려면 두 도메인은 분포가 다르기 때문에 당연히 문제가 발생..
[백준] 스타트와 링크(Python) - 백트래킹
·
Algorithms 💻/BAEKJOON
# 문제 문제가 복잡해 보일 수 있지만, 사실 아래와 같은 diagonal 하게 대칭인 능력치 행렬이 주어지면, 두 팀의 능력치 차이가 최소가 되도록 팀을 나누고, 그 최소값을 반환하는 문제이다. # 입출력 # Idea 이 문제는 생각보다 이해하기도, 아이디어를 생각하기도 어려웠던 문제다. 그럼에도 불구하고 내가 문제를 풀 때부터 계속 들었던 생각은 능력치 행렬은 대각선 대칭 행렬이라는 것! 이 점을 잘 이용하고 싶었는데, 풀이과정이 잘 생각나지는 않았다. 따라서 이 문제는 아래와 같은 아이디어로 접근하면 된다. 우선 내 가장 큰 고민은 DFS의 노드로 어떤 것을 넣을까였는데, 1부터 N까지 담긴 노드를 그냥 생성하고 이들로 visited 여부를 체크해 팀을 나눈다고 생각하면 편하다. 위 그림에서 노란색..
[PyTorch] torch-sparse, torch-scatter, torch-geometric 패키지 install 하기 + 오류 해결 방법
·
PyTorch👩🏻‍💻
GNN관련 코드를 보다가 원래 pip install torch-sparse만 해도 예전에는 설치가 잘 되었었는데, 어느 순간부터 이렇게 했더니 패키지 종속관계가 맞지 않는 문제가 발생해 설치가 되지 않았다. 아마 업데이트가 된 모양인데...! 생각보다 설치하는 과정이 까다로워서 블로그에 정리해보려고 한다. torch-geometric과 torch-sparse, torch-scatter 등은 무언가 dependency가 존재하는 패키지인 듯 했다. (나는 torch-sparse와 torch-scatter 패키지만 필요한 상황이었다.) 우선 torch-geometric의 공식 홈페이지인 이 곳에 방문하면, torch가 1.8.0 이상이면 다음과 같이 설치하라고 안내한다. > conda install pyg ..
[알고리즘] 수학 관련 알고리즘 Code - 에라토스테네스의 체, 유클리드 호제법
·
Algorithms 💻/Basic
기초적인 수학적 알고리즘의 코드를 모아놓은 간단한 포스팅이다! 소수를 구하는 알고리즘과 최대공약수를 구하는 알고리즘! 1. 에라토스테네스의 체 소수를 구하는 알고리즘 특정 배수를 지워가는 식으로 전개된다. def era(n): """ Input : 몇까지 탐색할지 Output : n까지 숫자 중 소수를 포함한 리스트 """ a = [False, False] + [True] * (n-1) primes = [] for i in range(2, n+1): if a[i]: primes.append(i) for j in range(2*i, n+1, i): a[j] = False # 배수를 지운다! return primes 2. 유클리드 호제법 최대공약수, 최소공배수 구하기 유클리드 호제법은 최대공약수를 구하는 알..
[백준] N-Queens 문제(Python) - 백트래킹
·
Algorithms 💻/BAEKJOON
# 문제 즉, 상하좌우 대각선으로 이동하는 N개의 퀸을 서로 부딪히지 않도록 배열하는 방법 수를 리턴하는 문제이다. 백트래킹의 전형적인 문제 유형이라고 한다. 아래의 예시처럼 말을 놓는 경우의 수는 하나의 경우의 수가 될 것이다. # 입출력 # Idea 우선 해당 문제는 백트래킹 문제로, DFS 방법으로 문제를 푸는 방법을 고안할 수 있다. (백트래킹에 대해 궁금하신 분들은 여기를 참고!) 특히 이 문제를 처음 봤을 때, 나는 다음과 같이 DFS노드를 뻗으면 어떨지 생각을 했다. 각 raw별 좌표를 노드로 놓고, Depth는 raw 단위가 되도록 노드를 뻗는 것이다. 특히 백트래킹은 유망한 노드(정답이 될 가능성이 있는 노드)이면 계속 DFS 탐색을 하고, 그렇지 않으면 탐색을 멈추고 위 depth의 노..
[CV] Adversarial Learning(적대적 학습)이란? + 응용
·
Computer Vision💖/Basic
오늘은 PointAugment paper를 읽다가 main 원리로 나온 Adversarial learning에 대해 포스팅해보려고 한다. 주로 적대적 학습이라고 하는데, 그냥 내가 이해한 내용을 간단히 정리해보려고 한다. (미팅준비로 인해... 자세한 포스팅은... 미뤄두겠다.) # Idea 우선 적대적 학습에서, 적대적(adversarial)이란 '서로 대립관계에 있는' 이라는 뜻이다. 흔히 들어봤을 GAN의 속 의미가 Generative adversarial networks 인데, 여기 들어가는 adversarial과 비슷한 의미라고 이해할 수 있다. GAN은 흔히 두개의 네트워크가 경쟁하며 학습하는 모델이라고 잘 알려져 있는데, Discriminator를 잘 속이기 위한 데이터를 Generator가..