SlideShare uma empresa Scribd logo
1 de 45
동물 홍채인식부터
서버까지
정 진 성
S회사 S/W 개발자
Python은
2년째 배우는 중
우리 개님을
사랑하는
동물애호가
예비 딸바보
이번 발표 내용은
회사와 관계없는
개인 프로젝트
About Me
정 진 성
Index
Iris Recognition
Agent & Server
Prologue
Feature of Iris
Feature of Iris Recognition
Iris Recognition Algorithm
Introduce Opencv & Numpy
Noise Filtering
01
02
03
04
05
06
Localization
Normalization
Feature Extraction
Quantization & Binary
Hdistance
Appendix
07
08
09
10
11
12
Architecture
Agent
01
02
Animal Iris Recognition
DB Schema
Log System
03
04
Animal Iris Recognition & Conclusion01
Purpose Of Presentation
Python으로 동물 홍채 인식을 만든 경험을 공유합니다
반려동물 홍채
H/W
반려동물 신분증
01 Prologue ㅣ 홍채인식을 통한 반려동물 신분증
02 Feature of Iris
Pupil(동공)
Iris(홍채)
Sclera(공막)
Ciliary body
lens
Blind spot
retina
Optical nerve
사람과 동물
모두 홍채가
존재한다.
공막(sclera)이
보이는 동물은
사람이 유일하
다.
홍채는
동공의 크기를
조절하는
근육의 무늬다.
동공 주위의
근육이 수축과
이완을 통해
동공의 크기를
조절한다.
빛의 세기에 따
라 동공의 크기
가 변하고, 이에
따라 홍채의 면
적도 변한다.
일란성 쌍둥이
의 홍채가 다르
고 좌우의 홍채
또한 다르다.
03 Feature of Iris Recognition
홍채가 같을 확률은 수학적으로 1/(10^52)
홍채
0.0000001~0.0001%(한쪽 눈)
지문
0.001~0.01%
목소리
0.1%
얼굴
1~1.3%
생체 인식 기술별 오류 확률
홍채의 패턴을
인식하는 기술 *실제 기술에서는 10억 분의 1
오인식률이
가장 낮음
04 Iris Recognition Algorithm
홍채 인식 알고리즘
Localization
Image
Capture
Normalization
Feature
Extraction
Binary
Pattern
Store
Pattern
Comparison
Threshold
Decision
Dr. John Daugman
1991년 원천 특허로 세계 최초 출원
05 Introduce Opencv & Numpy
홍채인식 알고리즘을 설계하기 위해서는 수학이 필수지만, 공식만 봐도 너무 어렵다.
06 Introduce Opencv & Numpy
그러나 우리를 도와줄 Opencv와 Numpy가 있다!!
Python library Casias DataBase
홍채인식용 이미지 DataBase
http://www.cbsr.ia.ac.cn/china/Iris%20Databases%20CH.asp
※
동물 홍채 이미지 DataBase는
존재하지 않기 때문에
사람의 DB를 갖고 진행
Python 3.5.2
Opencv-python 3.4
Numpy 1.14
07 Introduce Opencv & Numpy
Gary Bradsky에 의해 1996년 인텔에서 시작된 프로젝트며,
컴퓨터 비전, 머신러닝 등 다양한 알고리즘 지원과 C++, java 등의 다양한 언어로도 지원되고
있다.
Opencv-Python은 C++ API를 Python으로 랩핑함(Opencv C++과 성능이 비슷)
Open Computer Vision
08 Introduce Opencv & Numpy
수학 연산을 위해 최적화된 라이브러리이며 행렬연산을 쉽게 할 수 있도록 도와준다.
[[18 20 22 ... 59 51 45]
[18 20 22 ... 61 53 47]
[18 20 22 ... 64 56 49]
...
[29 34 37 ... 90 92 93]
[29 34 37 ... 89 91 93]
[28 34 36 ... 88 90 92]]
09 Noise Filtering
이미지에는 다양한 노이즈들이 존재합니다.
Noise Filtering을 통해 성능을 향상시킬 수 있습니다.
Opencv에서 다수의 Filter를 제공하므로
Salt & Pepper Noise 제거에 효과적인 Median Filter를 적용합니다.
Original K=21
K size = 3
10 Localization
Localization : 이미지에서 홍채 영역을 추출하는 것을 의미
홍채 영역에서 동공의 영역을 뺀 부분이 순수한 홍채의 영역입니다.
11 Localization
동공은 경계가 분명하기 때문에 찾기가 쉬운 편입니다.
Hough circle을 이용하여 동공을 찾을 수 있습니다.
12 Localization
동공을 잘 찾기 위해서는 적절한 Parameter Value를 주는 것이 중요합니다.
적절한 Parameter Value를 찾기 위해서는 이미지를 분석하고 특징을 찾아야 합니다.
13 Localization
홍채는 동공처럼 경계가 뚜렷하지 않기 때문에 정확하게 찾기가 힘들지만
적절한 Parameter를 넣은 HoughCircle을 이용해서 찾을 수 있습니다.
이 알고리즘은 99% 이상의 검출률을 갖고 있습니다. (Casias Image 2500장 기준)
14 Normalization
HoughCircle을 통해 찾은 홍채영역의 중심 좌
표와 반지름을 갖고 홍채영역의 값들을 추출
하여 2D Array 하는 것이 Normalization
입니다.(원 -> 직사각형)
Opencv에 있는 LinearPolar라는 함수를 이용
할 겁니다.
cv2.linearPolar(src, (center_x, center_y),
radius, cv2.WARP_FILL_OUTLIERS)
※원본 이미지가 330과 300이 바뀌어 있습니다.
15 Normalization
원을 완벽하게 직사각형화할 수가 없기 때문
에 linearPolar를 이용하더라도
약간의 왜곡은 발생합니다.
Source linearPolar
custom
Opencv의 linearPolar 함수의 결과는 원본 이미지와 동일한 사이즈로 반환
되기 때문에 왜곡이 크게 발생하여 linearPolar 함수를 재설계하였습니다.
16 Normalization
linearPolar된 이미지에서 동공 영역을 제거하면 완벽한 홍채영역
이미지를 얻을 수 있습니다.
홍채영역에 있는 눈썹, 눈꺼풀은 노이즈이기 때문에 필터를 통해 제거해야
정확한 홍채 패턴을 얻을 수 있습니다.
Detection Image linearPolar
17 Feature Extraction
Normalization된 이미지에서 홍채무늬의 특징을 추출해야 합니다.
특징은 pixel의 크기값(Magnitude)이 아닌 무늬의 방향(Phase)를 추출하는 것입니다.
추출 방법에는 2D Gabor filter, wavelet 등이 있습니다.
두 방법 모두 Opencv에서 제공하는 함수가 없기 때문에 직접 구현해야 합니다.
FeaturelinearPolar
18 Quantization & Binary
추출한 홍채 패턴을 저장 및 비교를 위해 Binary로 변환해야 합니다.
Quantization(양자화)를 위해 적절한 Level을 설정하셔야 합니다.(4 level로 설정)
보통은 Phase는 복소수로 이뤄졌기 때문에 360도를 4분면으로 나누면 한 분면 당 Phase의 범위는
90도가 될 것입니다. 4분면을 binary로 표현하기 위해서 2개의 bit가 필요합니다.
19 HDistance
H(Hamming) Distance : 같은 비트 수를 갖는 2진 코드 사이에 대응되는 비트 값이
일치하지 않는 것의 개수
각 Bit끼리 XOR연산으로 구할 수 있다.
A:101011, B:110010, A와 B의 Hdistance는 3이다.
Appendix
01 카메라 선정
일반 카메라는
빛 반사로 인해
홍채 촬영이 어렵기 때문에
적외선 카메라가 필요합니다
카메라 화소,
센서 크기,
S/N 등 조건에 따라
6대의 적외선 카메라,
20개의 렌즈,
4개의 적외선 LED를 조합하여
테스트하였습니다
5 ~ 35cm 내에서
거리별로 홍채인식 구현
및 테스트하여
최적의 거리와
최적의 카메라를 찾았습니다
5 3510 15 20 25 30
Infrared Camera
02 Image Capture; 홍채인식 알고리즘의 핵심
Good Image을 얻는 것은 오인식률과 자원낭비를 낮추고 정확도를 올릴 수 있습니다.
Good Image Bad Image
Blur가 없을 것 초점이 맞을 것 이미지 안에 동공(Pupil)과 홍채(Iris)가 찍혀 있을 것
03 Blur Detection
이미지 흐림(Blur)이 있는지를 판별
Laplacian 함수는 이미지의 가로와 세로에 대한 Gradient(기울기)를 2차 미분한 값이며,
Edge를 검출 하는데 사용됩니다.
Laplacian Value가 클수록 선의 경계가 뚜렷하며, Blur가 적은 이미지라고 판단할 수 있습니다.
04 Blur Detection
예제에서는 Threshold의 값을
200으로 하였지만
찍으려는 물체의 이미지에 얼마만큼의
강한 경계를 포함하고 있느냐에 따라 다르
고, Blurry한 이미지이나 강한 선 하나 때
문에
Threshold를 넘기도 합니다.
그래서 Blur를 판단할 수 있는
여러 개의 알고리즘을 사용해야 합니다.
! 주의할 점
Agent & Server
01 Architecture
Agent
API
GateWay
Recognition
App
Web
User
Server
Mongo
Postgres
Mongo
Alarm
Server
Log
Server
Admin
02 Architecture
결국 MSA(Micro Service Architecture)로 가기 위한 구성
App, Web, Agent는 Client이며, 역할이 다르고 접근하는 정보도 다르기 때문에
각각의 서버로 직접 접근하기보다는 하나의 API Gateway로 연결.
Recognition에서는 홍채인식 알고리즘이 돌아가기 때문에 CPU 작업이 많아 서버를 따로 분리
Write/Read 성능이 좋은 NoSQL Mongo DB에 생체 정보를 저장
User Server에서는 User관리, 홍채 정보 검색 등의 역할을 함
03 Library For Agent & Server
- Python 3.5.2
- DjangoRestFramework 3.8.2
- Django 2.0.7
- Postgres 9.3
- MongoDB 3.6
- Pyscopg2 2.7.4
- Pymongo 3.6.1
- Log4mongo 1.6.2
- Phonenumberslite 8.9.5
- Python 3.5.2
- Pyinstaller 3.1.1(PyQt 5.11.2 버전 미지원)
- PyQt 5.10.1
Server Agent
04 Agent
Beta Version
Agent : USB 적외선 카메라로 이미지를 얻기 위한 Windows용 프로그램
Command 실행이 아닌 직관적인 Gui가 필요 -> PyQt
대부분의 사용자 PC는 윈도우 -> Pyinstaller로 해결
05 Agent
로그인(Agent를 사용할 User의 정보)과 MainView로 구성
MainView : 정보 입력 및 출력 창, 메뉴, 카메라 화면 등으로 구성
Pyinstaller extractor를 방지하기 위해 SecretKey를 이용하여 encryption화
Qthread를 이용하여 같은 window에서 화면이 재생되도록 구현
Main View
Login View
06 DB Schema(PostgreSQL)
PostgreSQL
Custom User model을 생성
07 DB Schema(PostgreSQL)
PostgresSQL
- ForeignKey로 User와 연결
- biometricsID는 홍채정보가 MongoDB에 저장된 후에 반환되는 unique ID
(=OneToOne field)
08 DB Schema(MongoDB)
MongoDB
- Write/Read가 SQL보다 빠릅니다.
- 홍채 정보는 indexing을 할 수 없기 때문에 매번 1:N 비교를 해야하기 때문에 Read의 성능이 좋아야 함
- Schema가 자유롭기 때문에 동물 정보에 대한 Schema가 명확하지 않은 현 상황에 적합
09 Log System
Python logging처럼 쓰면서 File이 아닌 MongoDB에 저장할 수 있습니다.
Log4mongo(1.6.2)라는 Package가 필요합니다.
10 Log System
MongoHandler를 상속받아서 emit 부분을 다음과 같이 overriding
DB와 Connection fail일 때 파일에 에러를 쓸 수 있도록 Custom하였습니다.
Animal Iris Recognition
01 Animal Iris Recognition
수천 장의 사진을 찍고 깨달은 것은!
02 Animal Iris Recognition
동물은 사람과 좀 다른 홍채와 동공을 갖고 있어
기존 알고리즘 적용이 어렵다는 사실
…
03 Animal Iris Recognition
그러나 새로운 알고리즘을 다시 구현
새로운 알고리즘은 정확하게 동공과 홍채를 찾아냈습니다.
그 중에서도 제일 선명한 이미지만 찾아냄!
저희 개님은 맹견이라… 테스트 하는데 힘
들었습니다.
그 동안 상납한 간식 값만 해도…ㅎㄷㄷ
04 Performance
반려견님이 움직이지만 않으면
5~10초 이내에 인식되었습니다
아직은 많은 반려견을 테스트 해보지는 못 했습니다
단지 몇 마리의 반려견만 했습니다
DB는 지속적으로
구축될 예정입니다
05 Conclusion
동물 홍채 인식에 관심 있으신 분은
이메일로 연락 주십시오.
감사합니다.
niceutra2@naver.com
반려견의 홍채 인식이 가능하다
Python으로 홍채 인식도 할 수 있다
그래서 결론은, 더욱 열심히 Python합시다

