2017-02-02 3 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» для начала. Существуют и другие различия.Переобучение Inception5h модель от TensorFlow Android Camera Demo

Я немного новичок в обучении машинам и TensorFlow, поэтому я очень ценю четкие шаги в отношении того, что мне нужно делать.

Спасибо!

+1

модель inception5h найти на download.tensorflow.org уже раздели неиспользуемых узлов для мобильных устройств вывода, который почему он не находит узлы DecodeJpeg и ResizeBilinear. Вы можете попробовать добавить их обратно для переподготовки (вы должны использовать Inceptionv3 GraphDef в качестве ссылки) или просто конвертировать ваши данные изображений самостоятельно в формат RGB размером 224x224 в качестве этапа предварительной обработки. –

+0

@AndrewHarp, было бы неплохо переучиться на полной модели inception5H, а позже запустить optimize_for_inference.py на модели для Android? –

ответ

1

Похоже, что сценарий retrain.py и tutorial был обновлен только для работы с архитектурой mobilenet.

Итак, чтобы решить первую часть вашей проблемы, на самом деле это не начало5h, но оно хорошо работает на мобильных устройствах с гораздо большей точностью, чем inception5h.

Чтобы на самом деле заставить его работать в андроидном примере, вам все равно нужно обновить these settings.

Я думаю, вы должны иметь возможность просто скопировать the settings determined for the mobilenet you choose, from the retrain script, и вам может быть все в порядке.


Если вы хотите использовать другую сеть, которые не имеют настроек в retrain.py то самый простой способ, которым я могу думать, чтобы определить их было бы изучить график с TensorBoard.

Так что, если вы действительно хотели использовать начало работ 5h, вы можете скачать и распаковать его:

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

В конце retrain.py сценария вы можете заметить эти строки:

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()) 

Здесь все переменные сохраняются в виде констант в буфере протокола (пб) файл, который является бинарным («термометром»). Вы также должны сохранить в текстовом файле имена классов модели. Затем, как упоминается в документации по Android, вы должны сохранить эти 2 файла в папке с именем «активы» на пути android для тензора. Затем есть некоторые изменения, которые необходимо сделать для загрузки модели начального уровня v3, которую вы можете увидеть здесь: https://github.com/tensorflow/tensorflow/issues/1269 Надеюсь, это поможет!

+0

Спасибо за ваш ответ, но это не то, что я пытаюсь решить. Я уже знаю, как загрузить мою модель в Android-приложении. То, что я пытаюсь сделать, - переучивать модель Inception5h, которая является намного более тонкой исходной моделью и работает намного быстрее на мобильных устройствах. – alesko007

+0

О, хорошо. Я работал над созданием-v3, поэтому я не могу вам помочь. Удачи вам в ваших исследованиях! – chrisrn

Смежные вопросы