전체 글

· AI/Pytorch
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..
· AI/Pytorch
앞의 포스팅에 이어 텐서 조작 정리의 마지막 시간을 가지겠습니다. 포스팅은 밑의 출처에서 보고 공부한 것을 정리하였습니다. 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()) 출력..
· AI/Pytorch
앞의 포스팅에 이어 텐서를 조작하는 방법을 알아보겠습니다! 포스팅은 밑의 출처에서 보고 공부한 것을 정리하였습니다. 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도 바이너리 ..
우준세
준세 단칸방