본문 바로가기
삽질

NeuroTechonology FingerPrint SDK 13 이용기

by rokwha 2023. 6. 1.

https://rokwha.tistory.com/85

 

http://www.neurotechnology.com/

http://www.neurotechnology.com/생체인식(지문,얼굴,홍체,음성등) 관련 SDK 제품군이 많아서 라이센스가 좀 복잡하지만 필요한것들만 골라서 구매가능 하며 가격은 나름 저렴 함. 주요 SDK 와 해당 SDK에서

rokwha.tistory.com

 

예전에 NeuroTechonology 사의 FingerPrint SDK 를 사용하여 개발했던 프로그램을 약간의 리뉴얼 작업이 있었다.

원래는 별도의 빌드과정없이 그냥 지문 인식기 정도만 새로 납품하여 기존에 사용하던 프로그램에 연동하는 과정 과 콤포넌트( 델파이 콤포넌트가 아니고 SDK 에서 제공하는 라이브러리 지문 추출, 비교) 라이센스 정도만 새로 구입해서 납품 하는정도 였는데 생각지도 못한 복병이..

당시 사용하던 지문 인식기는 슈프리마 바이오 미니 였나 그랬는데 업체에 두대를 사용했는데 현장에서 배치된 것이 외부에 노출된 곳이라서 겨울철에는 인식이 잘 안된다고 했음 아마도 날씨가 추울때 기기가 오작동이 심한거 같음.

게다가 일전에 국내 총판( 총판이 맞는지는 모르겟지만 ... )과 관련 문제로 연락을 주고 받을때 좀 안좋은 기억이 있기도 하고 콤포넌트 도 구매 해야 해서 이래저래 이번에는 https://brucenbrian.com/ 에서 취급하는 스캐너를 사용해보기로 했음.

SDK 자체에서는 꽤 많은 스캐너를 지원 하지만 brucenbrain 에서는 U.are.U 4500 만 취급하는거 같아서 좀 아쉽긴 하지만 이걸로 구했다.

 

생각보다 훨씬 더 컴팩트 한 싸이즈~ 두둥~ ㅋ 너무 작앙~ 근데 생각외로 발열이 좀 있는거 같기도 하고 이번 겨울철 잘 버틸지 모르겟다. 바이오 미니 랑 비교해서는 해상도는 살짝 떨어지는 느낌. 기기 자체도 너무 작아서 스캔 하기 위해서 손가락을 가져다 대면 (주로 엄지) 스캔 시 발생하는 이벤트를 눈으로 확인하기 어려움점이 있다.

스캐너 에서 제공하는 윈도우용 드라이버 로는 아쉽게도 윈도우10 에서 제대로 설치가 안되었다. ( 자세하게는 드라이버는 설치 되었지만 정상작동을 하지 않았다. sdk 에서 제공하는 샘플 프로그램 에서도 내가 만든 프로그램에서도 스캐너가 인식이 안되었다. ) 

Driver Easy 라는 프로그램을 통해서 별도 드라이버를 구해서 그것으로 해결 함.

 

Driver Easy ® | Windows Driver Updater

Driver Easy is a free solution to all driver related problems for Windows 11, 10, 7 Download it now and update all your drivers with just 1 click.

www.drivereasy.com

이번 프로그램 에서도 잘 연동이 되는것을 확인하고 업체로 출발 했으나... 설치 하기로 한 컴퓨터에서는 연동도 잘 되고 지문 스캔도 잘 되고 비교도 잘되고 원샷에 해결 하였으나...

문제는 다른 컴퓨터에서 발생함. 원래 잘 쓰던 컴퓨터 였는데 윈도우를 다시 설치 했다고 하는데 도무지 스캐너가 안올라옴;;; ( 윈도우10, SDK 9, 슈프리마 바이오 미니) 스캐너 드라이버도 콤포넌트 라이센스도 모두 정상적으로 설치 되었는데 이상하게도 프로그램에서 스캐너를 못찾음;;

 

결국 바이오 미니 를 들고 왔음..

원인은 찾지 못하고 결국 SDK를 9 에서 13버전으로 바꾸기로 함.

코드는 그다지 수정 안해도 될정도로고 단지 몇가지 설정 정도만 바꾸는 정도 였는데 업체에서 추가적으로 변경하길 원하는 부분이 있어서 그것때문에 작업량이 많아졌음.

1. 라이센스 관리

 SDK 에서는 SDK 메인 에디션 과 그와는 별개로 각각의 기능 - 지문 추출, 비교 등 - 을 콤포넌트 라 하면서 별도의 라이센스가 필요한데 라이센스를 관리하는 방법이 여러가지가 있음 젤 간단한게 시리얼 번호를 부여받아서 라이센스 관리자 를 통해서 등록 하여 사용하는 방법인데. 간단하지만 좀 번거로운 면도 있음. 예를 들어 사용중이던 컴퓨터에 문제가 생길경우 컴퓨터를 바꾼다든가 할경우 등록한 라이센스를 해제 하여야 하는데 반드시 해당 컴퓨터에서 라이센스 관리자 프로그램을 통해야 하는 번거로움이 있다. 

 