Mais conteúdo relacionado

Mais procurados

ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...Hajime Mihara
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>エピック・ゲームズ・ジャパン Epic Games Japan
 
3次元計測とフィルタリング
3次元計測とフィルタリング3次元計測とフィルタリング
3次元計測とフィルタリングNorishige Fukushima
 
PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~poko ponmaru
 
物理ベースレンダラedupt解説
物理ベースレンダラedupt解説物理ベースレンダラedupt解説
物理ベースレンダラedupt解説h013
 
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜SSII
 
Unreal Engine を用いた、駐車スペース検知のための学習データ生成
Unreal Engine を用いた、駐車スペース検知のための学習データ生成Unreal Engine を用いた、駐車スペース検知のための学習データ生成
Unreal Engine を用いた、駐車スペース検知のための学習データ生成Silicon Studio Corporation
 
Maritime Industries with Standards such as GS1, IMO, ISO, etc.
Maritime Industries with Standards such as GS1, IMO, ISO, etc.Maritime Industries with Standards such as GS1, IMO, ISO, etc.
Maritime Industries with Standards such as GS1, IMO, ISO, etc.DaeyoungKim58
 
Siftによる特徴点抽出
Siftによる特徴点抽出Siftによる特徴点抽出
Siftによる特徴点抽出Masato Nakai
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説Silicon Studio Corporation
 
