查看完整版本: 發個難度高一點的問題 - deep learning
頁: [1]

stephenwei_lu 發表於 2019-12-13 01:37 PM

發個難度高一點的問題 - deep learning

opencv在3.x 的某個版本之後, 加載了 DNN模組
這樣一下你不就需要用到caffe的model 要裝caffe
用到tensorflow要裝tensorflow, 但是他目前的缺點是 不支援CUDA
所以以caffex來說最終要硬體加速還是需要寫caffe的code 去跑
所有文件都在告訴你, 官方提供的example/cpp_classification裡面的sample code可以讓你參考
但是setmean是他訓練好的, 這一方面有人知道他的值是怎麼訓練的嗎?
有人有自己寫過caffe嗎?


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

tryit244178 發表於 2019-12-13 02:20 PM

雖然不知道你在講什麼(喂),不過是這個嗎?
https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/433462/

stephenwei_lu 發表於 2019-12-13 04:33 PM

本帖最後由 stephenwei_lu 於 2019-12-13 04:38 PM 編輯

是也不是, 這個是你有source data的狀況下,根據你train 出來的db 做的動作
那麼, 如果不是你 train的資料,  你只有拿到prototxt跟 model

tryit244178 發表於 2019-12-14 03:44 PM

這次用電腦找,不用手機!(認真了!?)
首先我找到了這個:
https://docs.opencv.org/3.4.8/d9/d8d/samples_2dnn_2classification_8cpp-example.html
參考這個:
https://blog.csdn.net/u013832707/article/details/52960039

你是要改寫這個,讓它能用CUDA來執行?(錯了不要打我{:54:})
是這樣嗎??不過我的顯卡是ATi的…想試也沒辦法試 囧

stephenwei_lu 發表於 2019-12-16 11:28 AM

謝謝,
https://docs.opencv.org/3.4.8/d9 ... n_8cpp-example.html
這個目前試做不到的
opencv 的DNN目前只支援 openvio opencl

https://blog.csdn.net/u013832707/article/details/52960039
這個當然文件解說可以看看

但是
string mean_file    = "/home/gph/Desktop/caffe_cmake/caffe-master/data/ilsvrc12/imagenet_mean.binaryproto";
這裡面的mead_file 是他training出來的資料要使用的時候根據你貼的文章中的其中一段
========================
  // 處理均值文件,得到均值圖像
    BlobProto blob_proto;
    ReadProtoFromBinaryFileOrDie(mean_file.c_str(), &blob_proto); // mean_file.c_str()將string類型轉化為字符型
    Blob<float> mean_blob;
    mean_blob.FromProto(blob_proto);
    vector<Mat> channels;
    float* data = mean_blob.mutable_cpu_data();// data指針
    for (int i = 0; i < num_channels_; i++)
    {
        Mat channel(mean_blob.height(), mean_blob.width(), CV_32FC1, data);//將一副單通道圖像的數據記錄再channel中
        channels.push_back(channel);
        data += mean_blob.height() * mean_blob.width();// data指向下一個通道的開始
    }
    Mat mean;
    merge(channels, mean); //分離的通道融合,查看cv::merge的作用
    Scalar channel_mean = cv::mean(mean);
    mean_ = Mat(input_geometry_, mean.type(), channel_mean);//得到均值圖像
==============
所以如果沒有mean_file, 在我的看法即時使用了別人訓練好的model,
mean值找不出來, 對於出來的結果可能會有一定程度的影響
打個比方來說,
如果training的圖庫 裡面的直方圖大多落在 50左右, 你把對比度設定在 128, 那麼把圖喂進去後得到的結果可能會比想像的還要差

最後, 雖然不管是 ATI還是NVIDIA都有支援opencl, 但是, opencl效果不是很好就是了

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

tryit244178 發表於 2019-12-16 02:00 PM

我找到這個網頁,它的第3點有生成mean_file的方法
https://www.cnblogs.com/alexcai/p/5469436.html
頁: [1]