DEEP.I - Lab

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

반응형

졸업작품 24

[Python] 파이썬 OpenCV를 이용한 얼굴 인식

과거 얼굴인식은 첩보영화나 CSI와 같은 드라마에서 범죄자를 찾는데 활용되는 신기술로 인식되었으나, 머신러닝과 하드웨어의 발전으로 이젠 일상에서 쉽게 접할 수 있게 되었습니다. 현재 얼굴인식 기술은 크게 탐지(Detection)과 인식(Identification)으로 나뉘고 있습니다. 페이스북이나 인스타그램에 사진을 업로드할때 얼굴을 찾아주는 탐지 기술, 아이폰 보안 기술로 활용되는 Face ID는 인식 기술이 아마 대표적이고 우리에게 친숙한 얼굴 인식 응용 기술이지 않을까 싶습니다. 이번 포스팅에서는 비교적 과거 기술이지만 간단하게 CPU에서도 연산이 가능한 얼굴 탐지 알고리즘 Cascading classifiers를 OpenCV를 이용하여 구현해보록 하겠습니다. 1. Haar Cascade 분류기 불..

Python/Python 2020.11.05

[Python] configparser를 이용하여 config (설정값 ini 파일) 관리하기

프로그램을 개발하다보면 환경이나 사용자에 따른 설정값이 필요한 경우가 있습니다. 이러한 설정값을 매번 변수로 설정하고 불러오게 된다면, 불편함이 따르게되고 다양한 환경설정에 어려움이 생기게됩니다. 쉽게 예를 들면, 그림 1과 같이 게임에서 그래픽 설정이 있죠. 이번 포스팅에서는 쉽게 설정 파일을 읽고 쓰게 할 수 있는 표준 라이브러리 configparser 패키지 관리에 대해 알아보겠습니다. 1. configparser를 이용한 설정파일 만들기 import configparser # 설정파일 만들기 config = configparser.ConfigParser() # 설정파일 오브젝트 만들기 config['system'] = {} config['system']['title'] = 'Neural Netwo..

Python/Python 2020.11.01

[Matlab] 매트랩을 이용한 다층신경망 (Multi-Layer Perceptron: MLP) 구현하기 (XOR 문제)

1986년 역전파 알고리즘 (Backpropagation)의 개념이 도입되면서 Machine Learning이 다시 주목받게 되었습니다. 기존 단층 신경망으로는 해결할 수 없었던 비선형 문제 해결이 가능한 다층 신경망은 현재 응용되고 있는 CNN(Convolutional Neural Networks)의 기반이 되고 있습니다. 이번 포스팅에서는 매트랩을 이용한 다층신경망에서 해결가능한 XOR 문제를 구현해보록 하겠습니다. XOR Gate vs MNIST Dataset 개인적인 생각이지만, 처음 머신 러닝에 입문하신다면 MINIST 데이터셋과 텐서플로우, 파이토치 등의 라이브러리를 통한 분류문제 구현으로 시작하기 보다는 파이썬이나 매트랩을 통해 직접 알고리즘을 작성하며 XOR 문제와 같은 선형회귀 문제부터 ..

Matlab 2020.11.01

[Python] OpenCV 실시간으로 영상의 Frame Rate (FPS) 확인하기

연속된 이미지나 비디오 파일을 다룰때 영상 처리 알고리즘이 추가되면 연산으로 인해 프레임 드롭이 발생할 수 있습니다. 예를 들어, 모든 화면을 3D 렌더링으로 표현하는 게임의 경우 연산량이 많아지는 구간이나, 높은 수준의 그래픽으로 프레임 저하가 발생하게 되죠. 실시간 영상을 입력받는 딥러닝 알고리즘의 경우, 성능도 중요하지만 REAL-TIME으로 구현이 가능하냐도 중요한 이슈가 되고 있습니다. 일반적으로 초당 6프레임 이상의 연산이 가능할때 실시간 (REAL-TIME) SYSTEM으로 정의합니다. 이번 포스팅에서는 실시간으로 측정되는 영상+알고리즘의 FPS를 확인해보도록 하겠습니다. 1. VideoCapture.py (기본 캡처 모듈 불러오기) import cv2 import timeit # 영상 정보..

Python/Python 2020.10.23

[Tensorflow] 사전 학습된 VGG16 모델에서 특징맵 추출하기

신경망 학습 모델의 특징맵은 (Feature Map) 단순 분류문제 이외에도 그림 1과 같이 RNN, LSTM, Tracking과 같은 다양한 알고리즘에서 매우 높은 빈도로 활용되고 있습니다. 특히 제가 요즘 주목하고 있는 RE-ID(Re-identification) 알고리즘에서 영상의 특징맵이 객체의 유사도를 비교하는데 활용되고 있는것이 상당히 흥미로웠습니다. 오늘 포스팅에서는 텐서플로우에서 사전 학습된 VGG16 모델을 이용한 특징맵 추출 방법을 간단히 알아보도록 하겠습니다. 기본 시스템 환경은 다음과 같습니다. 윈도우에서 아나콘다 가상환경으로 구축하였으며 Spyder 내에서 코드를 구현하였습니다. 이전 포스팅을 참고하시면 빠르게 기본 환경을 구축하실 수 있습니다. OS : Windows 10 Pyt..

