일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 이비즈니스과
- coursera
- 특별전형
- WebHacking
- apollo
- 학생
- TensorFlow
- 인공지능
- 코로나19
- 웹프로그래밍과
- 우분투
- 풀스택
- 등교개학
- 일상
- 해킹방어과
- 머신러닝
- 대나무숲
- 디지털컨텐츠과
- 디미고특별전형
- 플러터
- 디미고
- 웹개발
- 중3
- 시스템해킹
- 워게임
- 디미고입학
- graphql
- 딥러닝
- Flutter
- pwnable.kr
- Today
- Total
꿈이 너무 많은 한 대학생의 공간
5. Tensorflow Lite 로 숫자 인식하기 본문
우리의 Tensorflow Lite 인터프리터의 준비가 완료되었고, 이제 입력값인 숫자 이미지를 인식하는 코드를 작성해 봅시다.
우리는 다음과 같은 것이 필요합니다:
- 입력값을 먼저 처리하는 것: Bitmap 개체를 입력값으로 들어온 이미지의 모든 픽셀 값을 포함하는 ByteBuffer 개체로 변환합니다. 우리는 Kotlin의 float 배열보다 더 빠른 ByteBuffer를 사용할 것입니다.
- 숫자 인식 시작
- 출력값 처리: 가능성을 포함한 배열을 사람이 읽을 수 있는 문자열로 변환
이제 코드를 작성해 봅시다.
1. DigitClassifier.kt 코드 내의 다음과 같은 내용을 찾아봅시다.
private fun classify(bitmap: Bitmap): String {
...
}
입력값인 Bitmap 개체를 모델에게 주기 위해 ByteBuffer 개체로 변환하는 코드를 작성합니다.
조기 처리: 입력값으로 들어온 이미지를 모델이 입력받을 수 있는 형태로 변환
val resizedImage = Bitmap.createScaledBitmap(
bitmap,
inputImageWidth,
inputImageHeight,
true
)
val byteBuffer = convertBitmapToByteBuffer(resizedImage)
그리고 처리된 이미지를 이용해 숫자 인식을 시켜봅시다.
// 모델의 출력값을 포함할 배열을 정의합니다.
val output = Array(1) { FLoatArray(OUTPUT_CLASSES_COUNT) }
// 입력값과 함께 숫자 인식을 실행합니다.
interpreter?.run(byteBuffer, output)
그러면 가장 큰 가능성을 가진 숫자로 인식하고, 예측된 결과와 그에 대한 확신성을 사람이 읽을 수 있는 문자열로 반환합니다. 코드 블럭 앞부분의 return 부분을 다시 작성합니다.
// 조기 처리: 가장 큰 가능성을 가진 숫자를 찾고 사람이 읽을 수 있는 문자열로 변환
val result = output[0]
val maxIndex = result.indices.maxBy { result[it] } ?: -1
val resultString = "Predicion Result: %d\nConfidence: %2f".format(maxIndex, result[maxIndex])
return resultString
- 모델의 숫자인식 처리는 높은 성능을 요구하는 계산 처리이므로 우리는 UI thread를 피해 background thread 에서 실행해야 합니다.
- 그 thread는 안전하지 않기에 Tensorflow Lite 인터프리터의 모든 호출을 인터프리터 전용 thread 를 통해 사용할 것입니다.
본 강의는 구글의 Codelab 강의 중 "Build a handwritten digit classifier app with Tensorflow Lite" 강의를
번역할 것이며, 제가 직접 번역하였기에 오역과 의역이 있음을 알립니다.
'튜토리얼 번역 > 손글씨 숫자 분류기 만들기' 카테고리의 다른 글
7. 심화: 정확도 향상시키기 (0) | 2020.04.22 |
---|---|
6. 배포 및 테스트 (0) | 2020.04.22 |
4. Tensorflow Lite 인터프리터 초기화 (1) | 2020.04.22 |
3. 안드로이드 앱에 Tensorflow Lite 추가하기 (0) | 2020.04.22 |
2-1. 머신러닝 모델 학습시키기 (0) | 2020.04.21 |