1. Windows Caffe Debug版本缺少Python27_d.lib
如果用的是Anaconda则需要修改Anaconda2\include
目录下的pyconfig.h
和object.h
文件。
对于pyconfig.h:
修改L338:
# ifdef _DEBUG
# pragma comment(lib,"python27_d.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
为
# ifdef _DEBUG
# pragma comment(lib,"python27.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
修改L380:
#ifdef _DEBUG
# define Py_DEBUG
#endif
为
#ifdef _DEBUG
//# define Py_DEBUG
#endif
对于修改object.h
修改L56
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
#define Py_TRACE_REFS
#endif
为
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
// #define Py_TRACE_REFS
#endif
2. Windows Caffe OpenCV error MSB4062
错误 1 error MSB4062: 未能从程序集
D:\NugetPackages\OpenCV.2.4.10\build\native\\private\coapp.NuGetNativeMSBuildTasks.dll
加载任务“NuGetPackageOverlay”。未能加载文件或程序集
“file:///D:\NugetPackages\OpenCV.2.4.10\build\native\private\coapp.NuGetNativeMSBuildTasks.dll”或它的某一个依赖项。系统找不到指定的文件。
请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
D:\NugetPackages\OpenCV.2.4.10\build\native\OpenCV.targets 768 5 libcaffe
![ellipse](https://i-blog.csdnimg.cn/blog_migrate/e751de9ae3616e900340ba30b340921b.png)
图1 OpenCV error MSB4062
解决方法是卸载OpenCV(不需要将2.4.10更新改为2.4.11),然后完全删除caffe-master,此时之前使用Nuget下载的除了OpenCV外的所有包还是在的。将caffe-master.zip重新解压到原caffe-master的位置,重新编译即可成功。
Nuget卸载界面:
![ellipse](https://i-blog.csdnimg.cn/blog_migrate/7071b86502c6d9be2d2d355c5ff68d69.png)
图2 NuGet卸载OpenCV
classification.cpp中包含多余代码
"caffe\examples\cpp_classification\classification.cpp"
中L151-L155的代码多余:
Blob<float>* input_layer = net_->input_blobs()[0];
input_layer->Reshape(1, num_channels_,
input_geometry_.height, input_geometry_.width);
/* Forward dimension change to all layers. */
net_->Reshape();
input_layer
是局部变量,定义后没使用过。
net_->Reshape();
没有意义,因为在L48Classifier
构造函数中已经对网络设置好了:
/* Load the network. */
net_.reset(new Net<float>(model_file, TEST));
net_->CopyTrainedLayersFrom(trained_file);
Caffe无训练日志解决方法
NuGet指令安装指定版本库
install-package boost_regex-vc120 -version 1.59