1 분 소요

1️⃣ Client 구성

센서 정보를 받아 서버쪽으로 전송하기 위해 client를 구성합니다.

영상전송 알고리즘 + 무게


다음과 같이 구성하였을 때 카메라와 무게센서의 인식속도 차이가 존재합니다. 차이로 인해 영상의 인식속도가 떨어지게 됩니다.

인식속도가 떨어지는 것을 개선하기 위해 두 센서의 인식과정을 스레드로 분리해 인식속도를 개선합니다.

영상전송 알고리즘 + 무게 + 멀티 스레드


무게 측정과 영상 존송을 각각이 스레드로 구동 👉 영상 딜레이 ❌, 무게 측정 시간 영향 ❌


2️⃣ Server 구성

① 물체인식

서버에는 물체인식 과정이 진행됩니다.

물체인식을 위해 신경망 프레임워크인 다크넷, 영상처리 라이브러리인 OPCV, 객체인식모델인 YOLO 등과 같은 오픈소스를 사용하였습니다. image

앞 모델학습에서 구한 모델을 다크넷 프레임워크에 적용한 뒤 다중 클라이언트 환경에 맞게 내부 함수를 재설계합니다.
image

② 데이터베이스 업데이트

데이터베이스 업데이트 알고리즘은 아래와 같이 진행됩니다.

  • 새로운 프레임을 지속적으로 수신
  • 물체인식, 무게인식이 모두 성공하면 무게증감 확인으로 이동
  • 무게증감 확인을 통해 장바구니에 물건을 증가시키거나 감소

③ 검색을 통한 추천서비스

추천서비스는 영화 추천 오픈소스를 활용하여 주기적으로 데이터베이스의 연동 사항을 반영해 추천품목을 업데이트 하도록 구성하였습니다.

image

알고리즘오픈소스 ➕ 주기적 DB 변동사항 및 추천 DB 업데이트


DB내 USERBASKET의 변동사항을 CSV에 저장 👉 추천목록 갱신 시 반영

image

DB 변동사항을 CSV 형식에 맞게 변환 및 추가


데이터베이스에 변동사항을 파악하기 위해 주문번호를 이용해 정보만 반영하여 오버헤드를 최소화하였습니다.

3️⃣ QR 코드

QR코드는 카트에 qr코드를 인식하면 유저아이디를 통해 최신 주문번호를 받아옵니다.

① QR코드는 바코드 스캐닝 오픈소스 (ZXing Android Embedded)를 사용해 구성합니다.

② 카트에 qr 코드를 인식하면 데이터베이스에 유저아이디를 업데이트합니다.

QR코드

③ 안드로이드 코드에 유저아이디를 php파일에 전달해 아이디가 일치하면 최신 주문번호를 받아옵니다.

	@Override
  public void onBackPressed() {
  super.onBackPressed();
  showResult2(USER_ID);
  mArrayList = new ArrayList<>(); 
  finish();
  }
    ...


댓글남기기