2017-02-02 4 views
4

TensorFlow Android Camera Demo은 탁월한 성능을 제공하는 라이브 이미지 인식을 위해 Inception5h model을 사용합니다. Inception5h를 성공으로 재교육하지 못했기 때문에 InceptionV3 model으로 갔지만 이미지 인식에는별로 좋지 않습니다. 그래서 저는 처음에 Inception5h 모델을 재 훈련하려고합니다. 나는 retrain.py을 수정하려고 시도했으나 v3 모델을 위해 작성되었습니다. 5h 모델에는 "pool_3/_reshape : 0", "DecodeJpeg/contents : 0"또는 "ResizeBilinear : 0"텐서가 포함되지 않습니다. 다른 차이점이 있습니다.TensorFlow의 Retraining Inception5h 모델 Android 카메라 데모

저는 기계 학습과 TensorFlow에서 약간의 초보자입니다. 그래서 나는 내가해야 할 일에 대해 명확한 단계를 매우 높이 평가할 것입니다.

감사합니다. retrain.py 스크립트의 끝에서

+1

download.tensorflow.org에서 발견 된 inception5h 모델은 이미 모바일 추론, 사용하지 노드 제거한다 DecodeJpeg 및 ResizeBilinear 노드를 찾지 못하는 이유는 무엇입니까? 재교육을 위해 다시 추가 할 수 있습니다 (Inceptionv3 GraphDef를 참조로 사용할 수 있어야 함). 또는 사전 처리 단계로 크기 224x224의 RGB 형식으로 이미지 데이터를 직접 변환 할 수 있습니다. –

+0

@AndrewHarp, 완전 시작 5H 모델을 다시 교육하고 나중에 Android 용 모델에서 optimize_for_inference.py를 실행하는 것이 좋습니까? –

답변

1

retrain.py 스크립트와 같으며 tutorialmobilenet 아키텍처에서 작동하도록 방금 업데이트되었습니다.

문제의 첫 부분을 해결하기 때문에 실제로는 시작 5 시간이 아니지만 inception5h보다 정확도가 훨씬 뛰어납니다.

실제로 안드로이드 예제에서 실행하려면 these settings을 업데이트해야합니다.

the settings determined for the mobilenet you choose, from the retrain script을 복사 할 수 있으면 좋겠다고 생각합니다.


당신이 다음 retrain.py에 TensorBoard와 그래프를 탐구하는 것을 결정하기 위해 내가 생각할 수있는 가장 쉬운 방법을 설정하지 않은 다른 네트워크를 사용하고자합니다. 당신이 정말는 처음에 5 시간을 사용하기를 원한다면

그래서, 당신은 그것을 다운로드하여 압축을 풉니 수 :

curl -O https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip 
unzip -d inception5h inception5h.zip 

다음, Tensorflow for Poets: 2 codelabrepo에서,이 간단한 스크립트를 잡아 뭔가 그래프 .pb 파일을 변환 tensorboard

curl -O https://raw.githubusercontent.com/googlecodelabs/tensorflow-for-poets-2/master/scripts/graph_pb2tb.py 

을 그리고 당신의 graph.pb에서 실행 : 사용할 수

mkdir tb_graph 
python graph_pb2tb.py tb/inception5h inception5h/tensorflow_inception_graph.pb 

그리고 open it in tensorboard :

tensorboard --logdir tb_graph 

그 다음 그래프에서 찌를 당신은 당신의 자신의 model_info DICT를 작성해야 노드의 이름을 찾을 수 비교적 간단 수 있습니다.

나는 이것이 당신이로 설정할하려는 노드 생각하여 bottleneck_tensor :

TensorBoard screenshot of inception 5h with avgpool0/reshape highlighted

1

이러한 라인을 알 수 있습니다

output_graph_def = graph_util.convert_variables_to_constants(
    sess, graph.as_graph_def(), [FLAGS.final_tensor_name]) 
with gfile.FastGFile(FLAGS.output_graph, 'wb') as f: 
    f.write(output_graph_def.SerializeToString()) 

여기에 모든 변수는 프로토콜 버퍼 (PB) 이진 파일 ('WB')에서 상수로 저장됩니다. 또한 모델의 클래스 이름을 텍스트 파일에 저장해야합니다. 그런 다음 안드로이드 문서에 언급 된대로이 두 파일을 tensorflow의 안드로이드 경로에있는 "assets"폴더에 저장해야합니다. 그렇다면 여기서 볼 수있는 초기 - v3 모델을로드하기 위해 수행해야 할 몇 가지 수정 사항이 있습니다. https://github.com/tensorflow/tensorflow/issues/1269 이것이 도움이되기를 바랍니다.

+0

답장을 보내 주셔서 감사합니다.하지만 제가 풀려고하는 것은 아닙니다. Android 앱에서 내 모델을로드하는 방법을 이미 알고 있습니다. 내가하려는 것은 Inception5h 모델을 재교육하는 것입니다. Inception5h 모델은 훨씬 더 슬림 한 개념 모델이며 모바일 장치에서 훨씬 빠르게 작동합니다. – alesko007

+0

오케이. 저는 처음에 일해 왔습니다.-v3 그래서 당신을 도울 수 없습니다. 당신의 연구에 행운을 비네! – chrisrn