일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- yolo mark
- GPU
- Android Studio
- 자신만의
- 안드로이드 스튜디오
- API
- ubuntu
- Google Map
- 버전 업그레이드
- bazel
- 이미지 인식
- tensorflow
- virtualenv
- 안드로이드
- YOLO
- Android
- CUDA
- opencv
- #YOLO #darknet # cuda #gpu
- 이미지인식
- deep learning
- Python
- 지도
- googlemp
- 현재위치
- cudnn
- Today
- Total
Be happy
tensorflow를 활용한 이미지인식 모바일 어플리케이션 제작-1 본문
tensorflow를 활용한 이미지인식 모바일 어플리케이션 제작-1
해퓌해퓌 2018. 6. 23. 11:11tensorflow를 활용한 이미지인식 모바일 어플리케이션 만드는 과정에 대해 설명드리겠습니다.
일단 이전 글들에서 필요한 환경을 얼추 다 갖추었다고 생각하고 진행하도록 하겠습니다.
1)깃허브에서 최신버전의 tensorflow 소스 설치
저는 tensorflow라는 폴더를 하나 만들고 그 가상환경디렉토리 안에 깃허브소스들을 다운로드 받았습니다.
위와 같이 진행하면 tensorflow 폴더 안에 tensorflow 디렉토리가 만들어지면서 깃허브의 소스가 받아집니다.
여기에는 우리가 사용할 학습, 모바일용 파일빌드, 모바일용 예제 등 모든 소스들이 다 들어가있습니다.
2)학습/테스트/모바일용 그래프 제작에 필요한 파일들 빌드하기
2-1) 각 빌드된 파일들의 역할
a) retrain
: 이미지파일들을 입력받아서 실제 학습을 진행하고, 학습한 결과를 그래프파일( .pb) 과 라벨파일(.txt) 로 생성해주는 역할을 합니다.
b) optimize_for_inference
: retrain 에 의해 생성된 그래프파일은 모바일에서 사용하기에는 맞지 않습니다. retrain에서 나온 pb파일에서 모바일버전에서 호환되지 않는 부분 (DecodeJpeg)을 삭제해서 모바일에 호환되는 버전으로 바꿔줍니다.
c) quantize_graph
: optimized 된 것은 일단 모바일에서 읽을 수는 있지만 파일사이즈가 커서 로딩하다가 메모리 크래쉬가 날 수 있다고 하네요. 그래서 quantize(연산상에서 float숫자들을 일부 반올림)라는 과정을 통해 약간~의 정확도를 희생하고 압축하기 좋은 형태로 만들어줍니다. 실제로 optimzed_for_inference 에서 나온 그래프는 압축이 거의 되지 않지만, quantize하고 나면 압축했을때 원래크기의 거의 20~30% 크기로 줄어듭니다.
d) convert_graphdef_memmapped_format
: quantize된 그래프를 모바일메모리에 매핑시켜 안정성과 속도가 향상되도록 한번 더 변경해줍니다. 이 그래프파일은 모바일메모리에 매핑시키는 버전이다 보니 PC에서는 읽을수가 없습니다.
e) label_image
: 만들어진 그래프파일이 잘 동작하는지 테스트해볼 수 있습니다.
2-2 빌드하는법
위에서 다운로드한 텐서플로우 깃허브 소스폴더로 들어갑니다. 그리고 ./configure 를 실행해서 빌드환경을 설정해줍니다.
몇가지는 선택하거나 입력을 해야하는데, 대부분 디폴트값을 선택하시면 됩니다.
밑에 그림을 참고하셔서 비슷하게 설정해주시면 됩니다.(예를 들어, 추가호 gpu 연산을 활용 하시려면 cuda support를 y로 추가선택하시면됩니다.)
설정완료후 이제 차례대로 빌드를 진행하면 됩니다.
만약 오류가 났다면, 조치 후에 bazel clean --expunge 를 하고 다시 빌드 하는게 좋습니다.
빌드가 다 되었다면 아래와 같은 폴더들이 생성되어있습니다.
필요한 소스들은 다 갖췄으니, 학습을 해보도록 하겠습니다.
'Fish in my hands (2018.3~2018.6) > tensorflow' 카테고리의 다른 글
tensorflow를 활용한 이미지인식 모바일 어플리케이션 제작-3 (0) | 2018.06.23 |
---|---|
tensorflow를 활용한 이미지인식 모바일 어플리케이션 제작-2 (0) | 2018.06.23 |
Bazel 설치하기 (0) | 2018.05.28 |
tensorflow 버전 업데이트 하는 방법 (0) | 2018.05.28 |
ubuntu 16.04에 tensorflow 설치하기(GPU) (0) | 2018.05.28 |