【问题标题】:Compute mean of HDF5 dataset to use in caffe classification计算 HDF5 数据集的平均值以用于 caffe 分类
【发布时间】:2018-08-04 21:52:02
【问题描述】:

我使用 classification.cpp 根据 caffe 神经网络工具箱中经过训练的网络对我的图像进行分类。 这个文件有一些参数如下:

1-model_file
2-trained_file
3-mean_file
4-label_file
5-test_file

mean_filecaffe-master/build/tools/compute_image_mean 计算。

现在我创建了一个HDF5 数据集并训练了一个网络。所以我有 1,2,4,5 个参数,但我不知道如何计算 mean_file。解决办法是什么?

【问题讨论】:

    标签: c++ neural-network caffe


    【解决方案1】:

    目前 mean_file 是使用 LEVELDB 或 LMDB 数据库中的 compute_image_mean 计算的,不支持 HDF5。由于 hdf5 对 python 非常友好,所以可以使用 python 脚本计算平均值,然后将其保存到 .binaryproto 文件中。

    一个更简单的方法是你可以修改classification.cpp并减去(104,117,124)mean_value,它应该和你模型prototxt文件中的mean_value一样。例如,您可以添加如下函数:

    void Classifier::SetMean(const vector<float> &mean_values) {
       cv::Scalar channel_mean(0);
       double *ptr = &channel_mean[0];
       for (int i = 0; i < num_channels_; ++i) {
           ptr[i] = mean_values[i];
       }
       mean_ = cv::Mat(input_geometry_, (num_channels_ == 3 ? CV_32FC3 : CV_32FC1),channel_mean);
    }
    

    然后您可以使用向量 mean_values (104,117,124) 设置均值。

    【讨论】:

    • 谢谢,在你评论的第二部分,你能解释更多吗? (因为我在c++代码中使用caffe)
    • 我已经编辑了答案,希望对您有所帮助。
    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2017-01-17
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多