SlideShare a Scribd company logo
1 of 37
Download to read offline
AI+X: 컴퓨터 비전 기술을 사용한
애플리케이션
2021 AI + X SUMMER CAMP
1
✔ youtube-dl 2021.6.6
✔ pafy 0.5.5
✔ dlib 19.22.0
2
실험 개요
Kafka를 이용한
영상 전송
카메라 입력
Raspberry Pi NUC
저장된 정적 이미지
Youtube 동영상
3
•다양한 컴퓨터 비전 기술을 실행해보고, 응용 분야를 이해합니다
•저장된 이미지, Raspberry Pi에서 들어오는 영상 입력, Youtube의 영상에 대해 실험을 진행합
니다
•Face Landmark Detection - 얼굴 특징점을 추출합니다
•Face Recognition - 얼굴을 등록하고, 인식합니다
•Style Transfer - 영상의 스타일을 변형해봅니다
•Object detection - 물체를 탐지하고 인식합니다
실험 목표
컴퓨터 비전
(Computer Vision)
소개
• Computer Vison 개념, 응용 분야
• 사용할 라이브러리 소개
4
컴퓨터 비전(Computer Vision)이란?
•컴퓨터 비전이란, 이미지 또는 동영상
으로부터 의미 있는 정보를 추출하는
방법을 연구하는 학문입니다
•사람이 눈으로 사물을 보고, 인지하는
과정을 컴퓨터가 하도록 만들어줍니다
•이미지 분류, 물체 탐지, 이미지 분할 (물
체의 테두리까지 파악해 분류) 등, 여
러 가지 큰 카테고리로 나눠집니다
5
Computer Vision 응용 분야
6
Dlib
OpenCV
OpenCV (Open Source Computer Vision Library) 란 컴퓨터 비전과 머신러닝을 돕
는 오픈 소스 소프트웨어 라이브러리입니다. 컴퓨터 비전 애플리케이션들을 위한 기반을
제공해줍니다. 실험에서 영상을 입력 받고 출력하는 등의 기능에 사용합니다
7
Python 패키지 - OpenCV, Dlib, Face-recognition
OpenCV와 마찬가지로 영상을 처리하는 데에 사용할 수 있는 기능들을 담은 라이브러리입니
다. 특히 얼굴을 검출하는 기능이 잘 구성되어 있습니다. 실험에서 얼굴 특징점 추출에 사용합니
다
Face-recognition
Face Recognition은 얼굴을 탐지하고, 얼굴의 위치를 파악하고, 얼굴에 대한 정보를 128차원의 벡터로 임베딩
하는 모델을 포함한 라이브러리입니다. 사진, 영상에서 사람의 얼굴을 파악하기 위한 다양한 기능을 제공합니다.
실험에서 얼굴 인식에 사용합니다
강의에서 Computer Vision을 위해 사용될 패키지는 아래와 같습니다
얼굴 특징점
(landmark) 추출
8
• 얼굴 특징점 소개
• 정적 이미지, 유튜브 영상, Pi 영상에서 특징
점 추출
얼굴 특징점 추출 (Facial Landmark Detection) 이란?
•얼굴 특징점 추출이란, 사전에 정의된 68개의 특징점들을 사진
에서 찾고 추적하는 분야입니다
•이 특징점들은 사람의 얼굴을 판단하기 위해 중요한 요소인 눈,
코, 입, 턱, 눈썹과 같은 특징들을 표현합니다
•정면을 보고 있을 때 뿐 아니라 측면을 보고 있는 등 얼굴의 방향
이 틀어져도 특징점을 잡아낼 수 있도록 합니다
9
얼굴 특징점 추출 활용 분야
😪 졸음 운전 방지
운전자가 눈을 뜨고 있거나, 고개를 젖히고 있지는 않은지 등
상태를 추적해 졸음 운전을 방지할 수 있습니다
😎 카메라 보정
스노우 등의 카메라 보정 애플리케이션에서 사람의 얼굴의
특징점을 파악하고 이를 기반으로 보정 효과를 적용할 수 있습니다
😳 감정 분류
사람의 눈, 코, 입의 상태를 알 수 있기 때문에, 사람의 표정으로부터
감정을 예측할 수 있습니다. 예를 들어, 눈썹과 눈 사이의 거리가 가
깝고, 입꼬리가 내려간 등의 모양이라면 화난 표정일 것입니다.
10
놀람 화남
11
Python 패키지 설치, 모델 다운로드 NUC의 터미널에서
실행해 주세요
http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
requirements.txt
사전에 학습되어 있는 모델의 가중치 다운로드, 압축 해제
유튜브 영상을 사용할 수 있습니다
얼굴을 탐지하고 특징점을 추출합니다
OpenCV는 Pi의 영상을 받아오고 , 영상 결과를 보여줍니다
객체 검출에서는 YOLO 모델을 불러올 때 사용합니다
이미지 크기 조절 등 이미지를 다룰 때 쓰입니다
이미지로부터 얼굴 특징점 추출
12
저장되어 있던 이미지에서 얼굴 특징점을 추출합니다
show_parts 옵션을 True로 주어 얼굴의 각 주요 부위를 확인해 봅시다. 기본적으로 False가 입력됩니다
img_path 옵션(인자)을 주어 특징점을 검출할 이미지 경로를 변경할 수 있습니다. 생략시 기본값으로
../dataset/single_face/jimin.jpg에 대해 얼굴 특징점을 추출합니다
NUC의 터미널에서
실행해 주세요
--img_path {원하는 이미지 경로}
--show_parts { True 또는 False}
눈, 코, 입, 얼굴, 눈썹 등 얼굴 주요 부분 추출
13
입, 입라인, 왼쪽/오른쪽 눈썹, 왼쪽/오른쪽 눈, 코, 턱 등 8가지 주요 부분의 이미지를
확인할 수 있습니다
NUC의 터미널에서
실행해 주세요
Youtube 영상에서 얼굴 특징점 추출
14
--youtube_url 인자로 원하는 영상의 링크 넘겨 Youtube 영상을 고를 수 있습니다
참고: 동영상 인식
동영상은 여러장의 정지된 사진이 순서대로 재생되면서 화면 속
에서 실제로 움직이는 것처럼 보이는 것입니다. 동영상을 이루
는 한 장을 프레임(frame)이라고 합니다. 동영상의 각 프레임마
다, 이미지에 적용할 때와 같은 함수를 적용하여 동영상에 컴퓨
터 비전을 적용할 수 있습니다
NUC의 터미널에서
실행해 주세요
•Pi에서 video_producer.py를 실행해영상을 발행합니다
• --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다
Pi 영상에서 얼굴 특징점 추출
15
SSH로 Pi 터미널에
접속해 실행하세요
{ 원하는 Kafka Topic}
NUC의 터미널에서
실행해 주세요
•NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다.
•NUC에서 video_landmark.py를 실행합니다
• --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다
얼굴 인식
(Face recognition)
16
• 얼굴 인식 소개
• 얼굴 사진 등록
• 정적 이미지, 유튜브 영상, Pi 영상에서 얼굴
인식
얼굴 인식 (Face Recognition) 이란?
•얼굴 인식이란, 얼굴을 포함하는 영상, 이미지에 대해 얼굴
영역을 자동으로 검출하고, 분석해 해당 얼굴이 어떤 인물
인지 판별해내는 기술입니다
•최근 딥러닝의 발달로 더욱 정확해지고 있으며, 특징점 추
출 기술을 이용하는 경우가 대부분입니다. 특징점을 사용
해 사람들을 분류할 수 있는 AI 모델을 학습시킵니다
•최근 감시 시스템, 출입국 관리, 생체 인식 등에 응용되고
있습니다
17
requirements.txt
얼굴 인식에 필요한 얼굴 인코딩, 비교 등의 기능이 있는 패키지
18
Python 패키지 설치, 모델 다운로드 NUC의 터미널에서
실행해 주세요
얼굴 등록하기 📸
19
•save_photo.py를 사용해 한 명씩 Pi 카메라로 사진을 찍고 (한 명의 얼굴만 나오도록 찍어주세요), 이를
AI_X_SUMMER_2021/dataset/single_face에 저장합니다.
•! 주의: 사람의 이름을 영어로 등록해주세요
•--save_path 인자를 사용해 사진을 저장할 위치를 바꿀 수 있습니다
•혹은, 원하는 사람의 얼굴이 담긴 사진 (한 사람만 나온 사진이어야 합니다)을 저장해도 됩니다
•해당 경로에 저장된 사람들의 얼굴이 등록되고, 각 파일의 이름이 사람의 이름으로 등록됩니다
NUC의 터미널에서
실행해 주세요
이미지 얼굴 인식
20
인자들을 생략하면 기본적으로 아래와 같은 값이 입력됩니다
•img_path: ~/AI_X_SUMMER_2021/dataset/
multiple_face/bts2.jpg
•threshold: 0.6
threshold란?
등록된 사람과의 비교로 그 사람이 맞다고 판별할 수 있는 차
의 기준입니다.
여기서는 얼굴에 대한 인코딩 값의 차를 기준으로 판별합니다.
threshold 값이 커질수록 더욱 관용적으로 판별해 등록되지
않은 사람을 등록된 사람으로 오판할 수 있고, 작아질수록 등
록된 사람도 Unknown으로 오판하게 될 수 있습니다. 값을
조정해 변화를 확인해 봅시다
img_face_recognition.py 함수를 NUC에서 실행합니다
img_path 옵션으로 얼굴 인식을 진행할 이미지를 선택합니다
--threshold 옵션으로 사람의 식별 기준을 0 ~ 1사이로 정합니다
NUC의 터미널에서
실행해 주세요
Youtube 영상 얼굴 인식
Youtube 영상에서 등장할 사람들의 얼굴 사진을 등록 하고, 얼굴 인식 결과를 확인해 봅시다
21
junggook
jhope jin
NUC의 터미널에서
실행해 주세요
youtube_face_recognition.py 파일을 실행합니다
•--youtube_url 인자로 원하는 Youtube 영상을 고를 수 있습니다
•--threshold 인자로 판별 기준을 정합니다
•Pi에서 video_producer.py를 실행해영상을 발행합니다
• --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다
Pi 영상에서 얼굴 특징점 추출
22
SSH로 Pi 터미널에
접속해 실행하세요
{ 원하는 Kafka Topic}
NUC의 터미널에서
실행해 주세요
•NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다.
•NUC에서 video_face_recognition.py를 실행합니다
• --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다
• --threshold 옵션으로 사람의 식별 기준을 0 ~ 1 사이로 정합니다.
스타일 변환
(Style Transfer)
23
• 스타일 변환 소개
• 정적 이미지, 유튜브 영상, Pi 영상의 스타일
변환
• 다양한 명화의 스타일 적용
스타일 변환 (Style Transfer) 이란?
•타겟 이미지와 참조 이미지, 두 개의 이미지에
서 타겟 이미지의 '콘텐츠'를 보존하면서, 참조
이미지의 '스타일'을 타깃 이미지에 적용하는 기
술입니다
•타겟 이미지의 내용 손실과 참조 이미지의 스타
일 손실 모두가 최소화 되도록 모델이 학습됩니
다
•SNOW와 같은 카메라 보정 애플리케이션, 포토
샵 등에서 사용될 수 있습니다
24
스타일 변환 (Style Transfer) 이란?
25
•"Perceptual Losses for Real-Time Style
Transfer and Super-Resolution" 논문의 스타
일 변환 방법을 사용합니다
•적용하고 싶은 스타일이 담긴 이미지 마다, 모델
을 학습시켰습니다
•학습이 완료된 모델에 스타일을 변환할 이미지
를 입력값으로 주어 스타일을 바로 변환할 수 있
습니다
26
Python 패키지 설치, 모델 다운로드
미리 스타일이 학습된 모델들을 다운받아 사용합니다
https://www.dropbox.com/sh/2z3hyrewinnmubf/AACUAazQxfKpiMBzjHUVXFRDa --content-disposition
NUC의 터미널에서
실행해 주세요
https://www.dropbox.com/sh/2z3hyrewinnmubf/AACUAazQxfKpiMBzjHUVXFRDa --content-disposition
사전에 학습되어 있는 모델의 가중치 다운로드, 압축 해제
requirements.txt
저장된 이미지 스타일 변환
27
wave*.onnx starry*.onnx mosaic*.onnx udnie*.onnx
NUC의 터미널에서
실행해 주세요
•--img_path 옵션으로 스타일 변환할 이미지 경로를 변경할 수 있습니다. 기본적으로 ../dataset/objects/dog_bicycle.jpg
•--style_path 옵션으로 적용할 스타일이 학습된 모델을 선택할 수 있습니다. 기본적으로 ./models/mosaic.onnx 입니다
NUC에서 img_style_transfer.py를 실행합니다
저장된 이미지 스타일 변환 결과
28
mosaic.onnx
udnie_aggressive.onnx
starry150.onnx
wave150.onnx
원본 이미지
Youtube 영상 스타일 변환
29
NUC의 터미널에서
실행해 주세요
mosaic.onnx
• --youtube_url 옵션으로 원하는 Youtube 영상을 고를 수 있습니다
• --style_path 옵션으로 적용할 스타일이 학습된 모델을 선택할 수 있습니다. 기본적으로 ./models/mosaic.onnx 입니다
• --skip_ratio 옵션으로 몇 개의 프레임을 건너 뛰며 추론할 것인지 정합니다.
CPU로 모든 프레임을 변환하면 매우 느려지므로, 스킵할 수 있도록 해줍니다
NUC에서 youtube_style_transfer.py 파일을 실행합니다
•Pi에서 video_producer.py를 실행해영상을 발행합니다
• --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다
Pi 영상에서 스타일 변환
30
SSH로 Pi 터미널에
접속해 실행하세요
{ 원하는 Kafka Topic}
NUC의 터미널에서
실행해 주세요
•NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다.
•NUC에서 video_style_transfer.py를 실행합니다
• --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다
• --style_path 옵션으로 적용할 스타일이 학습된 모델을 선택할 수 있습니다. 기본적으로 ./models/mosaic.onnx 입니다
• --skip_ratio 옵션으로 몇 개의 프레임을 건너 뛰며 추론할 것인지 정합니다.
CPU로 모든 프레임을 변환하면 매우 느려지므로, 스킵할 수 있도록 해줍니다
객체 검출:
영상 내 사물 인식
(Object Detection)
31
• 객체 검출 소개
• 정적 이미지, 유튜브 영상, Pi 영상에서 객체
검출
객체 검출 (Object Detection) 이란?
•객체 검출이란, 영상 내에서 물체의 위치를 찾아 물체의 위치를 표
시하기 위한 상자(Bounding box)를 그리고, 그 물체의 종류를 판
별하는 기술을 말합니다. 한 영상 내에 여러 종류의 물체가 동시에
존재할 수 있는 상황에서, 영상 내의 물체들을 판별해야 합니다
•이번에 사용할 YOLOv3(You Only Look Once: Unified, Real-
Time Object Detection version3) 은 실시각 객체 탐지를 목적으
로 등장한 딥러닝 모델입니다. 이미지를 쪼개어 사용하는 기존 R-
CNN 모델과 달리, 이미지 전체를 한 번만 본다는 특징을 갖고 있습
니다
•또한, 전처리 모델을 따로 사용하지 않고 하나의 인공 신경망으로
처리하는 통합된 모델입니다
•매우 높은 성능은 아니지만, 실시간으로 여러 장의 이미지를 탐지
할 수 있습니다
32
참고: https://medium.com/curg/you-only-look-once-다-단지-한-번만-보았을-뿐이라구-bddc8e6238e2
객체 검출 (Object Detection) 응용 분야
•보행자, 도로 등 물체를 파악해 자율 주행 자동차에 응용될 수 있습니다
•이미지에서 글자를 인식해 출력하는 OCR에 사용될 수 있습니다
•CCTV 감시에 사용해 이상 현상을 감지할 수 있습니다
33
34
Python 패키지 설치, 모델 다운로드
Yolo v3 "Tiny" 모델을 사용합니다. GPU가 없는 제약된 상황이기 때문입니다.
추론의 정확도는 떨어지지만, 추론 속도가 크게 지연되지 않습니다
https://pjreddie.com/media/files/yolov3-tiny.weights
NUC의 터미널에서
실행해 주세요
https://pjreddie.com/media/files/yolov3-tiny.weights
사전에 학습되어 있는 모델의 가중치 다운로드
requirements.txt
저장된 이미지로부터 객체 검출
35
dog
car
NUC의 터미널에서
실행해 주세요
•--img_path 옵션으로 스타일 변환할 이미지 경로를 변경할 수 있습니다. 기본적으로 ../dataset/objects/dog_bicycle.jpg
NUC에서 img_object_detection.py를 실행합니다
Youtube video로부터 객체 검출
36
NUC의 터미널에서
실행해 주세요
person
person person
bicycle
person
person persontruck
•--youtube_url 인자로 원하는 Youtube 영상을 고를 수 있습니다
NUC에서 youtube_object_detection.py를 실행합니다
•Pi에서 video_producer.py를 실행해영상을 발행합니다
• --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다
Pi 영상에서 객체 검출
37
SSH로 Pi 터미널에
접속해 실행하세요
{ 원하는 Kafka Topic}
NUC의 터미널에서
실행해 주세요
•NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다.
•NUC에서 video_object_detection.py를 실행합니다
• --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다

