2017-04-19 68 views
1

我使用tensorflow图像识别从main.cc,用命令:TensorFlow图像识别输出格式C++

巴泽勒滨/ tensorflow /示例/ label_image/label_image

电流输出格式中终端是:

2017年4月19日:我tensorflow /.../ main.cc:206]军服(653):0.834307

2017-04-19:I tensorflow /.../main.cc:206]现在位置(668):0.0218693

2017-04-19:I tensorflow /.../main.cc:206]学术袍(401):0.010358

2017年4月19日:我tensorflow /.../ main.cc:206]钉盔(716):0.00800809

2017年4月19日:我tensorflow /。 ../main.cc:206]防弹背心(466):0.00535086

输出功能是:

// this prints out the top five highest-scoring values. 
Status PrintTopLabels(const std::vector<Tensor>& outputs, 
         string labels_file_name) { 
    std::vector<string> labels; 
    size_t label_count; 
    Status read_labels_status = 
     ReadLabelsFile(labels_file_name, &labels, &label_count); 
    if (!read_labels_status.ok()) { 
    LOG(ERROR) << read_labels_status; 
    return read_labels_status; 
    } 
    const int how_many_labels = std::min(5, static_cast<int>(label_count)); 
    Tensor indices; 
    Tensor scores; 
    TF_RETURN_IF_ERROR(GetTopLabels(outputs, how_many_labels, &indices, &scores)); 
    tensorflow::TTypes<float>::Flat scores_flat = scores.flat<float>(); 
    tensorflow::TTypes<int32>::Flat indices_flat = indices.flat<int32>(); 
    for (int pos = 0; pos < how_many_labels; ++pos) { 
    const int label_index = indices_flat(pos); 
    const float score = scores_flat(pos); 
    LOG(INFO) << labels[label_index] << " (" << label_index << "): " << score; 
    } 
    return Status::OK(); 
} 

问题是,我所要的输出是一个列表,如:

军装,镘,学术袍,钉盔,防弹背心

有可能有这样的输出?

+0

执行此命令是否有任何问题?:bazel build tensorflow/examples/label_image/... –

回答

1

是的,我认为这是可能的。替换:

LOG(INFO) << labels[label_index] << " (" << label_index << "): " << score; 

std::cout << label[label_index] << ","; 

还好现在有一个逗号多于我们所需要的。所以我们检查一下,如果它是最后一个概念,并且我们将逗号留下。

我希望有帮助。