Tutorial on Object Detection (Faster R-CNN)
Tutorial on Object Detection (Faster R-CNN)Tutorial on Object Detection (Faster R-CNN)
Tutorial on Object Detection (Faster R-CNN)Hwa Pyung Kim
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTERエピック・ゲームズ・ジャパン Epic Games Japan
 
アーティスト向けNSightの手引き
アーティスト向けNSightの手引きアーティスト向けNSightの手引き
アーティスト向けNSightの手引き祐 梶井
 
Color Science for Games(JP)
Color Science for Games(JP)Color Science for Games(JP)
Color Science for Games(JP)Hajime Uchimura
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝NAVER Engineering
 
実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~Silicon Studio Corporation
 
攻略リニアカラー改訂版
攻略リニアカラー改訂版攻略リニアカラー改訂版
攻略リニアカラー改訂版小林 信行
 
CVPR2019読み会 "A Theory of Fermat Paths for Non-Line-of-Sight Shape Reconstruc...
CVPR2019読み会 "A Theory of Fermat Paths  for Non-Line-of-Sight Shape Reconstruc...CVPR2019読み会 "A Theory of Fermat Paths  for Non-Line-of-Sight Shape Reconstruc...
CVPR2019読み会 "A Theory of Fermat Paths for Non-Line-of-Sight Shape Reconstruc...Hajime Mihara
 