More Related Content

Similar to [ 2021 AI + X 여름 캠프 ] 3. computer vision applications

Machine Learning Model for Gender Detection
Machine Learning Model for Gender DetectionMachine Learning Model for Gender Detection
Machine Learning Model for Gender Detection
TecnoIncentive
 

Similar to [ 2021 AI + X 여름 캠프 ] 3. computer vision applications (20)

OpenCV @ Droidcon 2012
OpenCV @ Droidcon 2012OpenCV @ Droidcon 2012
OpenCV @ Droidcon 2012
 
AI Project Course, SKT FLY AI Challenger 2022
AI Project Course, SKT FLY AI Challenger 2022AI Project Course, SKT FLY AI Challenger 2022
AI Project Course, SKT FLY AI Challenger 2022
 
Face-Detection-app-using-cpp-presentation.ppt
Face-Detection-app-using-cpp-presentation.pptFace-Detection-app-using-cpp-presentation.ppt
Face-Detection-app-using-cpp-presentation.ppt
 
OpenCV+Android.pptx
OpenCV+Android.pptxOpenCV+Android.pptx
OpenCV+Android.pptx
 
Machine Learning Model for Gender Detection
Machine Learning Model for Gender DetectionMachine Learning Model for Gender Detection
Machine Learning Model for Gender Detection
 
