본문 바로가기

분류 전체보기

(28)
C++ string find를 이용한 찾은 문자열 위치 저장 C++ string 객체가 사용할 수 있는 멤버함수 find의 기본형 size_t find (const string& str, size_t pos = 0); size_t find (const char* s, size_t pos = 0); 즉 find의 return 값은 size_t이다. size_t타입은 C99표준에 정의되어 있는데, 객체나 값이 포함할 수 있는 최대의 크기를 표현하는 타입이다. size_t타입은 unsigned형이다. 따라서 int형이나 unsigned int형으로 타입캐스팅으로 사용하는 방법도 가능하다. (이를 모르더라도 컴파일러가 알아서 캐스팅해준다) 문자열에서 원하는 문자열을 찾으면, 해당 문자열의 시작 위치를 저장하고, 출력해주는 예제 코드이다. #include #include ..
C++ vector<vector<int> > 2차원 벡터의 크기 C++ STL Sequence container의 vector는 동적배열이라고 볼 수 있다. 배열이기에 마치 2차원 배열처럼 vector도 2차원으로 설계가 가능하다. 2차원 배열을 사용하면 필연적으로 계산해야 하는 부분이 생기는데, 바로 row와 column의 크기를 측정하는 것이다. 함수의 parameters로 2차원배열을 넘기는 경우가 있기 때문에, row와 column의 count를 구하는 것은 중요하다고 볼 수 있다. 하지만 C언어 등에서 일반적인 2차원 배열의 크기를 구하는 방식으로 하면 정상적인 크기가 구해지지 않는다. 즉 sizeof()를 사용해도 정상적인 크기가 구해지지 않는다. 구하는 방법은 단순하다. vector의 멤버함수인 .size()를 이용하여 행과 열을 구할 수 있다. vect..
YOLO 학습 RTX 2060 super VS RTX 2070 super 딥러닝 등 PC를 학습시키는데 있어서 GPU가 필요하고, 일반적으로 개인이 사용하는 GPU의 성능에 따른 필요한 학습시간이 궁금했다. 그래픽 카드에 따라서 어느 정도의 성능차이가 나타나는지를 시간을 중점으로 실험했다. 실험을 대상으로 한 GPU는 RTX 2060 super와 RTX 2070 super이다. 1. PC성능 RTX 2060 super PC CPU: AMD Ryzen 3 3200G memory: DDR4 16GB GPU: NVIDIA GeForce RTX 2060 SUPER RTX 2070 super PC CPU: Intel Core i7 7700 memory: DDR4 24GB GPU: NVIDIA GeForce RTX 2070 SUPER 2. 실험 환경 이미지 수: 18,452장 서로 다른..
YOLO NVR(DVR) 이용한 실시간 감지(RTSP) YOLO는 실시간 물체 감지를 목적으로 서비스를 한다. YOLO의 사용 목적의 대부분은 실시간 물체 감지를 위해서 사용한다고 믿어 의심치 않는다. 대부분 CCTV를 NVR(DVR)에 연결해서 사용한다. 그래서 사용하려면 다소 초기 설정이 길어진다. 반대로 간단한 실험이나, 거리가 가까운 경우, IP 카메라 혹은 webcam 등을 사용해서 PC랑 직접적으로 연결하는 경우가 많기 때문에 접근이 쉬운 편이다. CCTV는 동축케이블을 이용해서 100m 이상의 거리를 연결하는 경우가 많으며, 일반적인 PC에는 동축케이블을 연결할 방법이 없기 때문에 초반 설정 작업이 필요로 한다. 이 글은 NVR(DVR)의 RTSP를 이용해서 YOLO를 실시간 streaming 한다. 요즘에 나오는 NVR(DVR)은 네트워크 기능..
YOLO image size 개인으로 만들어낸 이미지만 해도 21,000장을 넘어섰다. coco dataset의 일부와 합쳐서 사용중이니 학습에 사용하고 있는 이미지는 46,000장 가량 된다. 하지만 내가 직접 이미지를 마킹해서 학습시켜서 그런건지, 아니면 원래 내가 원하는 수준의 성능은 안나오는 건지 모르겠지만 감지 성능이 성에 차지 않았다. YOLO의 감지(detect) 능력을 조금이라도 키워 보겠다고, 방법을 찾아 다니다 보면 해외 사이트 등에서 YOLO image resize를 수정해서 사용해 보라고 조언한다. 물론 image resize를 하지 말고, height와 width를 건들지 말라고도 한다. 하지만 궁금해서 한번 해봤다. (네트워크의 size는 건들지 않았다.) ※주장: image의 height와 width가 낮..
Software Interrupt와 Hardware Interrupt 보호되어 있는 글입니다.
darknet yolo 실행을 위해 필요한 프로그램 darknet windows 설치: https://github.com/AlexeyAB/darknet 1) .../build/darknet/x64 폴더로 옮긴 파일 목록 opencv_ffmpeg349.dll opencv_ffmpeg349_64.dll opencv_world349.dll cudnn64_7.dll darknet.exe darknet53.conv.74 ※다른 방법으로는 옮긴 파일들의 원래 위치를 path로 등록하는 방법이 있다. 2) 설치 프로그램 vcredist_x64.exe (msvcr100.dll) Microsoft Visual C++ 2010 SP1 재배포 가능 패키지 32비트 http://www.microsoft.com/ko-kr/download/details.aspx?id=8328 M..
coding 기초(실수 하는 것들) 가끔 아무 생각 없이 프로그래밍을 할 때가 있다. coding site의 문제를 푼다던가 개인적인 프로그램을 만들거나 등... 그럴 때 아주 초보적인 실수를 할 때가 종종 있는데, 대충 결과만 얻으려고 간단하게 만들다가, 오히려 실(失)이 되어 원하는 결과가 바로 나오지 않아 시간이 더 걸리는 경우가 있다. 1) if문(조건문) 복잡한 프로그램을 만들 때에는 오히려 안하는 실수이기도 하다. 경우의 수를 하나하나 생각하면서 만들 가능성이 높기 때문이다. 업무를 좀 더 편하게 하기 위해 사용하는 스크립트나 개인적인 프로그램을 만들 때 오히려 실수를 하는 경우가 높은 것 같다. if - else if 와 if - if의 차이점은 if - else if의 경우 윗 단계에서 먼저 부합되는 조건을 찾으면, 그 루틴..