메뉴 건너뛰기

Q&A

  • 현재 올려주신 3..1.4 용 빌드가 빌드만 되고 apk로 실행이 되지 않습니다. [개발/IT관련]
  • 티훈
    조회 수: 62, 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
번호
분류
제목
닉네임
19 마이스터태스크 빨강머리 5 2018.12.05
18 개발/IT관련 이웃집비버 31 2018.11.07
17 마인드마이스터 하여 24 2018.11.04
개발/IT관련 티훈 62 2018.10.10
15 마이스터태스크 JE 42 2018.09.20
14 마이스터태스크 BadCoach 47 2018.09.14
13 마이스터태스크 야곱 73 2018.07.18
12 마인드마이스터 은별 301 2018.04.09
11 마이스터태스크 kapensus 98 2018.04.02
10 마이스터태스크 유화란취 93 2018.03.13
9 마이스터태스크 유화란취 51 2018.03.13
8 마이스터태스크 유화란취 392 2018.03.12
7 마이스터태스크 최인규 246 2017.07.24
6 마인드마이스터 유지백 203 2017.05.07
5 마이스터태스크 김태훈 154 2017.04.20
4 마인드마이스터 들울림 224 2017.04.19
3 마인드마이스터 아키쑤 138 2017.03.23
2 마인드마이스터 아키쑤 101 2017.03.18
1 공지 공돌이 67 2017.02.08
태그
위로