CV machine learning freelancer
CV machine learning freelancerCV machine learning freelancer
CV machine learning freelancer
 
Python Open CV
Python Open CVPython Open CV
Python Open CV
 
Yoga pose detection using deep learning project PPT.pptx
Yoga pose detection using deep learning project PPT.pptxYoga pose detection using deep learning project PPT.pptx
Yoga pose detection using deep learning project PPT.pptx
 
Information from pixels
Information from pixelsInformation from pixels
Information from pixels
 
Eye ball cursor movement using opencv
Eye ball cursor movement using opencvEye ball cursor movement using opencv
Eye ball cursor movement using opencv
 
Face recognition with c++
Face recognition with c++ Face recognition with c++
Face recognition with c++
 
Human computer interaction_ 23CSM1R19.pptx
Human computer interaction_ 23CSM1R19.pptxHuman computer interaction_ 23CSM1R19.pptx
Human computer interaction_ 23CSM1R19.pptx
 
VIKAS.pptx
VIKAS.pptxVIKAS.pptx
VIKAS.pptx
 
Final PPT.ppt about human detection and counting
Final PPT.ppt  about human detection and countingFinal PPT.ppt  about human detection and counting
Final PPT.ppt about human detection and counting
 
YOLOv4: A Face Mask Detection System
YOLOv4: A Face Mask Detection SystemYOLOv4: A Face Mask Detection System
YOLOv4: A Face Mask Detection System
 
