[파이썬 opencv] 오픈 cv에서 yolov3 사용하는 방법 학습된 yolo(욜로) 모델을 가져오는 방법을 알아보겠습니다. 예제는 darknet으로 만들어진 욜로 모델을 기준으로 합니다. (이 글은 아래 포스팅을 읽고 왔다는 전제로 작성 되었습니다.) [파이썬 opencv] 오픈 cv에서 detection model 실행하는 방법 영상을 편집하는데 opencv 만한 tool이 없죠. 영상 편집과 object detection를 동시에 할 순 없을까요? 오픈 cv에서는 이미 만들어진 detection모델들을 로드하여 사용할 수 있습니다. 이 글을 읽기 전 선수 yeko90.tistory.com 1) 학습된 모델 다운로드 darknet에서도 cfg(환경파일)과 Weight 파일을 다운로드하여 사용하시면 되는데요. 해당 링크 접속 후 커서를 조금 내리면 아래와 같은 화.. 머신러닝,딥러닝/opencv 2022. 10. 26. [파이썬 opencv] 오픈 cv에서 detection model 실행하는 방법 영상을 편집하는데 opencv 만한 tool이 없죠. 영상 편집과 object detection를 동시에 할 순 없을까요? 오픈 cv에서는 이미 만들어진 detection모델들을 로드하여 사용할 수 있습니다. 이 글을 읽기 전 선수 지식 포스팅 [opencv] 그림 그리기 | 글자 쓰는 법 (+ 한글 사용 방법) 1) detection 모델 load 어떤 프레임워크로 만들어진 모델이냐에 따라 사용방법은 조금씩 다른데요. 기본적으로 첫 번째 인자에는 가중치 모델 파일 경로, 두 번째 인자에는 환경 파일(config파일)의 경로를 넣는 형태로 만들어집니다. 환경 파일은 모델을 어떻게 사용할지에 대한 가이드가 담겨 있는 파일입니다. 가중치 파일과 환경 파일은 어디에서 다운 받을 수 있을까요? 텐서플로우를 기준.. 머신러닝,딥러닝/opencv 2022. 10. 21. [머신 러닝 기초] 정밀도(Precision) vs 재현율(Recall) 개념 이번 포스팅에서는 모델 성능 평가를 하는 데 사용되는 지표인 정밀 /재현율에 대해 알아보겠습니다. 정밀도/재현율을 이해 하기 위해선 먼저 혼동 행렬(confusion matrix)에 사용되는 표현방식에 익숙해질 필요가 있는데요. 여기서 혼동 행렬이란 분류모델이 총 몇개 중에 몇 개 맞췄다정도로만 성능을 평가하는 게 아니라 좀 더 다양한 관점에서 성능을 평가하는데 도움을 주는 표 정도로 이해하시면 될 것 같습니다. 1) confusion matrix 표현방식 이해 이해를 돕기 위해 우리 문제가 암이 양성인지 음성인지를 맞추는 문제를 푼다고 가정하겠습니다. 여기서 아래 빨간 사각형 부분에서 Positive는 실제 양성인 케이스, Negative는 실제로 음성인 케이스를 의미합니다. 이어서 아래 파란색 사각형.. 머신러닝,딥러닝 2022. 10. 4. [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) 이번 포스팅에서는 아래와 같이 파이썬 opencv에서 제공하는 gui인 트랙바를 만드는 방법에 대해 알아보겠습니다. 1) 트랙바 디폴트 배경 설정 우선 트랙바 배경으로 검은 화면을 설정하고 싶은데요! 아래와 같은 코드로 검은 배경을 만들어보았습니다. output: 2) 트랙바 생성(cv2.createTrackbar) 트랙바를 생성하는데 사용되는 함수는 createTrackbar 입니다. 두번째 인자에 들어간 'image'는 트랙바를 띄울 창 이름을 의미합니다. 다시 말하면 트랙바를 생성하기 위해선 창을 먼저 생성해야 된다는 의미죠. 즉 아래와 같이 imshow()를 먼저 실행해서 창을 생성한 후 트랙바를 생성하는 방식으로 진행이 됩니다. 당연히 같은 창을 공유 해야하니까 둘다 'image'라는 같은 이름.. 머신러닝,딥러닝/opencv 2022. 9. 14. [파이썬 opencv] 두 이미지 합치는 방법(with 크기 다른 이미지) 이번 포스팅에서는 파이썬 OpenCV에서 아래의 사과 이미지를 오른쪽 하늘 배경에 넣는 것을 해보고 싶습니다. 이 글을 읽기 전 선수 지식 포스팅 [opencv python] 이미지 읽기(cv2.imread) | 컬러 , 흑백 1) 준비사항 이때 필요한 것은 3개의 이미지가 필요합니다. 이중 2개는 당연히 원본 사과 이미지와, 원본 하늘 이미지입니다. 나머지 1개는 바로 사과의 마스크 이미지인데요. 마스크 이미지란 아래와 같이 검은색과 흰색으로 구성된 이미지라고 보시면 됩니다. 여기서 포인트는 우리가 관심있어 하는 부분이 흰색이 되어야 한다는 점입니다. 이를 전문용어(?)로 A Region Of Interest 줄여서 ROI, 한국말로는 관심 영역이라고 합니다. 해당 마스크 이미지는 opencv 이진 영.. 머신러닝,딥러닝/opencv 2022. 9. 13. [opencv] 그림 그리기 | 글자 쓰는 법 (+ 한글 사용 방법) 이번 포스팅에서는 opencv 함수를 이용하여 그림 그리기 및 글자 쓰는 방법에 대해 알아보도록 하겠습니다. 먼저 그림 그리기에 앞서 그림을 그릴 도화지를 준비 해야겠죠? 아래와같이 500x 500x 3 shape의 하얀색 배경을 만들었습니다. 흰색 배경을 사용하는데 굳이 컬러 채널인 3채널을 이용한 이유는 추후 그림을 그릴때 사용되는 컬러를 입력받기 위해서 입니다. 1. 선그리기(cv2.line) output: 선은 cv2.line함수를 이용합니다. 2번째, 3번째 인자에 들어간 튜플 값은 두 점의 좌표를 의미합니다. 4번째 인자에 들어간 값은 컬러를 의미하는데요. B G R 순서로 설정되어있습니다. 우리 예시에서는 R 에 255가 채워졌으니까 도화지상에 빨간색 선이 그려진걸 알 수 있습니다. 마지막 .. 머신러닝,딥러닝/opencv 2022. 9. 6. Iou(intersection over Union) 개념 | 밑바닥 코딩 이번 포스팅에서는 객체 탐지 모델이 객체를 얼마나 잘 탐지하였는지 측정하는 지표로 사용되는 것중 하나인 iou에 대해 알아보도록 하겠습니다. 1) IOU 개념 아래 개 그림에서 파란색 사각형은 Ground Truth(정답) 가리키는 바운딩박스이고, 노란색은 우리 모델이 예측한 바운딩박스 입니다. 이를 단순하게 도식화 해보자면, 아래와 같이 표현할 수 있는데요. Ground Truth 와 예측의 겹친부분을 살구색으로 표현하였습니다. 이 부분을 교집합 즉 intersection 부분이라고 부릅니다. iou를 수식으로 표현 하면 아래와 같습니다. 정답 바운딩 박스와 예측 바운딩 박스의 합집합(union)을 분모에 위치시키고, 교집합(intersection)을 분자로 계산합니다. 만약 예측 바운딩박스와 정답 바.. 머신러닝,딥러닝/computer vision 2022. 8. 31. [오픈 cv python] 이미지 읽기(cv2.imread) | 컬러 , 흑백 이번 포스팅에서는 opencv를 통해 아래 양이미지를 읽는 방법에 대해 알아보도록 하겠습니다. //sheep.jpg 1) 이미지 읽기 이미지를 읽을때는 image read의 약자인 imread함수를 이용하는데요. 인자로는 읽어올 파일의 경로를 적어주면 됩니다. 2) flag 설정 공식문서에 보면 imread함수에는 flag라는 인자값이 있는데요. 이는 해당 이미지를 읽어 올때 컬러 이미지로 읽을지, 그레이스케일 이미지로 읽을지 정하는 것이라고 보면 됩니다. 가령 컬러 이미지로 읽고 싶다면 cv2.IMREAD_COLOR, 그레이스케일 이미지로 읽고 싶을땐, cv2.IMREAD_GRAYSCALE 을 두번째 인자로 넣어주면 됩니다. 참고로 cv2.IMREAD_COLOR은 숫자 1로, cv2.IMREAD_GRA.. 머신러닝,딥러닝/opencv 2022. 8. 30. [딥러닝 기초] Dense layer 이전 글에서는 하나의 뉴런에 input의 데이터 차원이 변경됨(스칼라,벡터,행렬)에 따라 어떻게 연산이 되는지 알아보았다면, 이번 글에서는 뉴런이 vector 형태일때, 즉 뉴런이 여러개일때 연산이 어떻게 되는지 알아 보도록 하겠습니다. (참고로 뉴런이 vector 형태로 모여있는 형태를 layer라 부르고 layer는 뉴런이라는 함수가 여러 개있는 형태이기 때문에 vector function이라 불릴 수 있습니다.) Notation 정리 입력 데이터 1개일 경우 첫번째 input 데이터가 1번째 뉴런(첫번째 레이어에 속하는)에 들어가면 아래와 같은 연산 결과가 나옵니다. 다른 예로 아래와 같은 상황이라면, 이런식으로 각각의 뉴런마다 벡터연산을 모두 진행하는건 상당히 비효율적입니다. 이보다 각각의 벡터 .. 머신러닝,딥러닝/딥러닝 2022. 4. 20. [딥러닝 기초] Artifitial Neuron (with numpy) 딥러닝하면 아래와 같이 복잡한 그림들을 떠올릴수 있을텐데 (동그라미들을 우리는 뉴런이라고 부르고 뉴런들이 모여있는 각 열들을 layer라고 부른다.(초록색 동그라미들은 데이터이기때문에 제외) 이러한 복잡한 연산을 이해하기위해선 가장 기본 단위인 뉴런에서 어떻게 연산과 동작이 일어나는지 이해해야 합니다 이를 위해 가장 단순한 하나의 뉴런을 관찰하면서 조금씩 복잡한 연산과정을 이해해보도록 하겠습니다. 1. 스칼라 연산 1) 수학적 정의 input data(x)가 뉴런($\nu$)를 통과하여 연산 후 출력값(a)를 내뱉는 간단한 형태입니다. 이 뉴런 내부에서는 그림과같이 두개의 연산을 하는데 , $f(x;w,b)$는 affine연산 $g(z)$는 activation연산이라 합니다. x가 xw+b라는 함수를 통.. 머신러닝,딥러닝/딥러닝 2022. 3. 23. konlpy 설치 오류 해결 방법(jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found) 많은 블로그에서 하라는대로 환경 변수를 설정했는데도 아래와 같은 에러가 발생하시는분들이 많이 있을겁니다. 이를 해결 하기 위해먼저 정말 환경 변수가 잘 설정되었는지 확인 해야 합니다. print('JAVA_HOME' in os.environ) 혹시 False가 나오나요? 아래와 같이 환경변수를 설정하셨어도 False가 나온다면 잘 설정된 것이 아닙니다. 이를 해결하기위해 코드상에서 강제로 환경변수를 설정합니다. os.environ['JAVA_HOME'] = r'C:\Program Files\Java\jdk-17.0.2\bin\server' 다시 아래 코드를 작성하여 True를 확인하신다면 정상적으로 작동이 되실겁니다. print('JAVA_HOME' in os.environ) # 참고 테스트 환경 : p.. 머신러닝,딥러닝/NLP 2022. 3. 18. [scikit-learn]데이터를 scaling할때 왜 train 데이터의 값만 fit 하는걸까? 많은 분들이 데이터 컬럼간 단위 차이가 클때 스케일링을 하시는데요. 아마 아래 코드와 같이 train데이터만 fit을 하고 나머지 데이터(validation, test data)는 그냥 transform만 하는 걸 많이들 보셨을 겁니다. 왜 이렇게 해야할까요? from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(train_data) train_data = scaler.transform(train_data) val_data = scaler.transform(val_data) test_data = scaler.transform(test_data) 간단하게 fit 과 transform 의 역할을 말씀 드리자면.. 머신러닝,딥러닝/딥러닝 2021. 12. 1. 이전 1 2 3 4 5 다음