일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Vision
- Network
- java
- tcp
- Kafka
- Spring
- zookeeper
- Trino
- JavaScript
- docker
- AWS
- jvm
- CSV
- CVAT
- aws s3
- OS
- helm
- kubectl
- airflow
- Operating System
- grafana
- kubernetes
- Packet
- PostgreSQL
- log
- EC2
- kubeadm
- MAC address
- Python
- ip
- Today
- Total
JUST WRITE
[Vision] GraphDB로 얼굴인식을?!?!(1) - neo4j 구축하기 본문
GraphDB로 얼굴인식을?!?!
Face Recognition은 지문, 동공 인식과 더불어 보안 시스템에 많이 활용되고 있습니다.
요즘 Vision과관련한 Project를 준비하다 보니 Vision 관련 논문도 보고 있습니다.
그러다 팀장님의 소개로 아래와 같은 논문을 알게 되었습니다.
Neo4j와 DeepFace라는 Python Library을 통해 Face Recoginition 기능을 구현한 논문이었습니다.
GraphDB로 얼굴인식을 한다는 것이 너무 신기하였습니다.
따라 해 볼 수 있는 예제가 있어 직접 해보며 어떤 과정으로 얼굴인식을 하는지 알아보기로 하였습니다.
첫 번째 포스팅으로 Neo4 j 설치 과정을 정리해 보았습니다.
Neo4 j 설치
GraphDB에는 Neo4 j, AWS Neptune, ArangoDB 등이 있습니다.
그중에서 Neo4 j를 AWS EC2에 설치하겠습니다.
Amazon Linux 2023 AMI, t3.large 인스턴스에서 설치를 진행하였습니다.
Neo4j는 enterprise가 아닌 community 버전으로 설치하였습니다.
Java 설치
Neo4j 설치에 앞서 Java를 설치합니다.
Neo4j가 Java로 구현되어 있기 때문에 JVM이 필요합니다.
공식 문서에서 enterprise(23/05/05 기준 5.7.0 버전)에 Java 17 버전을 설치하라고 안내합니다.
이번 포스팅에서는 community 4.4.20 버전으로 설치를 진행하였습니다.
해당 버전은 Java 11 버전이 필요합니다.
$ wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
$ tar xzf openjdk-11.0.2_linux-x64_bin.tar.gz
JAVA_HOME을 추가해 줍니다.
$ vi ~/.bashrc
...
JAVA_HOME=$HOME/java/jdk-11.0.2
PATH=$JAVA_HOME/bin:$PATH
export PATH
$ source ~/.bashrc
$ java --version
openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
Neo4 j tar 설치
이제 Neo4j community 버전을 설치합니다.
community 4.4.20 tar 파일을 받아서 설치를 진행하였습니다.
$ mkdir apps && cd apps
$ wget https://neo4j.com/artifact.php?name=neo4j-community-4.4.20-unix.tar.gz
$ tar xzf 'artifact.php?name=neo4j-community-4.4.20-unix.tar.gz'
$ cd ..
$ ln -s ./apps/neo4j-community-4.4.20 neo4j
$ ll
total 0
drwxr-xr-x. 3 ec2-user ec2-user 96 May 5 13:58 apps
drwxr-xr-x. 3 ec2-user ec2-user 67 May 5 13:45 java
lrwxrwxrwx. 1 ec2-user ec2-user 29 May 5 13:58 neo4j -> ./apps/neo4j-community-4.4.20
neo4j.conf 파일을 수정해서 Neo4j Configuration을 변경합니다.
이번 포스팅에서는 Neo4j가 메인이 아니기 때문에 listen 허용 주소를 모두로 변경하였습니다.
참고로 data는 Neo4j path 아래 data 폴더에 저장됩니다.
$ vi neo4j/conf/neo4j.conf
dbms.connectors.default_listen_address=0.0.0.0
Data Science 플러그인 설치
이번 예제에서 필요한 Neo4j Data Science 플러그인을 설치합니다.
공식 Neo4j 사이트에서 compatible 버전을 확인할 수 있습니다.
저는 Neo4j Data Science 2.3.3 버전 플러그인을 설치하였습니다.
$ cd ~/neo4j/plugins
$ wget https://graphdatascience.ninja/neo4j-graph-data-science-2.3.3.zip
$ unzip neo4j-graph-data-science-2.3.3.zip
$ rm neo4j-graph-data-science-2.3.3.zip
$ ll
total 51832
-rw-r--r--. 1 ec2-user ec2-user 2217 Apr 20 12:29 README.txt
-rw-r--r--. 1 ec2-user ec2-user 53068866 Apr 20 08:13 neo4j-graph-data-science-2.3.3.jar
GDS(Grapth Data Science) Library를 허용하도록 neo4j conf값을 수정합니다.
$ vi ~/neo4j/conf/neo4j.conf
dbms.security.procedures.unrestricted=gds.*
dbms.security.procedures.allowlist=gds.*
Neo4j 실행
마지막으로 Neo4j HOME도 PATH에 추가해 줍니다.
$ vi ~/.bashrc
...
JAVA_HOME=$HOME/java/jdk-11.0.2
NEO4J_HOME=$HOME/neo4j
PATH=$JAVA_HOME/bin:$NEO4J_HOME/bin:$PATH
export PATH
$ source ~/.bashrc
enterprise 버전이면 license 세팅을 해야 하지만 community 버전이라 생략합니다.
Neo4 j를 Daemon으로 실행합니다.
$ neo4j start
Directories in use:
home: /home/ec2-user/neo4j
config: /home/ec2-user/neo4j/conf
logs: /home/ec2-user/neo4j/logs
plugins: /home/ec2-user/neo4j/plugins
import: /home/ec2-user/neo4j/import
data: /home/ec2-user/neo4j/data
certificates: /home/ec2-user/neo4j/certificates
licenses: /home/ec2-user/neo4j/licenses
run: /home/ec2-user/neo4j/run
Starting Neo4j.
Started neo4j (pid:4360). It is available at http://0.0.0.0:7474
There may be a short delay until the server is ready.
7474 Port로 Neo4j WEB UI에 접근이 가능합니다.
community 버전에서는 multi database를 지원하지 않습니다.
기본 database인 neo4 j로 접속합니다.
Neo4j 초기 admin 계정 정보는
- ID -> neo4 j
- PW -> neo4j
입니다.(접속 후 비밀번호 재설정 필요)
테스트로 아래 Query로 GDS 플러그인 설치를 확인합니다.
RETURN gds.version();
CALL gds.list();
정리
AWS EC2에 GraphDB 중 하나인 Neo4j를 설치하였습니다.
얼굴인식에 필요한 GDS(Grapth Data Science) 플러그인까지 설치하였습니다.
다음 포스팅에서는 Deepface python Library로 이미지에 있는 얼굴의 Feature을 뽑도록 하겠습니다.
'AI' 카테고리의 다른 글
[Vision] GraphDB로 얼굴인식을?!?!(3) - GraphDB로 얼굴 인식하기 (0) | 2023.05.11 |
---|---|
[Vision] GraphDB로 얼굴인식을?!?!(2) - deepFace로 얼굴 이미지 Feature 추출 (0) | 2023.05.07 |
[Vision] 엔지니어의 Yolo 도전기(3) - Yolo 모델 Train (0) | 2023.04.27 |
[Vision] 엔지니어의 Yolo 도전기(2) - Train Dataset 준비 (2) | 2023.04.16 |
[Vision] 엔지니어의 Yolo 도전기(1) - CVAT을 통한 Auto Labeling (0) | 2023.04.09 |