분류 전체보기 189

opencv waitkey 설명

참고 url: https://stackoverflow.com/questions/51143458/difference-in-output-with-waitkey0-and-waitkey1/51143586#:~:text=waitKey(0)%20will%20pause%20your,from%20your%20webcam%20using%20cap. https://m.blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=chandong83&logNo=221613235354 opencv를 이용해서 script를 짜던 중, waitKey(1)를 넣었을때는 작동하던 코드가 이걸 빼니깐 작동하지 않는 걸 발견하였습니다. 궁금해서 찾아보니, waitKey(0)은 새로운 input이 들..

opencv 를 이용해서 rtsp 동영상 받기(ft. multithreading)

opencv를 이용해서 rtsp를 이용해서 영상을 받고, 그 영상을 display하는 코드 입니다. import os os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;udp" import numpy as np import cv2 as cv cap = cv.VideoCapture('rtsp://192.168.0.2:8554/') while cap.isOpened(): ret, frame = cap.read() # if frame is read correctly ret is True if not ret: print("Can't receive frame (stream end?). Exiting ...") break cv.imshow('frame',..

mAP란 무엇일까요? (ft. IOU)

yolov5 github : https://github.com/ultralytics/yolov5 참고 url : https://jonathan-hui.medium.com/map-mean-average-precision-for-object-detection-45c121a31173 yolov5 github를 살펴보면, mAP라는 개념이 나옵니다. mAP는 mean Average Precision의 약자이며, Precision은 positive 들에서 true positive rate을 말합니다. 즉, object detection의 경우에는, detection되는 bounding box를 말한다고 보면 됩니다. 그럼 average precision이란 어떤 걸 의미할까요? 이를 위해서는 IOU(Interse..

Precision과 Recall, 그리고 f1 score

참고 : https://jinmc.github.io/ds_blog/posts/ml_andrew_ng/wk6/ 오늘은 Precision과 Recall, mAP에 대해서 정리해보도록 하겠습니다. 예를 들어서, 100명의 사람과 10명의 암환자가 있다고 생각해 봅시다. 암환자 입장에서는, 무조건 암이 있다면 암이 있다고 진단을 받는게 좋을 것입니다. 10명의 암환자 중에서, 몇 명의 암환자가 진단을 받느냐가 중요하겠죠? 이걸 Recall rate이라고 합니다. 하지만 Recall rate만 중요시한다면, 100명의 사람을 모두 암에 걸렸다고 할 수 있겠죠? 하지만 그렇게 한다면, 제대로 된 진단이라고 할 수 없겠죠? 진단 결과를 너무 남발한다면, 사람들에게 정신적인 충격을 줄 뿐만 아니라, 검사 자체의 신뢰도..

Machine Learning 2021.06.03

Bias(편향)과 Variance(분산)

stanford university의 machine learning lesson 6 (Advices for machine learning application 관련 내용 정리): https://jinmc.github.io/ds_blog/posts/ml_andrew_ng/wk6/ 이 이론은 Machine learning에 있어서 가장 기본적인 내용 중에 하나 입니다. 가장 중요한 내용 중 하나이지만, 많이 봐도 헷갈리는 부분 중 하나입니다. 아마도 용어가 생소한 것도 그 이유 중 하나가 되지 않을까 싶습니다. 가장 쉬운 예부터 살펴보죠! 우리가 아는 가장 쉬운 예는 linear regression일 겁니다. 하지만 linear regression은 경향성을 보여줄 순 있어도, 선형으로 나누어지지 않는 변수..

Machine Learning 2021.05.24

yolov5를 이용해서 custom data 학습시키기, people training

yolov5는 성능면에서 yolov4보다 훨씬 낫다고 할 수는 없지만, 확실히 pytorch를 이용해서 편합니다. yolov5 pretrained version의 경우에는 80개의 class가 train되어 있습니다. 여기서 우리가 원하는 데이터를 학습 시키기 위해서는 다음 roboflow 블로그를 참고하면 될 거 같습니다. blog.roboflow.com/how-to-train-yolov5-on-a-custom-dataset/ 블로그에서는, rbc, wbc (백혈구, 적혈구)를 위주로 학습을 진행하였습니다. 근데 과연 사람을 학습하려고 하면 어떻게 해야될까요? 또, 80개의 class중 몇 가지의 class만 학습하려고 하면 어떻게 해야될까요? 저는 사람 class만 사용하려고 하였습니다. 물론, de..

rtx 3070을 이용한 환경 설정 yolov5 (ft. 3080, 3090 및 30 시리즈..)

두괄식으로 하겠습니다. 제목은 3070으로 했지만 3080, 3090 다 될 것으로 생각됩니다. cuda version 11.1을 먼저 깝니다. wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run sudo sh cuda_11.1.1_455.32.00_..

Deep Learning 2021.05.05

여러개의 파일에서 안에 있는 텍스트 검색하기(grep, find)

여러 개의 텍스트 파일에서 안에 있는 텍스트를 어떻게 검색할 수 있을까요? 다음과 같은 링크에서 볼 수 있습니다. stackoverflow.com/questions/15286947/how-to-perform-grep-operation-on-all-files-in-a-directory 간단한 방법은, $ grep -rni "string" * 으로 볼 수 있습니다. -r 은 recursive, -i 는 case insensitive, -n 은 찾은 라인넘버를 보여줍니다. 여기서 몇 개의 파일에서 오는지 보고 싶으면, 다음과 같은 방법이 있습니다. $ grep -rni "string" * | wc -l 만약 파일 이름만 알고 싶다면, -l을 추가하면 됩니다. $ grep -il "string" * 비슷한 역할..

Linux/Ubuntu 2021.04.30

Multi object Tracking(MOT) 과 활용

사람들을 tracking 하는데 있어서, inference만 하려고 하면 여러 가지 방법이 있지만, YOLO를 사용하는 방법이 많이 알려져 있습니다. YOLOv4, YOLOv5가 많이 사용되고, 그 중에서 tiny나 small의 경우 작은 디바이스에서도 사용할 수 있을 정도로 가볍고 빠릅니다. 하지만 실제 상황에서 사용할 때, tracking이 필요한 경우가 많습니다. 예를 들어, 선을 그어 놓고, 이 선을 넘어간 사람들의 수를 구할 때, tracking을 사용하지 않는 방법 (opencv)를 사용하는 방법도 있겠지만, 정확도가 떨어질 수도 있습니다. (특히 사람들이 많이 지나갈 경우) 관련 링크 : www.pyimagesearch.com/2018/08/13/opencv-people-counter/ 아직..

Cuda version 관리하기

Ubuntu 20.04를 사용하다가, Ubuntu 버전에 한계를 느껴서, 18.04로 다운그레이드 하였습니다. 20.04에서는 Deepstream도 돌아가지 않고, Tensorflow를 돌리는 데에도 여러가지 문제가 있었기 때문입니다. 하지만 18.04를 설치하고 나니 Cuda가 9.1로 설치가 된 것을 확인하였습니다. Cuda 9.1이 호환되지 않는 텐서플로우가 있는 만큼, Cuda를 10.1로 업그레이드 하기로 하였습니다. 하지만 사실 여러 개의 Cuda 버전을 관리할 수도 있다고 합니다. m31phy.tistory.com/125 위 블로그에서는 $ sudo apt-get install cuda-toolkit-10-1 로 가능함을 볼 수 있습니다. 이미 cuda toolkit을 install 하였다면..

Linux/Ubuntu 2021.04.27