Kinetica File System(KiFS)를 활용한 이미지 추론

Kinetica File System(KiFS)를 활용한 이미지 추론

 

1. KiFS 설정

 

* Config 설정 후 재실행

enable_kifs = true
kifs_mount_point = /opt/gpudb/kifs

* 확인

1. Data 탭에 KiFS Browser 생성

2. Tablesfilesystem Collection 생성

2. KiFS 이미지 업로드

 

2-1. 웹에서 업로드

1) Create Floder , Upload File(s)

2) Tables > filesystem > __kifs__폴더명 으로 테이블 생성


2-2. mount_point에 직접 업로드

1) mount포인트에 targetfolder 복사

cp -r /targetfolder /opt/gpudb/kifs/mount/

* 주의 사항

- targetfolder에는 이미지 파일만 있어야 함 (다른 folder가 있으면 안됨)

- 상당한 시간이 소요됨 (10000장에 약 1시간 정도)

2) Tables > filesystem > __kifs__폴더명 으로 테이블 생성

 

3. Mnist UDF

3-1. Mnist 데이터 생성

TfMnist_layer3Ingestion.py 실행

/opt/gpudb/core/bin/gpudb_env.sh python Ingestion.py

 

3-2. 데이터 학습


TfMnist_layer3Training.py 실행 (기존 샘플파일인 TfMnist 2layer로 구성되어있고, 3-layer로 수정된 파일)

/opt/gpudb/core/bin/gpudb_env.sh python Ingestion.py

 

3-3. 데이터 추론


TfMnist_layer3Inference.py 실행

/opt/gpudb/core/bin/gpudb_env.sh python Inference.py

4. KiFs를 사용해서 데이터 추론하기

4-1. KiFs를 사용하여 추론한 결과가 담길 테이블을 새로 생성 ( 3.기존 MNIST inferencing 테이블을 그대로 사용해도 됨.)

 


**Mnist_inference_output :  Mnist_inference_input 에 있는 데이터를 사용하여 추론한 결과가 담기는 테이블

Mnist_inference_output_kifs : __kifs_mnist_test에 있는 데이터를 사용하여 추론한 결과가 담기는 테이블

 

4-2. DatabaseDefinitions.py수정

4-3. InferenceUDF.py수정

* 모델은 Mnist_train_output에 있는 모델 그대로 사용

*** __kifs_mnist_test의 이미지 크기는 모두 제 각각임. 모델은 28*28 크기의 이미지로 학습 되었기 때문에

28*28 = 784  배열 형태로 resize해주어야함.

이미지를 읽고 배열 string 형태로 변환 후 resize 해주는 방식(이 과정에서 값의 변형이 일어나면서 이미지가 훼손됨)

 


4.3 데이터 추론 

 TfMnistInference.py 실행

/opt/gpudb/core/bin/gpudb_env.sh python Inference.py

 

4.4 label 값과 조인하여 결과 확인

 

 TfMnisttestlabel.csv import

 

5. 결과 값 비교

5-1. Mnist_inference_output Mnist_inference_output_kifs의 추론 결과 비교

(1)   같은 모델로 데이터 추론 진행

(2)   전체 TEST 데이터 각각 10000

(3)   추론에 성공한 값 조회

1)     select count(*)

from Mnist_inference_output

where predict = label;


80% 의 데이터가 추론에 성공

2)     select count(*)

from Mnist_inference_output_kifs m

join testlabel t

on split(m.name,'.',1) = char64(t.idx)

where m.predict = t.label;


10% 의 데이터만이 추론에 성공

è   resize 문제

 

 

 


TAGS.

Comments