반응형

OpenCV 90

[Open CV] 딥러닝활용 _ OpenCV DNN 얼굴 검출

객체검출과 관련있는 딥러닝 모델을 가져와서 OpenCV에서 실행하는 방법에 대해서 알아본다. 이번시간에는 딥러닝으로 얼굴을 검출하는 방법에 대해서 알아본다. OpenCV DNN 얼굴 검출 예제 - OpenCV 예제에서 DNN 모듈을 사용한 얼굴 검출 기능을 지원 > SSD ( Single Shot MultiBox Detector ) 기반 얼굴 검출 네트워크 > opencv/samples/dnn/face_detector at master · opencv/opencv · GitHub GitHub - opencv/opencv: Open Source Computer Vision Library Open Source Computer Vision Library. Contribute to opencv/opencv de..

Program/딥러닝 2022.07.25

[Open CV] 딥러닝 _ OpenCV DNN 모듈

OpenCV DNN ( Deep Neural Network ) 모듈 - 미리 학습된 딥러닝 모델을 이용하여 실행 ( forward pass, inference ) 하는 기능 ( 학습기능 X ) TensorFlow나 torch에서 학습된 Weight 파일을 가져와서 테스트 데이터로 실행을 할 수 있는 기능제공 - OpenCV는 C언어 C++로도 실행을 할 수 있는데 Python 에서 학습을 하고 학습된 결과를 C언어로 구성되어있는 프로그램을 만들때 OpenCV 모듈을 가져와서 사용하게 되면 편하게 exe파일을 만들 수 있음 - 학습은 지원하지 않음 - OpenCV 3.3버젼부터 기본 기능으로 제공 ( pip install 가능 ) - OpenCV 4.3 버전부터 GPU ( CUDA ) 지원 ( 소스코드 직..

Program/딥러닝 2022.07.19

[Open CV] 딥러닝 _ 딥러닝 학습과 모델 파일 저장

텐서 플로우를 이용해서 필기체 숫자 학습하는 과정을 보고 학습된 결과를 pb파일로 저장하는 방법을 알아본다. Tensorflow로 필기체 숫자 인식 학습하기 - OpenCV DNN 모듈에서 이용할 목적으로 TensorFlow를 이용하여 필기체 숫자 인식을 하습하고, 그 결과를 pb 파일로 저장하기 - 네크워크 구조 : [Conv - Pool - Conv - Pool - FC - FC - FC ] -학습데이터 : MNIST 데이터 셋 Yann LeCun 교수가 필기체 숫자 인식을 위해 사용했던 데이터 셋 각각의 숫자는 28 x 28 크기의 0~1 사이의 실수값으로 구성된 영상 데이터 60,000개의 훈련용 영상과 10,000개의 테스트 영상 - 준비 사항 TensorFlow 1.13.1 설치 > pip i..

Program/딥러닝 2022.07.18

[Open CV] 딥러닝 _ CNN 이해하기

딥러닝에서 영상을 다룰 때 필수적으로 사용되고 있는 CNN이라는 구조에 대해서 알아본다. 컨볼류션 신경망 ( CNN : Convolutional Neural Network ) - 영상 인식 등을 위해 필수적으로 사용되고 있는 딥러닝에 특화된 네트워크 구조 - 일반적으로 레이어가 많이 들어가있으면 딥러닝이라고 할 수 있기는 하지만 영상쪽에서는 특히 CNN구조가 들어가야지만 딥러닝이라고 하는 인식을 갖고있음 - 일반적 구성 : 컨볼루션 ( convolution ) + 풀링( pooling ) + ... + 완전 연결 레이어 ( FCN ) ( 완전 연결 레이어는 없는 경우도 있음 ) Convolution 이라는 용어는 예전 필터링을 배울때 나왔었던 용어이기도 합니다. https://opencv-master.t..

Program/딥러닝 2022.07.17

[Open CV] 딥러닝 _ 딥러닝이해하기

딥러닝 ( Deep Learning ) 이란? - 2000년대부터 사용되고 있는 심층 신경망 ( deep neural network ) 의 또 다른 이름 영상쪽에서 딥러닝이 알려진 것은 AlexNet 으로부터 시작되었고 우리가 모두 잘 알고있는 Alpha Go 에서부터 딥러닝이 일반적인 용어로 불리게 되었다. 머신 러닝( ML ) vs. 딥러닝 ( DL ) 영상을 위주로 머신러닝과 딥러닝의 차이점을 설명하자면 머신러닝 은 입력영상에서 Feature 을 추출해서 영상을 분석 및 비교한다. 이전 머신러닝 강의에서 배웠던 HOG로 특징벡터를 추출해서 SVM 알고리즘에 대입하는 방식으로 영상의 어떤 특징을 추출하여 머신러닝 알고리즘으로 클래스를 구분, 나누는 방식이다. 이 말은 즉슨, 머신러닝을 잘 사용하기 위..

Program/딥러닝 2022.07.16

[Open CV] 머신러닝 _ 실전코딩 _ 문서 필기체 숫자 인식

이번 시간은 문서에 표현된 필기체 숫자 인식에 대해 알아본다. 문서에서 필기체 숫자 인식 - 문서를 촬영 또는 스캔한 영상에서 필기체 숫자를 인식하는 프로그램 구현할 기술 - 각 숫자의 부분 영상 추출 Labeling , FindContour 함수등을 사요앟면 어렵지않게 찾아낼 수 있다. 레이블링 이용으로 각 숫자의 바운딩 박스 정보 추출 - 숫자 부분 영상을 정규화 과정을 거쳐 20x20 크기로 resize 어떤 형태로 resize를 해야지 SVM 또는 HOG 방법을 이용해서 정확도를 높일 수 있을지 생각해야한다. 숫자의 바운딩 박스 부분의 영상의 가로 / 세로 비율을 유지할 것 학습에 사용된 숫자 영상이 20x20 크기에 꽉 찬 형태가 아니므로 적절한 여백 유지 - HOG & SVM 방법으로 숫자 인..

[Open CV] 머신러닝 _ 숫자 영상 정규화

비지도 학습 k-평균 알고리즘에 대해 알아본다. k - 평균 ( k-meas ) 알고리즘 - 주어진 데이터를 k 개의 구역으로 나누는 군집화 알고리즘 - 지도학습처럼 해답을 주는 것이 아니고 데이터를 입력을 주고 임의의 기준으로 나눠주는 형태로 동작시키는 알고리즘 ( 머신러닝 이해하기글 참고 ) https://opencv-master.tistory.com/72?category=1092621 머신러닝 이해하기 (1) 본 포스팅은 패스트캠퍼스 OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지를 참고하여 작성하였습니다. 머신러닝 ( Machine Learning ) 이란? - 주어진 데이터를 분석하여 규칙성, 패턴 등을 찾고, opencv-master.tistory.com - 이 전 k-mean shif..

[Open CV] 머신러닝 _ 숫자 영상 정규화

이번시간에는 HOG과 SVM 알고리즘을 사용하여 숫자 인식을 하는 프로그램에서 숫자 영상을 정규화 하는 과정을 추가하여 성능을 향상시키는 방법에 관해 알아본다. HOG & SVM 필기체 숫자 인식 정중앙에 숫자를 쓰지 않을 경우? - digits.png 데이터를 80:20으로 나눠서 검증할 경우 정확도가 98.7% 이지만, 체감 성능은 훨씬 낮게 나타남 학습 데이터 영상 정규화 ( Normalization ) - 학습 데이터 영상과 테스트 데이터 영상의 위치, 크기, 회전 등의 요소를 정규화 ▶ 인식 성능 향상 * 여러개의 데이터를 분석할 일이 있을때 어떤 식으로 이 데이터들을 정규화 할지 고민해야한다. 숫자 영상의 무게 중심이 전체 영상 중앙이 되도록 위치 정규화 위 이미지를 보게되면 바운딩박스의 중심..

[Open CV] 머신러닝 _ HOG+SVM 필기체 숫자 인식

이번 시간에는 HOG알고리즘과 SVM 알고리즘을 조합해서 필기체 숫자를 인식하는 프로그램을 만들어본다. HOG알고리즘을 이용해서 필기체 숫자의 방향성정보를 추출하고 그 방향성 정보를 SVM 알고리즘을 이용해서 10개의 클래스로 나눠준다. 그리고 사용자가 숫자를 입력하면 해당 클래스를 비교하여 숫자를 인식하는 방법이다. 그럼 저번강의에서도 봤었던 digit 이미지 내부에있는 숫자를 분리해야하는데 해당 숫자들을 HOG알고리즘 사용을 위해 나눠주고 주황색 박스처럼 4개의 셀을 하나로 묶어주어 사용하면 셀 하나가 9개의 히스토그램 그래디언트 방향성 정보를 갖게된다. 그러면 나오게되는 500X324 크기의 행렬에서 SVM 알고리즘의 초평면에 의해서 클래스가 나뉘게 된다. SVM알고리즘은 기본적으로 2개의 클래스로..

[Open CV] 머신러닝 _ OpenCV SVM 사용하기

이번에는 OpenCV에서 SVM 알고리즘을 사용하는 방법에 대해서 알아본다. SVM 알고리즘을 사용하기 위해서는 SVM 객체를 먼저 생성해줘야한다. SVM 객체 생성 cv2.ml.SVM_create() -> retval - retval : cv2.ml_SVM 객체 SVM 타입 지정 cv2.ml_SVM.setType ( type ) -> None - type : SVM 종류 지정. cv2.ml.SVM_으로 시작하는 상수. SVM 커널 지정 cv2.ml_SVM.setKernel ( kernelType ) -> None - kernelType : 커널 함수 종류 지정. cv2.ml.SVM_으로 시작하는 상수 커널 타입에 관한 이미지를 OpenCV Documents에 들어가서 살펴보면 위와같은 이미지를 얻을 수..

반응형