Mais procurados (20)

ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
UE4モバイルでノンゲームコンテンツ
UE4モバイルでノンゲームコンテンツUE4モバイルでノンゲームコンテンツ
UE4モバイルでノンゲームコンテンツ
 
3次元計測とフィルタリング
3次元計測とフィルタリング3次元計測とフィルタリング
3次元計測とフィルタリング
 
実行速度の最適化のあれこれ プラス おまけ
実行速度の最適化のあれこれ プラス おまけ  実行速度の最適化のあれこれ プラス おまけ
実行速度の最適化のあれこれ プラス おまけ
 
PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~
 
物理ベースレンダラedupt解説
物理ベースレンダラedupt解説物理ベースレンダラedupt解説
物理ベースレンダラedupt解説
 
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
 
Unreal Engine を用いた、駐車スペース検知のための学習データ生成
Unreal Engine を用いた、駐車スペース検知のための学習データ生成Unreal Engine を用いた、駐車スペース検知のための学習データ生成
Unreal Engine を用いた、駐車スペース検知のための学習データ生成
 
Maritime Industries with Standards such as GS1, IMO, ISO, etc.
Maritime Industries with Standards such as GS1, IMO, ISO, etc.Maritime Industries with Standards such as GS1, IMO, ISO, etc.
Maritime Industries with Standards such as GS1, IMO, ISO, etc.
 
Siftによる特徴点抽出
Siftによる特徴点抽出Siftによる特徴点抽出
Siftによる特徴点抽出
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説
 