Python/Tensorflow 2020.10.23

[Python] PyQt를 이용하여 마우스로 직선 그리기

PyQt5를 이용한 마우스로 직선 그리기 python의 PyQt을 이용하여 일반적인 그림판과 같이 다양한 도형체를 그릴수 있습니다. 이러한 작업이 프로그램에 녹아들어 유저 인터페이스와 연결되기 위해서는 그림 1과 같이 그리고 있는 시각적인 효과가 중요합니다. 오늘은 PyQt 내부 QPainter 클래스로 간단한 그림판을 구현해보도록 하겠습니다. 1. Screen.py (기본 UI 만들기) from PyQt5 import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import* class Screen(QMainWindow): def setupUi(self): self.resize(800, 600) self.cent..

Python/PyQt 2020.10.20

[Matlab] 객체 탐지 알고리즘 학습을 위한 이미지 데이터 라벨링 #2

데이터 라벨링은 데이터를 가공하는 1차 작업입니다. 아기에게 말을 가르칠 때 사물의 사진을 보며 이름을 하나씩 알려주는 것처럼 AI 모델이 학습할 데이터에 '이것은 사람' '이것은 자동차' '이것은 강아지' 이런식으로 입력해주는것입니다. 여기서 사물의 사진은 입력되는 데이터(Input Data) 이며 이름은 출력으로 목표하는 목표값(Target)이 됩니다. 여기서 목표값을 부여하는 행위를 라벨링 작업이라고 부르며 전체 AI 시스템 구축에 80~90% 이상이 소요된다고 합니다. (원문기사) 실제 양질의 데이터 확보와 높은 신뢰도를 갖는 AI 시스템 구축에 라벨링은 무척 중요합니다. 오늘은 객체 탐지 알고리즘으로 활용하기 위한 라벨링에서 적용되는 몆가지 원칙을 알아보겠습니다. 1. 편향을 막기 위한 빅데이터..

Matlab 2020.07.31

[Matlab] 객체 탐지 알고리즘 학습을 위한 이미지 데이터 라벨링 #1

현재 딥러닝 객체 인식 분야에서는 학습과 평가 실험을 위한 다양한 데이터셋이 존재합니다. 대표적으로 COCO (Common Objects in Context), KITTI Vision Benchmark Suite 등의 대규모 데이터가 있지만, 실제 시스템에 맞는 딥러닝 객체 탐지 알고리즘을 적용하기 위해서는 결국, 수집된 데이터을 통해 최적화해야합니다. 지도학습으로 정의되는 모든 머신러닝 알고리즘은 학습을 하기 위해 입력되는 데이터(Input)와 데이터를 명시하는 클래스 또는 라벨(Output)이 필요합니다. 단순히 많은 데이터뿐만 아니라 데이터를 알려주는 클래스 정보가 함께 있어야 학습을 진행할 수 있죠. 오늘은 Matlab의 Computer Vision Toolbox에 포함되어있는 Image labe..

Matlab 2020.07.14

[Python] OpenCV를 이용한 영상 재생과 Frame Rate (FPS) 조절

연속된 이미지나 비디오 파일을 다룰때 재생되는 프레임의 속도를 조절해야하는 Task가 발생하게 됩니다. 특히, 실시간으로 이미지 프로세싱을 하게 될 경우, 모든 프레임에 알고리즘을 적용하게 되면 연산으로 인해 재생이 지연되는 상황이 발생하게 됩니다. 1초 동안 10개의 프레임(이미지)이 재생되는 영상이 있다고 가정해보겠습니다. 단일 프레임 연산이 1초가 걸리는 딥러닝 알고리즘을 적용하게되면, 영상은 1초이지만 10초의 시간동안 영상이 재생되게 됩니다. 물론 모든 프레임에 대해 알고리즘이 적용되면 좋겠지만 실시간이 요구되는 상황에서는 지연이 발생하게 되죠. 이러한 지연을 방지하기 위해 time 함수를 이용하여 알고리즘에 적용되는 FPS를 지정해보겠습니다. 1. VideoCapture.py (기본 캡처 모듈..

Python/Python 2020.07.12

[Tensorflow] 텐서플로우에서 사전 학습된 VGG16 모델 불러오기

텐서플로우 설치 포스팅에 이어 사전 학습된 VGG 모델을 활용하는 방법을 살펴보겠습니다. VGG Network는 2014년 이미지넷 인식 학술대회에서 2등을 한 신경망 구조입니다. 본격적으로 층이 깊어지기 시작한 초기 모델 중 하나이며, 사용이 쉽고 연결 구조가 직관적이여서 현재까지도 다양한 학습 모델 연구에서 활용되고 있습니다. 모델은 VGG16/19로 나뉘며 본 포스팅에서는 ImageNet 데이터로 사전 학습된 VGG16 모델을 텐서플로우를 통해 활용해보도록 하겠습니다. 기본 시스템 환경은 다음과 같습니다. 윈도우에서 아나콘다 가상환경으로 구축하였으며 파이참으로 코드를 구현하였습니다. 이전 포스팅을 참고하시면 빠르게 기본 환경을 구축하실 수 있습니다. OS : Windows 10 Python : 3...

Python/Tensorflow 2020.07.10
반응형