pytorch에서 Dataset을 다루는 방법과 DataLoader를 사용하는 방법에 대해 알아보겠습니다 https://tutorials.pytorch.kr/beginner/basics/data_tutorial.html 여기서 공부를 하였고 정리하였습니다. 1) 데이터셋 불러오기 - TorchVision Fashion-MNIST 데이터셋을 불러오는 예제를 하겠습니다. - Fashion-MNIST는 흑백의 28x28 이미지와 10개의 class 중 하나의 label로 구성되어 있습니다. - datasets.FashionMNIST() 입력 매개변수 root : train 또는 test 데이터가 저장되는 경로 train : train용 또는 test용 데이터셋 여부를 지정 True / False downloa..
전체 글
앞의 포스팅에 이어 텐서 조작 정리의 마지막 시간을 가지겠습니다. 포스팅은 밑의 출처에서 보고 공부한 것을 정리하였습니다. https://wikidocs.net/52846 7) 타입 캐스팅(Type Casting) - 텐서의 자료형을 변환하는 것을 타입 캐스팅이라고 합니다. lt = torch.LongTensor([1, 2, 3, 4]) print(lt) print(lt.float()) 출력 ) - bt라는 바이트 타입의 텐서를 만들었습니다. bt = torch.ByteTensor([True, False, False, True]) print(bt) 출력) - 바이트 타입의 텐서를 long과 float 타입으로 바꾸어 결과를 확인했습니다. print(bt.long()) print(bt.float()) 출력..
앞의 포스팅에 이어 텐서를 조작하는 방법을 알아보겠습니다! 포스팅은 밑의 출처에서 보고 공부한 것을 정리하였습니다. https://wikidocs.net/52846 4) 뷰(View) - 파이토치에서 텐서의 뷰는 Numpy에서의 reshape 같은 역할을 합니다. - 텐서에서 원소의 수를 유지하면서 텐서의 크기를 변경합니다. t = np.array([[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]) ft = torch.FloatTensor(t) print(ft.shape) 4 - 1) 3차원 텐서에서 2차원으로 변경 print(ft.shape) print(ft.view([-1, 3])) print(ft.view([-1, 3]).shape) 출력) - view([-..
이번 포스팅은 SVM 알고리즘에 대해 알아보고 OpenCV에서 어떻게 사용하는지 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.4.0/d1/d73/tutorial_introduction_to_svm.html GOAL - SVM이 무엇인지? - OpenCV에서 SVM의 사용 방법 Theory - What is SVM? - SVM(Support Vector Machine)은 레이블이 지정된 훈련 데이터가 주어지면 최적으로 데이터들을 분류하게 만드는 초평면(hyperplane) 출력 알고리즘입니다. - 빨간색과 파란색 두 클래스를 선형으로 분리 가능한 직선을 구하는 문제가 있을 때 위 그림처럼 다양한 선이 있음을 알 수 있습니다. 저 선..
이번 포스팅은 Watershed 알고리즘을 이용하여 Image segmentation을 하는 방법을 알아보고 OpenCV에서 어떻게 사용하는지 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.0.1/d3/db4/tutorial_py_watershed.html Goal - Watershed 알고리즘을 이용한 이미지 구분 - cv2.watershed() 사용 Theory - 밑의 예시처럼 grayscale 이미지를 픽셀 값 ( 0 ~ 255 )에 따른 분포도를 그려보면 값이 높은 부분과 낮은 부분으로 되어있습니다. - 여기서 값이 높은 부분을 봉우리로 값이 낮은 부분을 계곡이라 부르기로 하고 이렇게 만들어진 봉우리와 계곡에 물을 붓는다고..
이번 포스팅은 제가 OpenCV를 사용하면서 cv2.imread에서 type을 gray로 주는 것과 cv2.cvtColor에서 cv2.COLOR_BGR2GRAY를 주어 grayscale을 만드는 이미지의 차이를 알기 위해 정리해보았습니다. 목표 1) imread(img, 0)와 cvtColor(img, cv2.COLOR_BGR2GRAY)의 픽셀 차이 확인 2) 연산 처리 속도 차이 확인 실험 - OpenCV를 사용하다 보면 grayscale을 많이 사용합니다. 노이즈를 없애고 연산 속도를 올리면서 정확도를 향상하기 위함인데 imread(img, 0)으로 받아오는 grayscale과 cvtColor(img, cv2.COLOR_BGR2GRAY)로 얻는 grayscale의 차이를 확인하기 위해 여러 가지로 해..
앞서 thresholding 포스팅에 이어 Otsu's Binarization(오츠의 이진화)에 대해 알아보고 OpenCV에서 어떻게 사용하는지 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.5.2/d7/d4d/tutorial_py_thresholding.html Otsu's Binarization (오츠의 이진화) - 이전 thresholding 방법들은 임계값을 직접 설정해줘야 하며, 설정해주지 않더라도 계산하는 방법을 설정하였습니다. 하지만 영상은 조명에 따라 픽셀 값이 미세하게 변화합니다. 영상마다 사용할 수 있는 임계값을 자동으로 설정해주는 방법이 있는데 그중에 가장 유명한 Otsu's Binarization (오츠의 이진..
이번 포스팅은 Image Thresholding에 대해 알아보고 OpenCV에서 사용하는 threshold에 대해 알아보겠습니다. 포스팅 관련 내용은 아래에서 출처를 얻어 사용하였습니다. https://docs.opencv.org/4.5.2/d7/d4d/tutorial_py_thresholding.html Thresholding(스레시홀딩) - thresholding은 binary image(바이너리 이미지)를 만드는 대표적인 방법입니다. 바이너리 이미지는 검은색과 흰색만으로 나타내는 이미지이며 스레시홀딩이란 임계점을 기준으로 검은색(0)과 흰색(255), 두 가지로 나누는 것을 의미합니다. 바이너리 이미지를 만드는 이유는 1) 배경과 객체 구분 2) 관심 영역과 비관심 영역의 구분 mask도 바이너리 ..