Tutorial on Object Detection (Faster R-CNN)
Tutorial on Object Detection (Faster R-CNN)Tutorial on Object Detection (Faster R-CNN)
Tutorial on Object Detection (Faster R-CNN)
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
 
アーティスト向けNSightの手引き
アーティスト向けNSightの手引きアーティスト向けNSightの手引き
アーティスト向けNSightの手引き
 
Color Science for Games(JP)
Color Science for Games(JP)Color Science for Games(JP)
Color Science for Games(JP)
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝
 
実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~
 
攻略リニアカラー改訂版
攻略リニアカラー改訂版攻略リニアカラー改訂版
攻略リニアカラー改訂版
 
CVPR2019読み会 "A Theory of Fermat Paths for Non-Line-of-Sight Shape Reconstruc...
CVPR2019読み会 "A Theory of Fermat Paths  for Non-Line-of-Sight Shape Reconstruc...CVPR2019読み会 "A Theory of Fermat Paths  for Non-Line-of-Sight Shape Reconstruc...
CVPR2019読み会 "A Theory of Fermat Paths for Non-Line-of-Sight Shape Reconstruc...
 

Semelhante a Animal iris recognition

동물 홍채인식부터 서버까지
동물 홍채인식부터 서버까지동물 홍채인식부터 서버까지
동물 홍채인식부터 서버까지진성 정
 
9강 camera advanced light2
9강 camera advanced light29강 camera advanced light2
9강 camera advanced light2JP Jung
 
Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920SeonOh Lee
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art TechnologiesSangYun Yi
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
안전한세상만들기[무단횡단사고방지시스템]제안서최종본
안전한세상만들기[무단횡단사고방지시스템]제안서최종본안전한세상만들기[무단횡단사고방지시스템]제안서최종본
안전한세상만들기[무단횡단사고방지시스템]제안서최종본재성 장
 
June report in korean
June report in koreanJune report in korean
June report in koreannao takatoshi
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현BOAZ Bigdata
 
Convolutional neural network
Convolutional neural networkConvolutional neural network
Convolutional neural networkrlawjdgns
 
202109 머신비전협회보.pdf
202109 머신비전협회보.pdf202109 머신비전협회보.pdf
202109 머신비전협회보.pdfssuser54247f1
 
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdfTae wook kang
 
0425 꽃길만걷자 조
0425 꽃길만걷자 조0425 꽃길만걷자 조
0425 꽃길만걷자 조김 유정
 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypiYeonah Ki
 
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱MinGeun Park
 
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...홍배 김
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 

Semelhante a Animal iris recognition (20)

동물 홍채인식부터 서버까지
동물 홍채인식부터 서버까지동물 홍채인식부터 서버까지
동물 홍채인식부터 서버까지
 
9강 camera advanced light2
9강 camera advanced light29강 camera advanced light2
9강 camera advanced light2
 
Lighteye 222
Lighteye 222Lighteye 222
Lighteye 222
 
Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art Technologies
 
Vision sensors brochure 2012
Vision sensors brochure 2012Vision sensors brochure 2012
Vision sensors brochure 2012
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
안전한세상만들기[무단횡단사고방지시스템]제안서최종본
안전한세상만들기[무단횡단사고방지시스템]제안서최종본안전한세상만들기[무단횡단사고방지시스템]제안서최종본
안전한세상만들기[무단횡단사고방지시스템]제안서최종본
 
June report in korean
June report in koreanJune report in korean
June report in korean
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [AutoCar죠] : 자율주행 로봇 층간 이동을 위한 인지 기능 구현
 
Convolutional neural network
Convolutional neural networkConvolutional neural network
Convolutional neural network
 
202109 머신비전협회보.pdf
202109 머신비전협회보.pdf202109 머신비전협회보.pdf
202109 머신비전협회보.pdf
 
Test2
Test2Test2
Test2
 
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
오픈소스로 쉽게 따라해보는 Unreal과 IoT 연계 및 개발 방법 소개.pdf
 
0425 꽃길만걷자 조
0425 꽃길만걷자 조0425 꽃길만걷자 조
0425 꽃길만걷자 조
 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypi
 
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
 
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 

