#python #tensorflow #classification #conv-neural-network
#python #tensorflow #классификация #conv-нейронная сеть
Вопрос:
Я использую это репозиторий для запуска классификатора для изображений с началом. Однако вместо того, чтобы работать с изображениями, я хочу, чтобы он перебирал видео и запускал обнаружение для каждого кадра. Я настроил read_tensor_from_image_file()
функцию так, чтобы она могла обрабатывать кадр вместо файла изображения, так что это здорово. Однако теперь происходит то, что для каждого кадра запускается новый сеанс tensorflow из-за этого бита:
with tf.Session(graph=graph) as sess:
start = time.time()
results = sess.run(output_operation.outputs[0],
{input_operation.outputs[0]: t})
end=time.time()
results = np.squeeze(results)
(t определяется как t = read_tensor_from_image_file()
)
Мой вопрос: как я могу изменить этот код, чтобы я мог запускать классификацию для кадра, не инициируя новый tf.Session для каждого кадра. Вместо этого я хочу запустить один tf.Session в начале видео и закрыть его в конце видео.
Комментарии:
1. Переместите часть with tft.Session в соответствующую область и передайте объект sess туда, где это необходимо
2. Хорошо, это действительно сработало. Я перешел с tf.Session вверх, так что это стало:
graph = load graph(), with tf.Session: for frame in video, t = sess.run()
.3. Отлично. Вы дадите ответ на свой пост и одобрите его? Тогда другие тоже легко найдут решение
Ответ №1:
graph = load_graph(model_file)
with tf.Session (graph=graph) as sess: # initiate tensorflow session
for t in frame_list: # framelist is a list with all frames
results = sess.run(output_operation.outputs[0],
{input_operation.outputs[0]: t})