안녕하세요. 오늘은 영상 분류 관련 논문에서 필수적으로 사용되는 데이터셋인 ImageNet에 대해서 알아보고 pytorch를 이용해서 DataLoader를 만들어보도록 하겠습니다. 1. ImageNet Dataset 소개 ImageNet Dataset은 MNIST, CIFAR, STL, SVHN 등과 더불어 같이 영상 분류에 있어 가장 유명한 데이터셋 중 하나 입니다. 하지만, ImageNet이 다른 영상 분류 데이터셋보다 더욱 유명한 이유는 데이터셋의 규모가 비교도 안될 정도로 거대하기 때문입니다. - MNIST : 0 ~ 9의 손글씨 $28 \times 28$ 이미지 데이터로 학습 60,000개, 시험 10,000개로 구성 - CIFAR-10/100 : 일반적인 객체 10개 또는 100개의 클래스로 ..
안녕하세요. 최근 Object Detection 관련 논문을 읽으면서 COCO 데이터셋을 많이 활용하는 것을 볼 수 있었습니다. 그런데 지금까지 한번도 Object Detection 코드를 짜보지 않아서 연습해보는 김에 pytorch를 이용해서 COCO DataLoader를 만들어보도록 하겠습니다. 1. Microsoft COCO Dataset Microsoft COCO Dataset은 Object Detection, Segmentation, Keypoint Detection과 같은 컴퓨터 비전에서 중요한 task들을 목적으로 학습 및 평가까지 할 수 있는 중요한 데이터셋 중 하나입니다. 특히, 많이 활용되는 데이터셋은 MS COCO 2017 데이터셋이죠. 일단, 데이터셋을 다운받아보도록 하겠습니다. 공..
안녕하세요. 지난 포스팅의 MMCV Segmentation 입문기 1에서는 MMCV Segmentation 라이브러리를 사용하기 위한 설치 과정과 제대로 설치되었는 지 확인해보는 시간을 가졌습니다. 오늘은 MMCV Segmentation을 사용하기 위한 기본적인 지식을 배워보도록 하겠습니다. 1. Training Model Example 기본적으로 MMCV Segmentation을 이용한 학습은 tools 폴더에 있는 dist_train.sh 파일을 이용해야합니다. 이와 함께 넘겨줘야하는 것은 가장 중요한 configuration 파일이죠. MMCV Segmentation은 이 configuration 파일로 모든 설정을 맞추어줄 수 있으니 이후에 더 자세히 알아보도록 하겠습니다. 기본적인 학습 코드는 ..
안녕하세요. 최근에 Segmentation 연구를 시작하면서 최신 논문들을 살펴보면 MMCV Segmentation이라는 라이브러리를 다들 애용하는 것을 볼 수 있었습니다. 그런데 저는 완전히 처음보는 라이브러리라서 해석하기도 어렵고 활용하는 것도 어려워서 이참에 블로그 글로 정리해서 두고두고 보도록 하겠습니다. ^^ 1. MMCV Project 먼저, MMCV는 OpenMMLab이라는 오픈소스 프로젝트팀이 만들어낸 새로운 딥러닝 라이브러리입니다. 기본적으로 Pytorch 기반으로 동작하기 때문에 기존에 Pytorch 유저시라면 보다 쉽게 활용해볼 수 있겠네요. MMCV는 심층신경망 모델을 학습 및 평가하는 데 있어 필수적인 요소들을 모두 다 갖춘 라이브러리라고 합니다. 실제로 segmentation에서..
안녕하세요. 지난 포스팅의 BOJ 7568번 : 덩치에서는 브루트포스 알고리즘을 이용해서 간단하게 문제를 풀어보았습니다. 오늘은 살짝 꼬아서 어려운 문제를 풀어보도록 하죠. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 브루트포스 제출 코드 N, M = map(int, input().split()) board = [input() for _ in range(N)] cnt_min = 9999 min_x, min_y = 9999, 9999 for x in range(0, N - 8 + 1) : for y in range(0, M - 8 + 1) : cnt_W, cnt_B = 0, 0 for i in range(8) : for j in range..
안녕하세요. 지난 포스팅의 BOJ 2231번 : 분해합에서는 입력된 숫자의 생성자의 개수를 찾는 문제를 풀어보았습니다. 오늘도 브루트포스를 활용한 쉬운 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 브루트포스 제출 코드 N = int(input()) spec = [tuple(map(int, input().split())) for _ in range(N)] for weight1, height1 in spec : cnt = 1 for weight2, height2 in spec : if (weight2 > weight1) and (height2 > height1) : cnt += 1 print(cnt) 해설 문제..
안녕하세요. 지난 포스팅의 BOJ 2798번 : 블랙잭에서는 브루트포스 알고리즘에 대한 간단한 설명과 함께 문제를 파이썬의 itertools 클래스를 이용해서 문제를 풀어보았습니다. 오늘도 브루트포스와 관련된 문제를 풀어보도록 하죠. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 브루트포스 제출 코드 N = int(input()) flag = 0 for i in range(1, 1000001) : temp = i sum = temp while temp != 0 : sum += temp % 10 temp //= 10 if sum == N : flag = 1 print(i) break if flag == 0 : print(0) 해설 이 문제는..
안녕하세요. 지난 포스팅의 BOJ 2447번 : 별 찍기 - 10에서는 재귀함수를 이용해서 별 찍기 문제를 풀어보았습니다. 오늘은 본격적으로 새로운 알고리즘인 브루스포스 (Brute-Force; BF) 알고리즘에 대해서 설명하고 이와 관련된 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 브루트포스 combination 함수 제출 코드 from itertools import combinations N, M = map(int, input().split()) numbers = map(int, input().split()) scores = sorted([M - sum(number) if M - sum(number) ..