Animal iris recognition

  • 2. S회사 S/W 개발자 Python은 2년째 배우는 중 우리 개님을 사랑하는 동물애호가 예비 딸바보 이번 발표 내용은 회사와 관계없는 개인 프로젝트 About Me 정 진 성
  • 3. Index Iris Recognition Agent & Server Prologue Feature of Iris Feature of Iris Recognition Iris Recognition Algorithm Introduce Opencv & Numpy Noise Filtering 01 02 03 04 05 06 Localization Normalization Feature Extraction Quantization & Binary Hdistance Appendix 07 08 09 10 11 12 Architecture Agent 01 02 Animal Iris Recognition DB Schema Log System 03 04 Animal Iris Recognition & Conclusion01
  • 4. Purpose Of Presentation Python으로 동물 홍채 인식을 만든 경험을 공유합니다
  • 5. 반려동물 홍채 H/W 반려동물 신분증 01 Prologue ㅣ 홍채인식을 통한 반려동물 신분증
  • 6. 02 Feature of Iris Pupil(동공) Iris(홍채) Sclera(공막) Ciliary body lens Blind spot retina Optical nerve 사람과 동물 모두 홍채가 존재한다. 공막(sclera)이 보이는 동물은 사람이 유일하 다. 홍채는 동공의 크기를 조절하는 근육의 무늬다. 동공 주위의 근육이 수축과 이완을 통해 동공의 크기를 조절한다. 빛의 세기에 따 라 동공의 크기 가 변하고, 이에 따라 홍채의 면 적도 변한다. 일란성 쌍둥이 의 홍채가 다르 고 좌우의 홍채 또한 다르다.
  • 7. 03 Feature of Iris Recognition 홍채가 같을 확률은 수학적으로 1/(10^52) 홍채 0.0000001~0.0001%(한쪽 눈) 지문 0.001~0.01% 목소리 0.1% 얼굴 1~1.3% 생체 인식 기술별 오류 확률 홍채의 패턴을 인식하는 기술 *실제 기술에서는 10억 분의 1 오인식률이 가장 낮음
  • 8. 04 Iris Recognition Algorithm 홍채 인식 알고리즘 Localization Image Capture Normalization Feature Extraction Binary Pattern Store Pattern Comparison Threshold Decision Dr. John Daugman 1991년 원천 특허로 세계 최초 출원
  • 9. 05 Introduce Opencv & Numpy 홍채인식 알고리즘을 설계하기 위해서는 수학이 필수지만, 공식만 봐도 너무 어렵다.
  • 10. 06 Introduce Opencv & Numpy 그러나 우리를 도와줄 Opencv와 Numpy가 있다!! Python library Casias DataBase 홍채인식용 이미지 DataBase http://www.cbsr.ia.ac.cn/china/Iris%20Databases%20CH.asp ※ 동물 홍채 이미지 DataBase는 존재하지 않기 때문에 사람의 DB를 갖고 진행 Python 3.5.2 Opencv-python 3.4 Numpy 1.14
  • 11. 07 Introduce Opencv & Numpy Gary Bradsky에 의해 1996년 인텔에서 시작된 프로젝트며, 컴퓨터 비전, 머신러닝 등 다양한 알고리즘 지원과 C++, java 등의 다양한 언어로도 지원되고 있다. Opencv-Python은 C++ API를 Python으로 랩핑함(Opencv C++과 성능이 비슷) Open Computer Vision
  • 12. 08 Introduce Opencv & Numpy 수학 연산을 위해 최적화된 라이브러리이며 행렬연산을 쉽게 할 수 있도록 도와준다. [[18 20 22 ... 59 51 45] [18 20 22 ... 61 53 47] [18 20 22 ... 64 56 49] ... [29 34 37 ... 90 92 93] [29 34 37 ... 89 91 93] [28 34 36 ... 88 90 92]]
  • 13. 09 Noise Filtering 이미지에는 다양한 노이즈들이 존재합니다. Noise Filtering을 통해 성능을 향상시킬 수 있습니다. Opencv에서 다수의 Filter를 제공하므로 Salt & Pepper Noise 제거에 효과적인 Median Filter를 적용합니다. Original K=21 K size = 3
  • 14. 10 Localization Localization : 이미지에서 홍채 영역을 추출하는 것을 의미 홍채 영역에서 동공의 영역을 뺀 부분이 순수한 홍채의 영역입니다.
  • 15. 11 Localization 동공은 경계가 분명하기 때문에 찾기가 쉬운 편입니다. Hough circle을 이용하여 동공을 찾을 수 있습니다.
  • 16. 12 Localization 동공을 잘 찾기 위해서는 적절한 Parameter Value를 주는 것이 중요합니다. 적절한 Parameter Value를 찾기 위해서는 이미지를 분석하고 특징을 찾아야 합니다.
  • 17. 13 Localization 홍채는 동공처럼 경계가 뚜렷하지 않기 때문에 정확하게 찾기가 힘들지만 적절한 Parameter를 넣은 HoughCircle을 이용해서 찾을 수 있습니다. 이 알고리즘은 99% 이상의 검출률을 갖고 있습니다. (Casias Image 2500장 기준)
  • 18. 14 Normalization HoughCircle을 통해 찾은 홍채영역의 중심 좌 표와 반지름을 갖고 홍채영역의 값들을 추출 하여 2D Array 하는 것이 Normalization 입니다.(원 -> 직사각형) Opencv에 있는 LinearPolar라는 함수를 이용 할 겁니다. cv2.linearPolar(src, (center_x, center_y), radius, cv2.WARP_FILL_OUTLIERS) ※원본 이미지가 330과 300이 바뀌어 있습니다.
  • 19. 15 Normalization 원을 완벽하게 직사각형화할 수가 없기 때문 에 linearPolar를 이용하더라도 약간의 왜곡은 발생합니다. Source linearPolar custom Opencv의 linearPolar 함수의 결과는 원본 이미지와 동일한 사이즈로 반환 되기 때문에 왜곡이 크게 발생하여 linearPolar 함수를 재설계하였습니다.
  • 20. 16 Normalization linearPolar된 이미지에서 동공 영역을 제거하면 완벽한 홍채영역 이미지를 얻을 수 있습니다. 홍채영역에 있는 눈썹, 눈꺼풀은 노이즈이기 때문에 필터를 통해 제거해야 정확한 홍채 패턴을 얻을 수 있습니다. Detection Image linearPolar
  • 21. 17 Feature Extraction Normalization된 이미지에서 홍채무늬의 특징을 추출해야 합니다. 특징은 pixel의 크기값(Magnitude)이 아닌 무늬의 방향(Phase)를 추출하는 것입니다. 추출 방법에는 2D Gabor filter, wavelet 등이 있습니다. 두 방법 모두 Opencv에서 제공하는 함수가 없기 때문에 직접 구현해야 합니다. FeaturelinearPolar
  • 22. 18 Quantization & Binary 추출한 홍채 패턴을 저장 및 비교를 위해 Binary로 변환해야 합니다. Quantization(양자화)를 위해 적절한 Level을 설정하셔야 합니다.(4 level로 설정) 보통은 Phase는 복소수로 이뤄졌기 때문에 360도를 4분면으로 나누면 한 분면 당 Phase의 범위는 90도가 될 것입니다. 4분면을 binary로 표현하기 위해서 2개의 bit가 필요합니다.
  • 23. 19 HDistance H(Hamming) Distance : 같은 비트 수를 갖는 2진 코드 사이에 대응되는 비트 값이 일치하지 않는 것의 개수 각 Bit끼리 XOR연산으로 구할 수 있다. A:101011, B:110010, A와 B의 Hdistance는 3이다.
  • 25. 01 카메라 선정 일반 카메라는 빛 반사로 인해 홍채 촬영이 어렵기 때문에 적외선 카메라가 필요합니다 카메라 화소, 센서 크기, S/N 등 조건에 따라 6대의 적외선 카메라, 20개의 렌즈, 4개의 적외선 LED를 조합하여 테스트하였습니다 5 ~ 35cm 내에서 거리별로 홍채인식 구현 및 테스트하여 최적의 거리와 최적의 카메라를 찾았습니다 5 3510 15 20 25 30 Infrared Camera
  • 26. 02 Image Capture; 홍채인식 알고리즘의 핵심 Good Image을 얻는 것은 오인식률과 자원낭비를 낮추고 정확도를 올릴 수 있습니다. Good Image Bad Image Blur가 없을 것 초점이 맞을 것 이미지 안에 동공(Pupil)과 홍채(Iris)가 찍혀 있을 것
  • 27. 03 Blur Detection 이미지 흐림(Blur)이 있는지를 판별 Laplacian 함수는 이미지의 가로와 세로에 대한 Gradient(기울기)를 2차 미분한 값이며, Edge를 검출 하는데 사용됩니다. Laplacian Value가 클수록 선의 경계가 뚜렷하며, Blur가 적은 이미지라고 판단할 수 있습니다.
  • 28. 04 Blur Detection 예제에서는 Threshold의 값을 200으로 하였지만 찍으려는 물체의 이미지에 얼마만큼의 강한 경계를 포함하고 있느냐에 따라 다르 고, Blurry한 이미지이나 강한 선 하나 때 문에 Threshold를 넘기도 합니다. 그래서 Blur를 판단할 수 있는 여러 개의 알고리즘을 사용해야 합니다. ! 주의할 점
  • 31. 02 Architecture 결국 MSA(Micro Service Architecture)로 가기 위한 구성 App, Web, Agent는 Client이며, 역할이 다르고 접근하는 정보도 다르기 때문에 각각의 서버로 직접 접근하기보다는 하나의 API Gateway로 연결. Recognition에서는 홍채인식 알고리즘이 돌아가기 때문에 CPU 작업이 많아 서버를 따로 분리 Write/Read 성능이 좋은 NoSQL Mongo DB에 생체 정보를 저장 User Server에서는 User관리, 홍채 정보 검색 등의 역할을 함
  • 32. 03 Library For Agent & Server - Python 3.5.2 - DjangoRestFramework 3.8.2 - Django 2.0.7 - Postgres 9.3 - MongoDB 3.6 - Pyscopg2 2.7.4 - Pymongo 3.6.1 - Log4mongo 1.6.2 - Phonenumberslite 8.9.5 - Python 3.5.2 - Pyinstaller 3.1.1(PyQt 5.11.2 버전 미지원) - PyQt 5.10.1 Server Agent
  • 33. 04 Agent Beta Version Agent : USB 적외선 카메라로 이미지를 얻기 위한 Windows용 프로그램 Command 실행이 아닌 직관적인 Gui가 필요 -> PyQt 대부분의 사용자 PC는 윈도우 -> Pyinstaller로 해결
  • 34. 05 Agent 로그인(Agent를 사용할 User의 정보)과 MainView로 구성 MainView : 정보 입력 및 출력 창, 메뉴, 카메라 화면 등으로 구성 Pyinstaller extractor를 방지하기 위해 SecretKey를 이용하여 encryption화 Qthread를 이용하여 같은 window에서 화면이 재생되도록 구현 Main View Login View
  • 36. 07 DB Schema(PostgreSQL) PostgresSQL - ForeignKey로 User와 연결 - biometricsID는 홍채정보가 MongoDB에 저장된 후에 반환되는 unique ID (=OneToOne field)
  • 37. 08 DB Schema(MongoDB) MongoDB - Write/Read가 SQL보다 빠릅니다. - 홍채 정보는 indexing을 할 수 없기 때문에 매번 1:N 비교를 해야하기 때문에 Read의 성능이 좋아야 함 - Schema가 자유롭기 때문에 동물 정보에 대한 Schema가 명확하지 않은 현 상황에 적합
  • 38. 09 Log System Python logging처럼 쓰면서 File이 아닌 MongoDB에 저장할 수 있습니다. Log4mongo(1.6.2)라는 Package가 필요합니다.
  • 39. 10 Log System MongoHandler를 상속받아서 emit 부분을 다음과 같이 overriding DB와 Connection fail일 때 파일에 에러를 쓸 수 있도록 Custom하였습니다.
  • 41. 01 Animal Iris Recognition 수천 장의 사진을 찍고 깨달은 것은!
  • 42. 02 Animal Iris Recognition 동물은 사람과 좀 다른 홍채와 동공을 갖고 있어 기존 알고리즘 적용이 어렵다는 사실 …
  • 43. 03 Animal Iris Recognition 그러나 새로운 알고리즘을 다시 구현 새로운 알고리즘은 정확하게 동공과 홍채를 찾아냈습니다. 그 중에서도 제일 선명한 이미지만 찾아냄! 저희 개님은 맹견이라… 테스트 하는데 힘 들었습니다. 그 동안 상납한 간식 값만 해도…ㅎㄷㄷ
  • 44. 04 Performance 반려견님이 움직이지만 않으면 5~10초 이내에 인식되었습니다 아직은 많은 반려견을 테스트 해보지는 못 했습니다 단지 몇 마리의 반려견만 했습니다 DB는 지속적으로 구축될 예정입니다
  • 45. 05 Conclusion 동물 홍채 인식에 관심 있으신 분은 이메일로 연락 주십시오. 감사합니다. niceutra2@naver.com 반려견의 홍채 인식이 가능하다 Python으로 홍채 인식도 할 수 있다 그래서 결론은, 더욱 열심히 Python합시다