본문 바로가기

전체 글

(112)
[논문 리뷰/컴퓨터비전] Vision Transformer(ViT) Abstract Transformer는 자연어처리 분야를 완전히 장악한 표준 모델이 되었으나 컴퓨터 비전에서는 Transformer의 활용이 제한적이었다. 비전에 self attention을 적용하려는 이전 연구들은 convolutional network와 함께 사용하거나 convolutional network의 전체 구조에서 몇몇 요소들만 대체하는 식으로 사용되었다. ViT는 CNN에 의존하지 않고 순수한 transformer가 image patch의 시퀀스에 다이렉트로 적용되어 image 분류 task에서 좋은 성능을 보일 수 있음을 밝혔다. 큰 데이터셋에 pre-trained 시킨 후 작거나 중간의 image recognition 벤치마크 데이터셋에 전이 학습을 할 때 ViT는 기존 CNN SOTA..
[논문 리뷰/컴퓨터비전] FaceNet Abstract & Introduction 각각의 얼굴 이미지를 128차원으로 임베딩하여 이미지에 대한 feature를 구한 후 유클리드 공간에서 임베딩 간 거리를 구한다. 즉, 각 이미지의 임베딩 결과의 거리를 이미지 간 유사도로 사용하여 Face Recognition과 Clustering을 하는 모델이다. 기존 얼굴 인식 접근 방법은 CNN을 사용하여 classification layer를 학습한 후 중간 단계 레이어의 출력값을 사용하였는데, FaceNet은 triplet loss를 통해 임베딩 자체를 다이렉트로 최적화하여 CNN을 훈련한다. 임베딩을 계산한 후 다이렉트하게 task를 해결하는데, Face Verification(두 사람이 같냐 다르냐?)은 두 임베딩 사이의 거리에 threshold를..
[Hadoop] 하둡 jps 명령어 실행 시 datanode가 보이지 않을 때 jps 명령어 실행 시 다음과 같이 NameNode, ResourceManager, DataNode, SecondaryNameNode, NodeManager 5개의 프로세스가 모두 떠야 정상이다. 그런데 오랜만에 다시 하둡을 실행하니 DataNode가 뜨지 않았다. DataNode가 뜨지 않을 때 해결 방법은 다음과 같다. 먼저 stop-all.sh를 통해 하둡을 끈 후 하둡 폴더 중 dfs 폴더에 있는 data 폴더를 삭제시킨다. 그리고 data 폴더를 새로 생성한다. 다시 start-all.sh를 실행하고 jps 명령어를 입력하니 DataNode 포함 5개의 프로세스가 모두 정상적으로 뜨는 것을 확인할 수 있다.
[백준/Python] 타임머신 문제 N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다. 각 버스는 A, B, C로 나타낼 수 있는데, A는 시작도시, B는 도착도시, C는 버스를 타고 이동하는데 걸리는 시간이다. 시간 C가 양수가 아닌 경우가 있다. C = 0인 경우는 순간 이동을 하는 경우, C < 0인 경우는 타임머신으로 시간을 되돌아가는 경우이다. 1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다..
[백준/Python] 트리 순회 문제 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 가 된다. 입력 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로..
[프로그래머스 Level2/Python] 더 맵게 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scovil..
[백준/Python] 에라토스테네스의 체 문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N, max(1, K) < N ≤ 1000) 출력 첫째 줄에 K번째 지워진 수를 출력한다. 예제 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는..
[백준/Python] 선수과목 문제 올해 Z대학 컴퓨터공학부에 새로 입학한 민욱이는 학부에 개설된 모든 전공과목을 듣고 졸업하려는 원대한 목표를 세웠다. 어떤 과목들은 선수과목이 있어 해당되는 모든 과목을 먼저 이수해야만 해당 과목을 이수할 수 있게 되어 있다. 공학인증을 포기할 수 없는 불쌍한 민욱이는 선수과목 조건을 반드시 지켜야만 한다. 민욱이는 선수과목 조건을 지킬 경우 각각의 전공과목을 언제 이수할 수 있는지 궁금해졌다. 계산을 편리하게 하기 위해 아래와 같이 조건을 간소화하여 계산하기로 하였다. 한 학기에 들을 수 있는 과목 수에는 제한이 없다. 모든 과목은 매 학기 항상 개설된다. 모든 과목에 대해 각 과목을 이수하려면 최소 몇 학기가 걸리는지 계산하는 프로그램을 작성하여라. 입력 첫 번째 줄에 과목의 수 N(1≤N≤10..