프로그래밍(5)
-
OpenVINO int8 모델 변환 2024.5 버전
OpenVINO 2022 버전의 경우는 아래 블로그에 int8 모델 변환이 잘 설명되어 있습니다만,https://da2so.tistory.com/65 OpenVINO 뽀개기 (3) OpenVINO QuantizationOpenVINO 모델을 optimization하기 위한 방법으로 Quantization에 대해 설명드립니다. 1. Quantization이란? 기존 Torch, ONNX model의 parameters(i.e. weights, bias)들은 각각이 float32로 표현되어 있습니다. Quantization은 floda2so.tistory.com2024.5 버전으로 오면서 INT8 모델 변환하는 것이 NNCF (Neural Network Compression Framework) 사용으로 변..
2024.12.14 -
C++ wchar unicode utf-8 utf-32
Unicode 는 문자를 메모리에 저장할 때 어떤 값으로 저장할지 정해둔 코드 체계 중 하나 이다.Unicode에서 문자 하나를 몇 bit 로 표현하느냐에 따라서 8bit 즉 1byte씩 문자에 따라 여러 bytes로 표현될 수 있는, 가변 길이로 표현하는 것이 utf-8이고, 문자당 32bit 고정 길이로 표현하는 것이 utf-32 이다. utf-8 포맷으로 저장된 아래와 같은 cpp 소스가 있을 때, std::string str("가나다") 와 같이 작성하면, str 에 utf-8 로 "가나다" 가 저장되게 되고, str.size() 해보면 9 가 나온다. 이는 한글 unicode경우 utf-8 형식에서는 글자당 3 bytes 차지하기 때문이다.std::setlocale(LC_ALL, ""); //..
2024.09.06 -
C 혹은 C++ 에서 실행중인 파일 경로 구하기
Linux 상에서는 process id가 1234가 일 경우 /proc/1234/exe 에 전체 실행 파일명 포함 경로를 알 수 있고, 여기서 실행파일이 위치한 폴더명을 뜯어낸다.bool get_exepath(std::string& ret){ char arg1[20]; char exepath[1024] = {0}; snprintf(arg1,20,"/proc/%d/exe",getpid()); if (readlink(arg1, exepath, 1024) Windows에서는 GetModuleFileNameW() 을 이용 실행 파일명 포함 경로를 알 수 있고, 이를 이용 실행파일이 위치한 폴더명을 알아낼 수 있다. 아래의 예는 이렇게 구한 전체 path에 실행파일이 있는 실행폴더내 "m..
2024.08.27 -
Python과 C 혹은 C++ 연동 사용하기
Python을 사용하다보면 어떠한 목적으로 C혹은 C++ 쪽에서 작성한 코드와 연동하여 사용할 필요가 있다. 이는 성능이슈로 C, C++를 사용하든, 아니면 python 코드의 경우 코드를 완벽하게 숨길 수 없어 숨겨야하는 핵심 코드가 있든... 아무튼 C, C++ 와 Python 간의 연동을 위한 ctypes 라는 모듈이 있는데, 기본적으로 C 로 작성된 코드들을Python script에서 사용할 수 있도록 해준다. 자세히는 아래 url을 참고한다.https://docs.python.org/ko/3/library/ctypes.html 아래는 C/C++ 모듈에서 JPG 파일을 읽은 후 디코딩한 RGB 이미지를 Python으로 전달해서 화면에 표시하기 위해서 PIL 모듈의 Image 객체를 만드는 예제이..
2024.08.27 -
ChatGPT의 sample code 오류
요즘 ChatGPT가 뜨거운 감자입니다. 프로그래밍 작성하다가 막히면 구글링하고 StackOverflow뒤지다가, ChapGPT에게 물어보면 sample code까지 작성해줘서 상당히 편리해졌는데요. 좀 사용하다보니 그럴싸한 잘못된 code를 보여주네요. 100% 확신하면 안될 듯 하고 역시 참조해서 꼼꼼히 살펴보고 적용해야할 듯 하군요. 아래는 제가 딥러닝 추론 framework인 Onnxruntime에대한 질문에 대한 ChatGPT가 보여준 sample 코드인데, 상당히 그럴싸한 잘못된 code를 보여주더군요. 있지도 않은 class를 가지고 사용하지도 않는 변수를 선언하고, 있지도 않은 parameter가 잘못된 API를 그럴싸하게 사용합니다. 생각해보면 SW framework이라는 것이 계속 버전..
2023.03.08