상세 컨텐츠

본문 제목

[Flutter] 간단 비서앱, ML Kit 개념 및 종류

notes

by 서울의볼 2024. 5. 6. 22:05

본문

5.3.1-3)

- OpenAI를 이용한 프로젝트 개발 개요.

- 자연어처리(Natural Language Processing, NLP)는 인간의 언어를 컴퓨터가 이해하고 처리할 수 있도록 하는 인공지능의 한 분야임(RNN, LSTM 등이 있음).

 

5.3.4-5)

- 프로젝트 환경설정(필요 패키지들).

 

5.3.6-11)

- 홈 화면부터 ~ 기타 기능들 구현함.

- 채팅창은 column이 아닌 ListView로 구현함 (메모리 차이 큼).

- ChatGPT API, 기능 구현 리뷰 등 설명.

 

5.3.12)

- 데이터 모델링 시작함.

 

- 홈 화면 - 채팅 위젯 - 채팅 화면(애니메이션 적용) - 기능 구현 - 데이터 모델링 - ChatGPT API 적용 - 채팅 기능 개발 순으로 구현함.

 

5.3.13)

- ChatGPT api 연동. 엄청 상세하진 않아서 조코딩 참고하면 될 듯.

 

5.3.14-15)

- Future와 Stream으로 챗봇 응답 표현해봄.

 

---            ML관련 패키지들 쭉 설명해줌

5.4.1-2)

- 구글 ML kit: 모바일 개발자를 위한 머신러닝으로 모바일에 최적화 되어있음. 이 ml kit는 vision api와 natural language api로 두 가지 종류로 구분 가능

- 바코드 스캔, 얼굴 인식, 텍스트 인식, 이미지 라벨 지정, 객체 감지 및 추적, 디지털 잉크 인식, 자세 인식 등이 있음.

- 위의 예시들이 vision API로 원래는 총 아홉 가지 기술이 있고(언급한 거만 다루게 될 예정임), natural language api는 총 네 가지 기술이 있음.

 

5.4.3)******* 유데미 보강要

- 본격적으로 dart를 사용한 신경망 구현 시작.

- 파이썬에선 보통 NumPy 많이 사용하는데 다트에선 matrix2d로 구현함. Array, list 연산시 도움주는 패키지인 것.

- 기본적으로 neural network를 알고 있는 것을 가정하여 강의해서 개념 보충이 필요함,,,

- 기본 개념을 기반으로 bin/dart_neural_network.dart파일에 기본 연산/신경망 구현함.

- sigmoid 활성화 함수 사용함.

- 결과적으로 뭐 했는지 이해를 거의 못함. 무튼 모든 뉴럴네트워크의 공식은 y = wx + b에서 시작한다는 거 밖에 못알아들음.

- ~27min까지 작성한 절차지향적 신경망을 객체지향화(/클래스화) 하기 위해 새로운 파일에 함수 생성해줌.

 

5.4.4)

- 머신러닝 개발 라이브러리로 3대장이 TensorFlow, PyTorch, Keras가 있는 듯. TensorFlow2.0에 Keras가 들어가서 파이썬 쓰는 사람들은 TensorFlow 많이 쓴다 함.

- ML kit은 sdk고 처음 firebase 기반의 서비스로 공개되었음.

 

5.4.5)

- 바코드 스캐닝은 네트워크 연결 없이 인식 가능함 -> apk에 내장되게 된다는 의미이며 당연히 사이즈가 늘어남(2.4MB 정도래).

- Linear와 2D formats 다 지원함.

- 인식 방식은 각 코너와 raw value를 확인하여 인식하게 됨.

 

5.4.6)

- Text recognition 이론 설명. Text structure는 block, line, element, symbol이 있음.

 

5.4.7)

- 이미지 라벨링 이론 설명. 사진 속 물체 감지&인식, 공장 및 물품 분류, cctv, auto pilot 등에 쓰임.

- object detection 하는 거 보면 classification confidence가 나옴.

- image labeling과 object detection은 조금 다른데, 전자는 사진 안에 특정 바운더리에 물체가 있다 정도 판단하고, 후자가 어떤 물체인지를 인식하는 것.

- object detector는 객체를 감지하여 트래킹이 가능함.

 

5.4.8)

- face detection is the api that detects faces, not the people.

- flutter가 하는 일은 좌표계 값을 받아서 화면 ui 단에 그려주는 역할 -> 얼굴을 잘 인식해서 얼굴을 그려주는 것.

- face mesh detection은 필터 씌우는데 사용되는 468개의 포인트를 얼굴 인식하여 씌워줌. 그 위 좌표에 따라 필터를 만드는 원리래.

 

5.4.9)

- 자세인식은 운동, 의료, 헬스케어, 게임 등에 쓰임. 실시간에도 사용 가능함. 아크탄젠트로 각도 치환도 가능.

- ML kit pose detection produces a full-body 33 point skeletal match.

 

5.4.10)

- digital ink recognition 이론 설명.

 

5.4.11-12)

- 프로젝트 생성하는데 이번엔 application이 아닌 empty project로 시작함.

- 관련 패키지들 다 추가함.

 

5.4.13-15)

- 카메라, 파일 피커, 이미지 피커 패키지 리뷰함. 스마트폰 하드웨어인 카메라를 플러터에서 사용할 수 있도록 하는 게 키포인트임.

 

5.4.15)

- ML packages review. TensorFlow Lite(tflite), google_ml_kit

- 인풋과 아웃풋 사이를 플랫폼 채널이나 메서드 채널이라 부름.

 

 

 

 

Q)

- bin, dist, lib folder별 역할?

 

 

5.5-11)

- 각 Vision API들을 활용한 기능 구현 실습 보여줌.

- 5.6 Text recognition에 영수증 인식 화면 구현함.

- 에뮬레이터 카메라 활용법.

- 인식 개선하는 법도 알려줌.

- ML kit은 안드로이드 ios 사용 가능한데, 안드로이드는 gradle에서 dependency 관리함.

- 에뮬레이터 돌리는데 연산량이 많으면 멈추기 쉬움. 깡통 맥에어로는 쉽지 않을 듯.

- 결국 TensorFlow Lite모델을 native에서 돌리고 추론하고, 플러터 앱에서 그 output을 받음. 그리고 그 데이터를 주고 받는건 method channel을 통함(ML Kit에 내장된 패키지들 활용).

 

 

 

출처: 패스트캠퍼스

관련글 더보기