메뉴 건너뛰기

Q&A

  • 현재 올려주신 3..1.4 용 빌드가 빌드만 되고 apk로 실행이 되지 않습니다. [개발/IT관련]
  • 티훈
    조회 수: 77, 2018.10.10 18:38:48
  • 현재 .pb파일과 label을 만든 txt파일을 넣고서 실행중인데 빌드는 제대로 되는데 apk를 실행하면 크래쉬가 납니다. 딱히 특정한 에러코드가 뜨는 것도 없이 막무가내로 실행이 안되기에 어떻게 해야할 지 모르겠네요. 디버깅할 때 멈춘 위치에 대해서 보여드리겠습니다.

    20181010_debug1.png

     

    20181010_debug2.png

     

    디버그에서 x가 뜨는 것은 아마 쓰레드 사용 부분에 의해 그런 것 같고 TensorflowImageClassifier의 string line을 실행할 때 마다 멈춥니다. 정확한 원인을 모르겠어서 답답하네요 ㅠㅠ


    테스팅환경은 Nexus 5X 28API, 삼성 갤럭시 S8+ 8.0.1 26API 이 두 환경에서 테스팅을 해보았습니다.

댓글 7 ...

  • 공돌이

    2018.10.10 20:57

    콘솔로그는 어떻게 나오나요? pb파일을 로딩못한게 아닌가 싶기는 한데... 콘솔에 로그를 보시면 java exception message가 있을거예요
  • 티훈

    2018.10.10 21:28

    말씀 하시는대로 pb파일이 문제인거 같아요. 하라는대로 했을꺼라 생각하는데 머가 문제인걸까요

     

    에러코드는 이렇게 뜨네요.


    I/TensorImageClassifier: Reading labels from: pika_labels.txt

    I/TensorFlowInferenceInterface: Checking to see if TensorFlow native methods are already loaded

    E/etensorflowdem: No implementation found for long org.tensorflow.contrib.android.RunStats.allocate() (tried Java_org_tensorflow_contrib_android_RunStats_allocate and Java_org_tensorflow_contrib_android_RunStats_allocate__)

    I/TensorFlowInferenceInterface: TensorFlow native methods not found, attempting to load via tensorflow_inference

    W/native: cpu_feature_guard.cc:33 The TensorFlow library was compiled to use SSE instructions, but these aren't available on your machine.

              cpu_feature_guard.cc:33 The TensorFlow library was compiled to use SSE2 instructions, but these aren't available on your machine.

              cpu_feature_guard.cc:33 The TensorFlow library was compiled to use SSE3 instructions, but these aren't available on your machine.

    I/TensorFlowInferenceInterface: Successfully loaded TensorFlow native methods (RunStats error may be ignored)

    E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1

                      Process: com.example.jpkim.simpletensorflowdemo, PID: 20108

                      java.lang.RuntimeException: Error initializing TensorFlow!

                          at com.example.jpkim.simpletensorflowdemo.MainActivity$4.run(MainActivity.java:156)

                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)

                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)

                          at java.lang.Thread.run(Thread.java:764)

                       Caused by: java.lang.RuntimeException: Failed to load model from 'file:///android_asset/pika.pb'

                          at org.tensorflow.contrib.android.TensorFlowInferenceInterface.<init>(TensorFlowInferenceInterface.java:100)

                          at com.example.jpkim.simpletensorflowdemo.TensorFlowImageClassifier.create(TensorFlowImageClassifier.java:113)

                          at com.example.jpkim.simpletensorflowdemo.MainActivity$4.run(MainActivity.java:146)

                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 

                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 

                          at java.lang.Thread.run(Thread.java:764) 

                       Caused by: java.io.IOException: Not a valid TensorFlow Graph serialization: NodeDef mentions attr 'T' not in Op<name=Where; signature=input:bool -> index:int64>; NodeDef: Postprocessor/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSuppression/FilterGreaterThan/Where = Where[T=DT_BOOL](Postprocessor/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSuppression/FilterGreaterThan/Where/Cast). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).

                          at org.tensorflow.contrib.android.TensorFlowInferenceInterface.loadGraph(TensorFlowInferenceInterface.java:392)

                          at org.tensorflow.contrib.android.TensorFlowInferenceInterface.<init>(TensorFlowInferenceInterface.java:96)

                          at com.example.jpkim.simpletensorflowdemo.TensorFlowImageClassifier.create(TensorFlowImageClassifier.java:113) 

                          at com.example.jpkim.simpletensorflowdemo.MainActivity$4.run(MainActivity.java:146) 

                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 

                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 

                          at java.lang.Thread.run(Thread.java:764) 

    I/Process: Sending signal. PID: 20108 SIG: 9

    Disconnected from the target VM, address: 'localhost:8601', transport: 'socket'

     
  • 공돌이

    2018.10.10 22:09

    Caused by: java.lang.RuntimeException: Failed to load model from 'file:///android_asset/pika.pb'

    이 메시지로 보면 원인은 둘중에 하나 같아요
    1) pb파일이 경로내에 존재하지 않거나
    2) pb파일이 모바일에서 읽을수 있는 형태가 아니거나

    2)의 경우는 해당 pb 파일이 정상적인 파일인지 pc에서 image_label.py (이름은 정확히 기억이 안나는데 inference용 스크립트) 로 한번 테스트해보시면 바로 아실 수 있을거예요.

    단, retrain 해서 최초에 나온 pb파일은 op중에 모바일에서 지원하지 않는게 있기때문에 변환을 시켜 비지원 op를 빼야 합니다.
  • 티훈

    2018.10.11 02:37

    넵 알겠습니다. 지금 다시 트레이닝 데이터를 만들어보고 있습니다만 혹시 테스트할 때 쓰셨던 트레이닝 데이터를 첨부해주실 수 있나요? 제 트레이닝데이터가 문제인지, 제가 pb파일 경로설정을 잘못한 것인지 체크를 해보려고 하는데 다시 트레이닝 하는데 시간이 걸리네요 ㅠㅠ 만약 첨부하기에 너무 큰 용량이면 pdh930105@gmail.com 으로 보내주셔도됩니다.

  • 공돌이

    2018.10.11 11:49

    제 놋북을 샅샅이 뒤졌는데...다 지워버리고 없네요...ㅠㅜ. 인셉션 안한지 꽤 돼서리...ㅠㅜ.

    다시 설치해서 샘플까지 만들려면 주중에는 좀 힘들고, 주말에 한번 만들어서 올리거나 보내드리겠습니다...죄송 ㅠㅜ

     

    텐서플로우도 판올림하면서 인셉션 학습용 스크립트도 많이 간편해졌는데, 관련해서는 시간이 될때  강좌를 한번 올려볼게요.

     

    flower_photos를 이용한 쉬운 강좌는, 영어이긴 하지만 아래 내용이 구글에서 공식적으로 제공하는 인셉션 튜토리얼이니 참고하세요.

    (제가 올렸을때랑 비교했을때, 많이 간편해지고, 쉬워져 있습니다)

     

    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0

    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2/#0

     

     

    아, 그리고 올리실때에는 꼭 optimize를 하신 후에 올리셔야 합니다. 그냥 retrained_graph는 모바일에서 정상적으로 동작하지 않습니다.( optimized_for_inference 혹은 quantized 된 그래프를 사용). 요즘은 tensorflow lite란게 나와서 훨씬 크기도 작고 가볍게 사용가능한 방법도 있으니 참고하시구요...

     

     

  • 공돌이

    2018.10.11 11:53

    오...제 친구놈이 안지운거 있다고 하나 보내줬어요...메일로 보내드릴테니 되는지 함 확인해주세요.

  • 티훈

    2018.10.11 12:53

    정말 감사합니다 ㅠㅠ 테스트해보고 다시 연락드리겠습니다

https://meisteruser.net/qna/3710
번호
분류
제목
닉네임
20 마이스터태스크 IRU 16 2018.12.31
19 마이스터태스크 빨강머리 21 2018.12.05
18 마인드마이스터 하여 29 2018.11.04
17 개발/IT관련 이웃집비버 38 2018.11.07
16 마이스터태스크 유화란취 52 2018.03.13
15 마이스터태스크 BadCoach 52 2018.09.14
14 마이스터태스크 JE 52 2018.09.20
13 공지 공돌이 69 2017.02.08
12 마이스터태스크 야곱 74 2018.07.18
개발/IT관련 티훈 77 2018.10.10
10 마인드마이스터 아키쑤 101 2017.03.18
9 마이스터태스크 유화란취 103 2018.03.13
8 마이스터태스크 kapensus 103 2018.04.02
7 마인드마이스터 아키쑤 139 2017.03.23
6 마이스터태스크 김태훈 163 2017.04.20
5 마인드마이스터 유지백 217 2017.05.07
4 마인드마이스터 들울림 244 2017.04.19
3 마이스터태스크 최인규 248 2017.07.24
2 마인드마이스터 은별 306 2018.04.09
1 마이스터태스크 유화란취 453 2018.03.12
태그
위로