[Python] GPU 지정하여 Python 코드 실행하기
가끔 GPU를 나눠 할당하여 코드를 실행하고 싶을 때가 있는데 아래와 같이 간단히 설정 가능하다. 애용하는 방법이다. Terminal에서 python 코드를 실행하는 경우 ~$ CUDA_VISIBLE_DEVICES=0 python test.py ~$ CUDA_VISIBLE_DEVICES=1 python test.py ~$ CUDA_VISIBLE_DEVICES=2,3 python test.py python 코드에서 GPU 지정하는 방법 import os os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"]="0" 참고자료 : dongjinlee.tistory.com/entry/%EC%84%A0%ED%83%9D%ED%9..
2020.11.20
[Python] 파일명 추출, 디렉토리 경로 추출
파일 목록 얻기 glob.glob(wildcard) - 유닉스 경로명 패턴 스타일로 파일 목록을 얻을 수 있다. os.listdir(path) - 지정된 디렉토리의 전체 파일 목록을 얻을 수 있다. dircache.listdir(path) - os.listdir(path)와 동일한 파일 목록을 전달한다. path가 변경되지 않았을 때, dircache.listdir()은 다시 디렉토리 구조를 읽지 않고 이미 읽은 정보를 활용 dircache.annotate(head, list) - 일반 파일명과 디렉토리명을 구분해주는 함수 디렉토리 다루기 os.chdir(path) - 작업하고 있는 디렉토리 변경 os.getcwd() - 현재 프로세스의 작업 디렉토리 얻기 os.remove( filename or pat..
2020.11.20
no image
[Linux] 리눅스에서 IP 주소 확인
공용 IP 주소 찾기 ~$ curl ifconfig.me 사설 IP 주소 찾기 ~$ ifconfig 참고자료 : ko.wikihow.com/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C-IP-%EC%A3%BC%EC%86%8C-%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 리눅스에서 IP 주소 확인하는 방법 이 위키하우 글을 읽고 리눅스 컴퓨터에서 사설 그리고 공용 IP 주소를 볼 수 있는 방법을 익혀보자. 이 방법을 언제 사용할 수 있는지 알아보기. 공용 IP 주소는 컴퓨터에서 웹사이트 및 서비스 ko.wikihow.com
2020.11.10
AttributeError: module 'tensorflow' has no attribute 'io'
Problem: AttributeError: module 'tensorflow' has no attribute 'io' Solution : pip install tensorflow Reference : github.com/thu-ml/tianshou/issues/39 AttributeError: module 'tensorflow' has no attribute 'io' · Issue #39 · thu-ml/tianshou I have marked all applicable categories: exception-raising bug RL algorithm bug documentation request (i.e. "X is missing from the documentation.") new feature ..
2020.11.05
[Python] Python Schedule 모듈 이용하여 원하는 시간대에 프로그램 실행 시키기
프로그램을 주기적으로 자동으로 돌려놔야 할 일이 생겨서 아래와 같이 Python Schedule 모듈을 이용하여 원하는 시간대에 프로그램을 실행시키도록 하였다. import schedule import time def job(): #TO DO ... # 10초에 한번씩 실행 schedule.every(10).second.do(job) # 10분에 한번씩 실행 schedule.every(10).minutes.do(job) # 매 시간 실행 schedule.every().hour.do(job) # 매일 10:30 에 실행 schedule.every().day.at("10:30").do(job) # 매주 월요일 실행 schedule.every().monday.do(job) # 매주 수요일 13:15 에 실행 ..
2020.11.02
[OpenCV] imwrite 시 확장자 지정 안할 시 나는 에러
cv::imwrite("result.jpg", frame); imwrite 시 확장자 지정 안할 시 나는 에러는 아래와 같다. OpenCV Error: Unspecified error (could not find a writer for the specified extension) in imwrite_, file ....../modules/imgcodecs/src/loadsave.cpp, line 677 terminate called after throwing an instance of 'cv::Exception' what(): ....../modules/imgcodecs/src/loadsave.cpp:677: error: (-2) could not find a writer for the specified..
2020.10.23
[TensorRT] Implicit vs Explicit
Pytorch 및 TensorFlow 등으로 생성된 deploy 모델의 배치 사이즈를 명시적으로 설정하여 TensorRT 모델을 변환 할 때 TensorRT 7 버전 부터 도입된 빌드 설정 값들 즉, Optimization Profiles 기능을 이용하여 모델을 변환하면 더욱 더 최적화 되어 변환 된다. * Optimization Profiles : docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#opt_profiles Developer Guide :: NVIDIA Deep Learning TensorRT Documentation To optimize your model for inference, TensorRT takes your ne..
2020.10.21
[Video] ffmpeg, ffplay 및 vlc 간단 사용법
FFmpeg 이란? 마이클 니더마이어(Michael Niedermayer)의 주도하에 개발되고 있는 모든 동영상, 음악, 사진 포맷들의 디코딩과 인코딩을 목표로 만들어지고 있는 LGPL과 GPL 라이센스를 따르는 오픈소스 프로젝트 관련 프로그램(인코더와 디코더 등등)에서 표준이라 불리울 정도로 많은 프로그램들의 기반으로 이용되고 있다. 아래의 FFmpeg을 기반으로 하는 프로그램 리스트를 보면 알겠지만 거의 대부분의 비디오 관련 프로그램들이 사용하고 있다. FFmpeg 프로젝트 자체가 모든 영상의 디코딩/인코딩을 지향하기 때문에 추가적인 코덱의 설치가 필요없다. ffmpeg.exe 파일 하나로도 인코딩이 가능 멀티코어를 공식적으로 지원 한다. 따로 옵션을 적지않으면 모든 코어를 사용 VF(libavfil..
2020.10.20
no image
[TensorRT] Squeeze + Unsqueeze + expand_as 조합의 Pytorch 모델 사용 시 나타날 수 있는 이슈
환경 Pytorch 1.4.0 TensorRT 7.1.3.4 CUDA 10.2 cuDNN 8.0.0 본 포스팅은, Pytorch 모델 forward 일부 구현에서 squeeze + transpose + unsqueeze + expand_as 조합을 사용하여 Pytorch - ONNX - TensorRT 변환을 수행하였을 때 발생할 수 있는 이슈에 대하여 작성한 글이다. 결과적으로 위와 같은 조합을 이용하여 TensorRT 변환 과정에서 -1 이라는 dynamic 한 변수가 중간에 등장하여 변환 결과가 뒤틀리는 현상이 발생하는 것 같다. 이러한 결과는 (Pytorch 결과 == Onnx 결과) != TensorRT 결과 라는 결론을 짓게 된다. 이는 Output Node 가 여러 개 일 때 극명하게 드러날..
2020.09.16
[TensorRT] Builder 에서의 UFF vs ONNX
환경 Ubuntu 16.04 Python 3.5 TensorRT 7.1.3.4 TensorFlow 1.13.1 및 1.15.1 TensorFlow 프레임워크를 이용하여 .pb 를 만든 뒤 convert-to-uff 유틸리티를 통해 .uff 파일로 변환하고나서 .uff 파일을 tensorrt engine 으로 변환하는데 input order 와 input value 그리고 input dimension 을 올바르게 설정했는데도 불구하고 자꾸 아래와 같은 에러가 떠서 [TensorRT] ERROR: UffParser: Parser error: tower_0/resnet_v1_50/conv1/BatchNorm/FusedBatchNorm: The input to the Scale Layer is required ..
2020.09.15
no image
[Python] 이미 존재하는 모듈 이름을 폴더 이름으로 사용하지 말 것
새 프로젝트를 만들고 있는 도중 tensorrt 를 import 하여 사용하는데 자꾸 아래와 같은 에러가 났다. File "../tensorrt/trt_lib.py", line 23, in load_cuda_engine_from_onnx TRT_LOGGER = trt.Logger(trt.Logger.WARNING) AttributeError: module 'tensorrt' has no attribute 'Logger' tensorrt 는 분명히 설치되어있고, 지금까지 잘 사용해 왔는데 갑자기 tensorrt 에는 Logger 가 없다니 ... 알고보니 이미 존재하는 모듈(설치한 모듈) 이름인 tensorrt 가 이미 존재하는데도 불구하고 새로 만든 폴더 이름을 tensorrt 로 지정했기 때문에 새로 ..
2020.09.10
no image
[TensorRT] ONNX 에서 TensorRT 변환 시 Upsample scale_factor 문제
Pytorch 모델을 이용하여 ONNX 모델로 변환 후, ONNX 모델을 TensorRT 모델로 변환할 시 아래와 같은 에러가 발생 할 때가 있다. [TensorRT] ERROR: Network must have at least one output [TensorRT] ERROR: Network validation failed. 위와 같은 에러는 ONNX parser 를 통해 Network 를 읽고 나서, TensorRT Engine 으로 변환하는 과정에서 지원하지 않는 노드가 있을 때, Network 를 더 이상 읽지 못하고 결과를 반환하여 최소한의 output 이 있어야 한다고 에러를 내뱉는 것이다. TensorRT 로그를 통해 어디서 끊긴지 찾아보면 되는데, ONNX 모델의 노드들과 TensorRT ..
2020.09.03