DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

반응형

Python 38

[Python] OpenCV 웹캠 연결 문제 cv2.VideoCapture 해결 방법 #1

Concept 윈도우 기본 카메라 앱에서는 출력되지만, opencv에서 특정 웹캠 연결 문제가 발생하여 영상이 출력되지 않는 경우가 가끔 발생합니다. 다양한 이유가 있지만, 동영상 프레임을 불러오는 과정을 결정짓는 apiPreference 문제로 발생하기도 합니다. 일반적으로 opencv가 알아서 최적값을 찾아주지만 영상 출력이 되지 않는다면 한 번 시도해보길 바랍니다. VideoCaptureAPIs 열거형 상수 설명 CAP_ANY 자동 선택 CAP_V4L, CAP_V4L2 V4L/V4L2(리눅스) CAP_FIREWIRE, CAP_FIREWARE, CAP_IEEE1394 IEEE 1394 드라이버 CAP_DSHOW 다이렉트쇼(DirectShow) CAP_PVAPI PvAPI, Prosilica GigE ..

Python/Python 2021.03.29

[Python] Pyinstaller 오류 : A RecursionError (maximum recursion depth exceeded) occurred.For working around please follow these instructions 해결하기

Concept Pyinstaller는 파이썬 기반 실행 파일을 만드는 강력한 툴입니다. 윈도우나 맥 환경에 맞추어 자동으로 라이브러리와 필요 모듈을 내장하기 때문에 쉽게 배포판을 만들수 있죠. 하지만, 파이썬 자체 인터프리터의 용량과 기타 압축 한계로 인해 C 기반 프로그램보다 용량이 상당히 커진다는 단점이 있기는 합니다. 이를 위해 사용하는 오픈 라이브러리를 최소화하여 프로그래밍 하게됩니다. 프로젝트가 커지면 정말 많은 라이브러리를 Import하게 되는데, 이때 오류가 발생하곤 합니다. 파이썬을 실행파일로 만드는 과정에서 기준치 이상의 메모리 연산량을 요구하기 때문에 발생하는 오류입니다. 이를 해결하기 위해서는 오류와 함께 코드가 실행된 폴더에 생성되는 .spec 파일을 수정해야 합니다. # -*- m..

Python/Python 2021.03.24

[Tensorflow] 학습을 위한 대용량 훈련 데이터 처리 Data Generator 클래스 만들기

Concept 신경망 모델을 학습하기 위해 입력 데이터를 정리하고 전 처리하는 일은 중요하지만 언제나 귀찮은 일입니다. 특히, 이미지 데이터를 학습하기 위해 텐서 플로우에서 ImageGenerator를 설정하는 것은 소규모 데이터에서는 정리가 쉽지만, 대용량 대규모 데이터를 규격에 맞게 정리하는것은 쉽지 않죠. 이번 포스팅에서는 ImageGenerator.flow_ 함수를 직접 class로 만들어 커스터마이징이 쉽고 저장이 용이한 학습 데이터 구축 방법을 구현해보도록 하겠습니다. SourceCode keras.io/api/preprocessing/image/ Keras documentation: Image data preprocessing Image data preprocessing image_datas..

Python/Tensorflow 2021.03.17

[Python] PyQt에서 마우스 버튼 클릭 반응형 효과 만들기

Concept PC 환경에서 마우스는 이제 대체할 수 없는 강력한 UI 도구입니다. 모바일과 같이 NUI를 적용하려는 다양한 시도가 있었지만, 아직까지 대체 불가능인 것 같습니다. 우리는 프로그램에서 버튼을 클릭할 때 마우스 커서를 버튼 UI에 올려 놓게되며, 이때 커서의 반응 효과를 통해 클릭이 가능한 버튼은지, 클릭이 된 건지를 판단합니다. PyQt에도 기본적으로 버튼의 클릭 이벤트는 CSS로 구현되지만, 마우스의 효과는 코드를 통해 구현되고 있습니다. SourceCode def initUI(self): # 버튼 생성 self.BUTTON = QPushButton(self) # 버튼 커서 이벤트 지정 self.BUTTON.setCursor(QtGui.QCursor(QtCore.Qt.PointingHa..

Python/PyQt 2021.03.12

[Python] SORT (Simple Online Real time Tracker) 구현하기 (깃허브 소스 코드)

