關於caffe-windows中 compute_image_mean.exe出現的問題

查志強發表於2015-07-27

【原文:http://blog.csdn.net/yeyang911/article/details/46679111

這兩天有興致裝了下caffe,感受下這個框架。

但是在這個過程中遇到很多問題,我把碰到的問題和解決方案寫下,便於後人快速上手。



compute_image_mean.exe 編譯出來後,執行資料變換時,出現下圖的情況。


隨後,迅速到網上查詢相關資訊。

看到了下面這篇部落格,關於leveldb 的

http://blog.csdn.net/cywosp/article/details/20746879

裡面有段話是這麼說的:

在1.15版本中,如果使用NewIterator函式建立了leveldb::Iterator物件而沒有delete該物件的話,在程式退出時將會報出如下錯誤:
    db/version_set.cc:806: leveldb::VersionSet::~VersionSet(): Assertion `dummy_versions_.next_ == &dummy_versions_' failed.
    根據程式碼分析,這裡assert失敗的原因主要是為了防止記憶體洩露。


然後,就開啟編譯的原始碼(在/tools/compute_image_mean.cpp裡面)

根據部落格的提示,我就在建立lterator後進行delete。大概在原始碼的第70行左右的位置。

  1.   ++count;  
  2.   if (count % 10000 == 0) {  
  3.     LOG(ERROR) << "Processed " << count << " files.";  
  4.   }  
  5. }  
  6. delete it;  
  7. if (count % 10000 != 0) {  
  8.   LOG(ERROR) << "Processed " << count << " files.";  
  9. }  
  10. for (int i = 0; i < sum_blob.data_size(); ++i) {  
  11.   sum_blob.set_data(i, sum_blob.data(i) / count);  
  12. }  

修改後再編譯,然後就可以順利跑通了。

相關文章