그렇지 못할 상황이 생길수가 있는데 이전에는 Bruce & Brian 에 두어번 해제 요청을 해서 사용했는데 여기도 뭐 귀찮은지 나중엔 못해줄수도 있으니 잘 관리 하라는 연락을 받기도 하고 이번에는 영문으로 요청서를 요청하기도 했다. 여기도 본사에 요청서를 정식으로 넣어서 해결 하는 모양.

시리얼번호를 동글(usb) 에 심어서 사용하는 방식도 있는데 이는 라이센스 구입할때 요청을 해야 하고 이번엔 동글 을 구매하려고 했으나 컴퓨터에 usb 포트가 딱 2개 밖에 없고 해서 그냥 이전 방식으로 ...

딸랑 두대 사용하는데 라이센스 서버까지 구축해서 사용하긴 좀 거시기 하고.. 내부적으로 우리 서버를 이용하는 방법도 있긴 하겟으나 그것도 적어도 추출용 라이센스는 고객 컴퓨터에 넣어야 하기때문에 번거롭기는 매한가지..

 

2. SDK 버전.
SDK 가 9 에서 13으로 훌쩍 올라가서 거기에서 발생하는 이슈가 있다.

첫번째는 내부적인 알고리즘의 변화로 인해서 기존에는 잘 되던것이 요상한 오류가 발생한다. 정식 도큐먼트나 샘플 코드들에 확인 하기도 어려웠다. 

 

Fingers Model file missing.

젤첨 반겨주던 오류. 이상하게도 샘플 프로그램에서는 발생되지 않아서 한참을 헤멧다.

sdk\bin\data 폴더에 관련파일들이 있는데 지문에는 Fingers.ndf 파일이 필요했다.

Specified backends not present.

 

두번째로 반겨주던 오류.

 

sdk\Bin\Win64_x64\InferenceEngines 라는 폴더가 있는데 정확히 어떤게 필요한지는 파악하지 못했고 그냥 전체를 복사해서 넣어줬다.

FingerView 콘트롤.
닷넷용 콘트롤 중에 FingerView 라는게 있는데 지문스캔시 실시간으로 이 콤포넌트를 통해서 확인을 할수가 있다. 아마 9버전에서도 있었던거 같은데 그때는 사용하지 않았는데 이번에 스캐너를 바꾸면서 사용자가 스캔이 진행중인지 아닌지 확인하는게 어려운거 같아서 써봤다. 

굳지 스캐너의 붉은 빛으로 스캔이 되고 있는건지 아닌지 유추 하는것 보다는 컴터 화면을 통해서 지문이 생성되는걸 표현해주니 좋은듯.. 스캔이 끝나면 바로 스캔된 지문과 함께 매치 포인트 등이 표시가 됨.

Aysnc용 함수들.
9 버전에선 못본거 같은데 13에서는 함수끝에 Aysnc 라고 붙은게 있다. 아마도 비동기 전용으로 나온 함수 같은데 내가 닷넷 에 익숙하지가 않아서 걍 이번 버전에서 사용하던 비동기 코드를 그냥 썻음.

Identify.
기존에 유저당 1개의 지문을 등록하여 이를 데이터베이스에 담아두고 클라이언트 에서 모두 파일로 ( Image 와 template ) 저장하고 리를 NSubject 로 로드 해서 스캔시 Verify 함수로 하나하나 비교 하는 방식이였는데 1개당 비교는 금방 (1초이내) 지만 매번 파일을 로드 하고 비교 하고 하는 과정이라 IO 시간도 그렇고 무엇보다도 비교대상자 수가 늘어나면 날수록 운이 없게도 마지막 사람이면 그만큼 시간이 걸리는 구조라 좀 아쉬웠다.

그래서 이번엔 좀더 시간을 단축시켜 볼 참으로 처음에는 지문 파일을 모두 로드 해놓고 볼참으로 NSubject 를 배열로 지문갯수만큼 만들어 놓고 로드 해놓아 봤으나 약간의 시간은 줄이긴 했는데 체감 은 크게 향상되지 않았다.

그래서 이것저것 찾다가 Identify 라는게 있이서 사용해보니 월등한 시간 단축을 할수 있었다. 

이것도 비슷한 방식인거 같은데 NSubject 배열을 따로 엔진에서 Subjects 라는 프로프티에 등록해서 나중에 verify 할때 사용하는것 같음. identify 함수를 통해서 MatchingResults 와 score 를 통해서 맞는 지문을 찾아주는데 1초 이내에 결과를 볼수 있음.

좀더 테스트 하고 닷넷에 ( C# 이나 VB ) 경험이 부족해서 그냥 되는것만 확인하고 그냥 예전 루틴으로 사용하기로 함.

그밖에 SQLite 를 지원하는거 같은데 써보지는 않음.

나중에 PC 용 콤포넌트 라이센스 과 안드로이드 라이센스가 있으니 이를 가지고 써봐야겟다.

반응형