kookmin-sw / 2019-cap1-2019_4

Flex Ads to implement advertising system in offline market
MIT License
10 stars 7 forks source link

Jetson TX1 을 활용한 회원 등록 시스템의 구현 #63

Closed james-sungjae-lee closed 5 years ago

james-sungjae-lee commented 5 years ago

실제 Flex Ads 가 마켓에서 사용될 때는, 이미 등록된 회원에 대하여 Face 등록만 하면 되지만,

Flex Ads Demo 를 위해서는 새로운 사람의 얼굴과 이름을 시스템에 등록하는 과정이 필요하다

이를 위해서 Jetson TX1 을 보조로 사용하여 얼굴 등록 시스템을 구현하도록 한다.

  1. detectnet-camera facenet 을 이용하여 얼굴 데이터셋을 생성한다.

  2. 어떤 상품을 추천받고자 하는지 고객이 선택한다.

  3. DynamoDB 에 해당 고객의 이름을 적절한 상품의 user_id 에 맞게 등록한다.

  4. 해당 user_id 를 이용하여 얼굴 데이터셋을 학습시킨다

대부분의 사항은 이미 구현되어 있으며, 다음과 같은 사항을 구현하고자 한다.

james-sungjae-lee commented 5 years ago

Jetson TX1 에서 동일한 detectnet-camera facenet 코드를 작동시켰음에도, cropped image 가 저장될 때

상하좌우로 n 배율 되어 저장되지 않고, bounding box 만 crop 되어 저장되는 문제가 발생하였다.

이를 해결하기 위해 우선 jetson tx1 에서 직접 utils 에 존재하는 loadimage.cpp 코드를 수정하여 새롭게

빌드해볼 필요가 있다. 이 때, camera port 를 1번으로 재설정 하는 것을 꼭 확인한다.

james-sungjae-lee commented 5 years ago

Script 를 이용하여 얼굴 등록 시스템의 Pipeline 을 구축할 수 있을 것으로 보인다.

  1. 기본적으로 작업할 위치는 Desktop/facedataset 디렉토리이다.

  2. 해당 디렉토리에는 add_member.py 와 detectnet-camera 의 두 파일이 존재한다.

  3. abcd 라는 사람이 등록을 하려고 오면, mkdir abcd 로 해당 사람의 데이터셋 폴더를 생성해준다

  4. detectnet-camera 를 abcd 로 cp 또는 mv 한다

  5. abcd 디렉토리에서 detectnet-camera facenet 을 실행한다.

  6. 충분히 얼굴 데이터셋이 생성되었다면, detectnet 을 종료하고 얼굴 데이터셋을 확인시켜준다

  7. 해당 디렉토리에 남아있는 detectnet-camera 파일을 삭제, 또는 mv 한다.

  8. 상위의 facedataset 디렉토리로 이동한다.

  9. 해당 위치의 add_member.py 를 실행시키고, 해당 회원의 이름으로 만들었던 디렉토리 abcd 를 username 으로 입력한다.

  10. 등록하고자 하는 회원 번호를 user_id 로 입력한다

( 이 때, DynamoDB 도 함께 등록되면 편할 것으로 보인다. )

  1. 얼굴 등록이 완료된 후, 정확하게 등록되었는지 한 번 체크하는 과정이 필요하다.

전체 Pipeline 이 몇 분정도 소요될지에 대해 생각하고, Demo 시에 앞에 명시해 두는 것이 필요하다.

james-sungjae-lee commented 5 years ago

@jiisoo

회원 등록 시스템을 구축하는데, 회원을 등록할 때 user_name 과 user_id 를 함께 받아오게 됨

이 때, DynamoDB 도 함께 연동해서 한 번에 등록 처리하면 하나의 Pipeline 으로 손쉽게 관리 가능할 것 같아

다만 문제는 AWS 에서 내쪽의 Rekognition 과 지수쪽의 DynamoDB 권한이 달라서 문제가 되는데

가능하다면 내가 DynamoDB 를 Modify 또는 Insert 하는 권한을 부여받아서 처리 가능하면 좋을 것 같아

Jisoo-Min commented 5 years ago

오빠 계정아이디로 권한 줬는데 DynamoDB접근권한 확인해볼래요.? 확인은 어떻게 하는지모르게찌만 fullaccess줬씀니다@

james-sungjae-lee commented 5 years ago

DynamoDB 는 오레곤(us-west-2) 에 있으며, client 생성 시 region_name = 'us-west-2' 로 지정하여야

정상적인 접근이 가능합니다

추가적으로, 동일한 머신에서 두 개 이상의 credential 을 사용하기 위해 우선은 id 와 key 를 코드에 임베딩 해 놓았으나

더 좋은 보안을 위해 다른 방법을 찾아볼 필요가 있습니다.

간단히 떠오르는 방법으로는, dynamodb_key.py 파일을 만들어, 해당 부분을 credential 처럼 취급하여

import 하여 간단하게 사용하는 방법이 가능할 것으로 보입니다.

james-sungjae-lee commented 5 years ago

전체 회원등록 파이프라인에 대한 구현 및 테스트가 완료되었기에, 이슈를 닫습니다.

Jisoo-Min commented 5 years ago

수고했씀니다아~~~~