solrex / caffe-mobile

Optimized (for size and speed) Caffe lib for iOS and Android with out-of-the-box demo APP.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

内存问题

Qvodman opened this issue · comments

初始化一个CaffeMobile实例进行提特征时内存占用大概250MB左右,为了提高效率初始化两个CaffeMobile实例在两个子线程中同时提取两张图片特征时,内存瞬间飙到好几个G,小米MIX2有6G多可用内存都直接崩溃掉,请问是什么情况?

@Qvodman 这种情况下先检查你的网络配置是不是有问题。比如是不是没有去掉一些训练用的层,或者多余的数据维度(mini batch要改为单条)。

@solrex 使用两个实例同时提特征时报了这个错误:
ERROR /home/liaolp/caffe-mobile/src/caffe/blob.cpp:34] (shape[i]) <= (0x7fffffff / count_) blob size exceeds INT_MAX

@Qvodman 我在 JNI 里实现的 CaffeMobile 是一个单例,其实不支持多线程的,不知道你注意到没有?

这个错误本身看起来是网络配置有问题,某一层的维度太多导致超过限制。但我不确定跟你多线程使用有关还是跟你配置有关。

因为神经网络经常能把 CPU 跑满,或者把 CPU 跑到降频,所以多线程能不能解决问题我也比较怀疑。

@solrex 因为看到CaffeMobile 是一个单例,一个实例跑在骁龙835的机子上提特征CPU只占了百分之十几,所以才想着创建多实例去提特征,这个网络配置在PC上是可以多个实例同时跑的

@Qvodman 从你的描述来看,我只能判断出可能是网络配置有问题。但是信息实在不足以进一步判断了,你可以在 C++ 代码里再多加一些日志语句来看看,CaffeMobile 的 C++ 代码是适配到 Android logcat 的,只是需要你自己去猜测哪里可能出问题了。

@solrex 已将CaffeMobile 的 C++ 代码中单例去掉,现可同时加载多个实例,但最多只能两个实例同时提特征,三个的话软件就会崩溃