Automated Face Detection System
Automated Face Detection SystemAutomated Face Detection System
Automated Face Detection System
 
Custom vision
Custom visionCustom vision
Custom vision
 
01 foundations
01 foundations01 foundations
01 foundations
 
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
Open Source Tools for Container Security and Compliance @Docker LA Meetup 2/13
 
Introduction to Object recognition
Introduction to Object recognitionIntroduction to Object recognition
Introduction to Object recognition
 

Recently uploaded

Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
PECB
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
heathfieldcps1
 

Recently uploaded (20)

Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Role Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxRole Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptx
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 

[ 2021 AI + X 여름 캠프 ] 3. computer vision applications

  • 1. AI+X: 컴퓨터 비전 기술을 사용한 애플리케이션 2021 AI + X SUMMER CAMP 1 ✔ youtube-dl 2021.6.6 ✔ pafy 0.5.5 ✔ dlib 19.22.0
  • 2. 2 실험 개요 Kafka를 이용한 영상 전송 카메라 입력 Raspberry Pi NUC 저장된 정적 이미지 Youtube 동영상
  • 3. 3 •다양한 컴퓨터 비전 기술을 실행해보고, 응용 분야를 이해합니다 •저장된 이미지, Raspberry Pi에서 들어오는 영상 입력, Youtube의 영상에 대해 실험을 진행합 니다 •Face Landmark Detection - 얼굴 특징점을 추출합니다 •Face Recognition - 얼굴을 등록하고, 인식합니다 •Style Transfer - 영상의 스타일을 변형해봅니다 •Object detection - 물체를 탐지하고 인식합니다 실험 목표
  • 4. 컴퓨터 비전 (Computer Vision) 소개 • Computer Vison 개념, 응용 분야 • 사용할 라이브러리 소개 4
  • 5. 컴퓨터 비전(Computer Vision)이란? •컴퓨터 비전이란, 이미지 또는 동영상 으로부터 의미 있는 정보를 추출하는 방법을 연구하는 학문입니다 •사람이 눈으로 사물을 보고, 인지하는 과정을 컴퓨터가 하도록 만들어줍니다 •이미지 분류, 물체 탐지, 이미지 분할 (물 체의 테두리까지 파악해 분류) 등, 여 러 가지 큰 카테고리로 나눠집니다 5
  • 7. Dlib OpenCV OpenCV (Open Source Computer Vision Library) 란 컴퓨터 비전과 머신러닝을 돕 는 오픈 소스 소프트웨어 라이브러리입니다. 컴퓨터 비전 애플리케이션들을 위한 기반을 제공해줍니다. 실험에서 영상을 입력 받고 출력하는 등의 기능에 사용합니다 7 Python 패키지 - OpenCV, Dlib, Face-recognition OpenCV와 마찬가지로 영상을 처리하는 데에 사용할 수 있는 기능들을 담은 라이브러리입니 다. 특히 얼굴을 검출하는 기능이 잘 구성되어 있습니다. 실험에서 얼굴 특징점 추출에 사용합니 다 Face-recognition Face Recognition은 얼굴을 탐지하고, 얼굴의 위치를 파악하고, 얼굴에 대한 정보를 128차원의 벡터로 임베딩 하는 모델을 포함한 라이브러리입니다. 사진, 영상에서 사람의 얼굴을 파악하기 위한 다양한 기능을 제공합니다. 실험에서 얼굴 인식에 사용합니다 강의에서 Computer Vision을 위해 사용될 패키지는 아래와 같습니다
  • 8. 얼굴 특징점 (landmark) 추출 8 • 얼굴 특징점 소개 • 정적 이미지, 유튜브 영상, Pi 영상에서 특징 점 추출
  • 9. 얼굴 특징점 추출 (Facial Landmark Detection) 이란? •얼굴 특징점 추출이란, 사전에 정의된 68개의 특징점들을 사진 에서 찾고 추적하는 분야입니다 •이 특징점들은 사람의 얼굴을 판단하기 위해 중요한 요소인 눈, 코, 입, 턱, 눈썹과 같은 특징들을 표현합니다 •정면을 보고 있을 때 뿐 아니라 측면을 보고 있는 등 얼굴의 방향 이 틀어져도 특징점을 잡아낼 수 있도록 합니다 9
  • 10. 얼굴 특징점 추출 활용 분야 😪 졸음 운전 방지 운전자가 눈을 뜨고 있거나, 고개를 젖히고 있지는 않은지 등 상태를 추적해 졸음 운전을 방지할 수 있습니다 😎 카메라 보정 스노우 등의 카메라 보정 애플리케이션에서 사람의 얼굴의 특징점을 파악하고 이를 기반으로 보정 효과를 적용할 수 있습니다 😳 감정 분류 사람의 눈, 코, 입의 상태를 알 수 있기 때문에, 사람의 표정으로부터 감정을 예측할 수 있습니다. 예를 들어, 눈썹과 눈 사이의 거리가 가 깝고, 입꼬리가 내려간 등의 모양이라면 화난 표정일 것입니다. 10 놀람 화남
  • 11. 11 Python 패키지 설치, 모델 다운로드 NUC의 터미널에서 실행해 주세요 http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 requirements.txt 사전에 학습되어 있는 모델의 가중치 다운로드, 압축 해제 유튜브 영상을 사용할 수 있습니다 얼굴을 탐지하고 특징점을 추출합니다 OpenCV는 Pi의 영상을 받아오고 , 영상 결과를 보여줍니다 객체 검출에서는 YOLO 모델을 불러올 때 사용합니다 이미지 크기 조절 등 이미지를 다룰 때 쓰입니다
  • 12. 이미지로부터 얼굴 특징점 추출 12 저장되어 있던 이미지에서 얼굴 특징점을 추출합니다 show_parts 옵션을 True로 주어 얼굴의 각 주요 부위를 확인해 봅시다. 기본적으로 False가 입력됩니다 img_path 옵션(인자)을 주어 특징점을 검출할 이미지 경로를 변경할 수 있습니다. 생략시 기본값으로 ../dataset/single_face/jimin.jpg에 대해 얼굴 특징점을 추출합니다 NUC의 터미널에서 실행해 주세요 --img_path {원하는 이미지 경로} --show_parts { True 또는 False}
  • 13. 눈, 코, 입, 얼굴, 눈썹 등 얼굴 주요 부분 추출 13 입, 입라인, 왼쪽/오른쪽 눈썹, 왼쪽/오른쪽 눈, 코, 턱 등 8가지 주요 부분의 이미지를 확인할 수 있습니다 NUC의 터미널에서 실행해 주세요
  • 14. Youtube 영상에서 얼굴 특징점 추출 14 --youtube_url 인자로 원하는 영상의 링크 넘겨 Youtube 영상을 고를 수 있습니다 참고: 동영상 인식 동영상은 여러장의 정지된 사진이 순서대로 재생되면서 화면 속 에서 실제로 움직이는 것처럼 보이는 것입니다. 동영상을 이루 는 한 장을 프레임(frame)이라고 합니다. 동영상의 각 프레임마 다, 이미지에 적용할 때와 같은 함수를 적용하여 동영상에 컴퓨 터 비전을 적용할 수 있습니다 NUC의 터미널에서 실행해 주세요
  • 15. •Pi에서 video_producer.py를 실행해영상을 발행합니다 • --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다 Pi 영상에서 얼굴 특징점 추출 15 SSH로 Pi 터미널에 접속해 실행하세요 { 원하는 Kafka Topic} NUC의 터미널에서 실행해 주세요 •NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다. •NUC에서 video_landmark.py를 실행합니다 • --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다
  • 16. 얼굴 인식 (Face recognition) 16 • 얼굴 인식 소개 • 얼굴 사진 등록 • 정적 이미지, 유튜브 영상, Pi 영상에서 얼굴 인식
  • 17. 얼굴 인식 (Face Recognition) 이란? •얼굴 인식이란, 얼굴을 포함하는 영상, 이미지에 대해 얼굴 영역을 자동으로 검출하고, 분석해 해당 얼굴이 어떤 인물 인지 판별해내는 기술입니다 •최근 딥러닝의 발달로 더욱 정확해지고 있으며, 특징점 추 출 기술을 이용하는 경우가 대부분입니다. 특징점을 사용 해 사람들을 분류할 수 있는 AI 모델을 학습시킵니다 •최근 감시 시스템, 출입국 관리, 생체 인식 등에 응용되고 있습니다 17
  • 18. requirements.txt 얼굴 인식에 필요한 얼굴 인코딩, 비교 등의 기능이 있는 패키지 18 Python 패키지 설치, 모델 다운로드 NUC의 터미널에서 실행해 주세요
  • 19. 얼굴 등록하기 📸 19 •save_photo.py를 사용해 한 명씩 Pi 카메라로 사진을 찍고 (한 명의 얼굴만 나오도록 찍어주세요), 이를 AI_X_SUMMER_2021/dataset/single_face에 저장합니다. •! 주의: 사람의 이름을 영어로 등록해주세요 •--save_path 인자를 사용해 사진을 저장할 위치를 바꿀 수 있습니다 •혹은, 원하는 사람의 얼굴이 담긴 사진 (한 사람만 나온 사진이어야 합니다)을 저장해도 됩니다 •해당 경로에 저장된 사람들의 얼굴이 등록되고, 각 파일의 이름이 사람의 이름으로 등록됩니다 NUC의 터미널에서 실행해 주세요
  • 20. 이미지 얼굴 인식 20 인자들을 생략하면 기본적으로 아래와 같은 값이 입력됩니다 •img_path: ~/AI_X_SUMMER_2021/dataset/ multiple_face/bts2.jpg •threshold: 0.6 threshold란? 등록된 사람과의 비교로 그 사람이 맞다고 판별할 수 있는 차 의 기준입니다. 여기서는 얼굴에 대한 인코딩 값의 차를 기준으로 판별합니다. threshold 값이 커질수록 더욱 관용적으로 판별해 등록되지 않은 사람을 등록된 사람으로 오판할 수 있고, 작아질수록 등 록된 사람도 Unknown으로 오판하게 될 수 있습니다. 값을 조정해 변화를 확인해 봅시다 img_face_recognition.py 함수를 NUC에서 실행합니다 img_path 옵션으로 얼굴 인식을 진행할 이미지를 선택합니다 --threshold 옵션으로 사람의 식별 기준을 0 ~ 1사이로 정합니다 NUC의 터미널에서 실행해 주세요
  • 21. Youtube 영상 얼굴 인식 Youtube 영상에서 등장할 사람들의 얼굴 사진을 등록 하고, 얼굴 인식 결과를 확인해 봅시다 21 junggook jhope jin NUC의 터미널에서 실행해 주세요 youtube_face_recognition.py 파일을 실행합니다 •--youtube_url 인자로 원하는 Youtube 영상을 고를 수 있습니다 •--threshold 인자로 판별 기준을 정합니다
  • 22. •Pi에서 video_producer.py를 실행해영상을 발행합니다 • --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다 Pi 영상에서 얼굴 특징점 추출 22 SSH로 Pi 터미널에 접속해 실행하세요 { 원하는 Kafka Topic} NUC의 터미널에서 실행해 주세요 •NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다. •NUC에서 video_face_recognition.py를 실행합니다 • --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다 • --threshold 옵션으로 사람의 식별 기준을 0 ~ 1 사이로 정합니다.
  • 23. 스타일 변환 (Style Transfer) 23 • 스타일 변환 소개 • 정적 이미지, 유튜브 영상, Pi 영상의 스타일 변환 • 다양한 명화의 스타일 적용
  • 24. 스타일 변환 (Style Transfer) 이란? •타겟 이미지와 참조 이미지, 두 개의 이미지에 서 타겟 이미지의 '콘텐츠'를 보존하면서, 참조 이미지의 '스타일'을 타깃 이미지에 적용하는 기 술입니다 •타겟 이미지의 내용 손실과 참조 이미지의 스타 일 손실 모두가 최소화 되도록 모델이 학습됩니 다 •SNOW와 같은 카메라 보정 애플리케이션, 포토 샵 등에서 사용될 수 있습니다 24
  • 25. 스타일 변환 (Style Transfer) 이란? 25 •"Perceptual Losses for Real-Time Style Transfer and Super-Resolution" 논문의 스타 일 변환 방법을 사용합니다 •적용하고 싶은 스타일이 담긴 이미지 마다, 모델 을 학습시켰습니다 •학습이 완료된 모델에 스타일을 변환할 이미지 를 입력값으로 주어 스타일을 바로 변환할 수 있 습니다
  • 26. 26 Python 패키지 설치, 모델 다운로드 미리 스타일이 학습된 모델들을 다운받아 사용합니다 https://www.dropbox.com/sh/2z3hyrewinnmubf/AACUAazQxfKpiMBzjHUVXFRDa --content-disposition NUC의 터미널에서 실행해 주세요 https://www.dropbox.com/sh/2z3hyrewinnmubf/AACUAazQxfKpiMBzjHUVXFRDa --content-disposition 사전에 학습되어 있는 모델의 가중치 다운로드, 압축 해제 requirements.txt
  • 27. 저장된 이미지 스타일 변환 27 wave*.onnx starry*.onnx mosaic*.onnx udnie*.onnx NUC의 터미널에서 실행해 주세요 •--img_path 옵션으로 스타일 변환할 이미지 경로를 변경할 수 있습니다. 기본적으로 ../dataset/objects/dog_bicycle.jpg •--style_path 옵션으로 적용할 스타일이 학습된 모델을 선택할 수 있습니다. 기본적으로 ./models/mosaic.onnx 입니다 NUC에서 img_style_transfer.py를 실행합니다
  • 28. 저장된 이미지 스타일 변환 결과 28 mosaic.onnx udnie_aggressive.onnx starry150.onnx wave150.onnx 원본 이미지
  • 29. Youtube 영상 스타일 변환 29 NUC의 터미널에서 실행해 주세요 mosaic.onnx • --youtube_url 옵션으로 원하는 Youtube 영상을 고를 수 있습니다 • --style_path 옵션으로 적용할 스타일이 학습된 모델을 선택할 수 있습니다. 기본적으로 ./models/mosaic.onnx 입니다 • --skip_ratio 옵션으로 몇 개의 프레임을 건너 뛰며 추론할 것인지 정합니다. CPU로 모든 프레임을 변환하면 매우 느려지므로, 스킵할 수 있도록 해줍니다 NUC에서 youtube_style_transfer.py 파일을 실행합니다
  • 30. •Pi에서 video_producer.py를 실행해영상을 발행합니다 • --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다 Pi 영상에서 스타일 변환 30 SSH로 Pi 터미널에 접속해 실행하세요 { 원하는 Kafka Topic} NUC의 터미널에서 실행해 주세요 •NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다. •NUC에서 video_style_transfer.py를 실행합니다 • --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다 • --style_path 옵션으로 적용할 스타일이 학습된 모델을 선택할 수 있습니다. 기본적으로 ./models/mosaic.onnx 입니다 • --skip_ratio 옵션으로 몇 개의 프레임을 건너 뛰며 추론할 것인지 정합니다. CPU로 모든 프레임을 변환하면 매우 느려지므로, 스킵할 수 있도록 해줍니다
  • 31. 객체 검출: 영상 내 사물 인식 (Object Detection) 31 • 객체 검출 소개 • 정적 이미지, 유튜브 영상, Pi 영상에서 객체 검출
  • 32. 객체 검출 (Object Detection) 이란? •객체 검출이란, 영상 내에서 물체의 위치를 찾아 물체의 위치를 표 시하기 위한 상자(Bounding box)를 그리고, 그 물체의 종류를 판 별하는 기술을 말합니다. 한 영상 내에 여러 종류의 물체가 동시에 존재할 수 있는 상황에서, 영상 내의 물체들을 판별해야 합니다 •이번에 사용할 YOLOv3(You Only Look Once: Unified, Real- Time Object Detection version3) 은 실시각 객체 탐지를 목적으 로 등장한 딥러닝 모델입니다. 이미지를 쪼개어 사용하는 기존 R- CNN 모델과 달리, 이미지 전체를 한 번만 본다는 특징을 갖고 있습 니다 •또한, 전처리 모델을 따로 사용하지 않고 하나의 인공 신경망으로 처리하는 통합된 모델입니다 •매우 높은 성능은 아니지만, 실시간으로 여러 장의 이미지를 탐지 할 수 있습니다 32 참고: https://medium.com/curg/you-only-look-once-다-단지-한-번만-보았을-뿐이라구-bddc8e6238e2
  • 33. 객체 검출 (Object Detection) 응용 분야 •보행자, 도로 등 물체를 파악해 자율 주행 자동차에 응용될 수 있습니다 •이미지에서 글자를 인식해 출력하는 OCR에 사용될 수 있습니다 •CCTV 감시에 사용해 이상 현상을 감지할 수 있습니다 33
  • 34. 34 Python 패키지 설치, 모델 다운로드 Yolo v3 "Tiny" 모델을 사용합니다. GPU가 없는 제약된 상황이기 때문입니다. 추론의 정확도는 떨어지지만, 추론 속도가 크게 지연되지 않습니다 https://pjreddie.com/media/files/yolov3-tiny.weights NUC의 터미널에서 실행해 주세요 https://pjreddie.com/media/files/yolov3-tiny.weights 사전에 학습되어 있는 모델의 가중치 다운로드 requirements.txt
  • 35. 저장된 이미지로부터 객체 검출 35 dog car NUC의 터미널에서 실행해 주세요 •--img_path 옵션으로 스타일 변환할 이미지 경로를 변경할 수 있습니다. 기본적으로 ../dataset/objects/dog_bicycle.jpg NUC에서 img_object_detection.py를 실행합니다
  • 36. Youtube video로부터 객체 검출 36 NUC의 터미널에서 실행해 주세요 person person person bicycle person person persontruck •--youtube_url 인자로 원하는 Youtube 영상을 고를 수 있습니다 NUC에서 youtube_object_detection.py를 실행합니다
  • 37. •Pi에서 video_producer.py를 실행해영상을 발행합니다 • --topic 옵션으로 발행할 Kafka topic을 설정할 수 있습니다. 생략할 시 기본적으로 "pi-video" 입니다 Pi 영상에서 객체 검출 37 SSH로 Pi 터미널에 접속해 실행하세요 { 원하는 Kafka Topic} NUC의 터미널에서 실행해 주세요 •NUC에서 Kafka의 Server, ZooKeeper 동작을 확인합니다. •NUC에서 video_object_detection.py를 실행합니다 • --topic 옵션으로 구독할 Kafka topic을 설정할 수 있습니다. 기본적으로 "pi-video" 입니다