Concept 컴퓨터 비전 분야에서 응용되는 대표적인 딥러닝 기술은 객체 탐지(Object Detection)입니다. 객체 탐지는 Faster-RCNN, SDD, YOLO 등이 제안되면서 최근 객체 탐지 기술은 꽤 높은 수준으로 상향 평준화되어있습니다. 탐지 기술은 발전하고 있지만, 단순히 객체를 탐지하는 수준으로는 실제 상업적인 비즈니스 단계에서 활용성이 높지 않습니다. Application을 위해 객체를 추적(Tracking) 하고, 인식(Identification) 하고, 객체의 행동(Action Recognition)을 판단하는 기술들이 더해지고 있습니다. 다양한 응용 기술 중에서 탐지된 객체를 추적하고 아이디를 부여하는 Tracking 기술을 다뤄보려 합니다. 이번 포스팅은 다중 객체 탐지 (M..

Python/Python 2021.02.26

[Tensorflow] 분류기 학습을 위한 One-Hot encoding 라벨 생성하기

Concept softmax / cross entropy 를 이용한 신경망 분류기 학습에는 일반적으로 One-Hot Encoding (원-핫 인코딩)된 라벨 데이터를 많이 활용합니다. 텐서플로우는 쉽게 라벨 생성을 위한 함수를 제공하고 있습니다. SourceCode Index 라벨 데이터 one hot incoding MNIST의 경우, 라벨은 1차원으로 나열되어있으며 0은 0, 1은 1, ... , 9는 9로 인덱싱되어있습니다. 이를 원 핫 인코딩하면 다음과 같습니다. 여기서 on_value는 활성화된 값, off_value는 비활성값입니다. 일반적으로 1과 0으로 설정하면 됩니다. 만약 라벨 인덱스에 0 이하 값이 포함되어있다면, 값 설정이 혼돈될수 있기때문에 최소값을 0 이상으로 설정한 뒤 인코딩해..

Python/Tensorflow 2021.02.24

[Python] MOT(Multi-Object Tracking) 평가를 위한 데이터 다운로드

Concept 컴퓨터 비전 기반 딥러닝 기술의 성장과 함께 객체 추적(Tracking) 알고리즘이 발전하고 있습니다. 특히, 객체 탐지 성능이 좋아지며 최근에는 단일 객체가 아닌, 다중 객체 추적 (MOT : Multi - Object Tracking) 이 주요 과제로 자리하고 있습니다. 최근 MOT의 트렌드는 CNN 기반 특징맵, 예측 필터, 그래프 모델 등을 융합하는 방식으로 성능을 향상시키고 있으며, 이와 관련된 다양한 평가 데이터가 공개되어있습니다. 현재 작성중은 논문을 정리하면서, 알고리즘과 데이터를 포스팅으로 남기려 합니다. 이번 포스팅은 MOT 성능평가로 활용되는 대표적인 데이터 MOT Challenge Dataset을 다운받는 기본적인 방법입니다. MOT Dataset motchalleng..

Python/Python 2021.02.23

[Python] PyQt5에서 URL 링크 만들기 (하이퍼링크 버튼)

Concept 이번 포스팅은 pyqt 기반 GUI 프로그램에서 활용 가능한 URL 링크 버튼 만들기 입니다. URL 링크는 webbrowser 라이브러리를 QtButton과 연동하여 웹 페이지 링크를 실행하는 방식으로 구현됩니다. SourceCode import webbrowser class APP(QMainWindow): def __init__(self): # APP CODE # APP CODE # 버튼에 링크 추가하기 self.button.clicked.connect(lambda: webbrowser.open('링크')) # 텍스트 (라벨)에 링크 추가하기 self.label.setText('텍스트내용') self.label.setOpenExternalLinks(True) Application You..

Python/PyQt 2021.02.23

[Tensorflow] K-Fold 교차 검증으로 학습 모델 검증하기 (sklearn)

Concept K-Fold Cross Validation (K 폴드 교차 검증)은 데이터 수가 적을 때, 보다 확실한 검증과 정확도 향상을 위해 사용되는 검증 기법입니다. 파이썬 sklearn 라이브러리에는 K-Fold를 쉽게 정의해주는 함수를 포함하고 있습니다. from sklearn.model_selection import KFold # K-FOLD 정의 nb_split = 5 # 분할 개수 KF = KFold(n_splits=n_split, shuffle=True) 정의한 이후, 학습 단계에서 for문으로 데이터를 분할하면 됩니다. 예를 들어 pandas로 입력된 DataFrame 데이터는 다음과 같이 데이터가 k-fold로 나뉘게 됩니다. for train_idx, valid_inx in kf.s..

Python/Tensorflow 2021.02.21

[Tensorflow] GAN (생산적 적대 신경망) 구현하기

Concept 요즘 가장 흥미롭게 연구 중인 GAN (Generative Adversarial Network: 생산적 적대 신경망)입니다. GAN은 Neural Network에 뿌리를 두고 있으나 비지도 학습으로 정의되며, 두 개의 신경망이 서로 경쟁하며 학습하게 됩니다. 2014년 처음 아이디어가 제안된 이후, 급격한 연구적 성장을 거듭하며 현재는 놀라울 정도로 진보된 기술로 성장하고 있습니다. 이번 포스팅에서는 GAN의 오리지널 버전의 알고리즘을 간단하게 살펴본 뒤, MNIST 손글씨 인식 데이터를 이용해 텐서플로우로 구현해보도록 하겠습니다. Algorithm 기본적인 구조는 간단합니다. 가짜 이미지 생성을 위한 생성자(Generator) 신경망과 진짜와 가짜 이미지 판별을 위한 판별자(Discrim..

Python/Tensorflow 2021.02.17
반응형