瞎折腾

ncnn安卓端使用:https://blog.csdn.net/qq_36982160/article/details/79931741

想玩玩ncnn,但由于之前opencv没装好,因此遇到了一些坑,特此记录

注意:建议git两份ncnn,一份编译linux下的,一份编译android,分开编译,免得后面一堆坑。

1、重新编译安装opencv

     参考https://www.cnblogs.com/eczhou/p/7860586.html 顺利安装

     坑:在编译的时候,注意那两个引号,是左上角的引号(和~同一个位置)

g++ lena.cpp `pkg-config --cflags --libs opencv` -o lena

2、cmake && make出现的坑:

cannot find -lopencv_dep_cudart

    解决办法:https://github.com/caffe2/caffe2/issues/303

$ rm build -rf # As you see
$ mkdir build && cd build
$ cmake .. -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF 
$ make

这个顺便解决了我之前编译caffe时候出现的问题

3、ncnn的编译及显示

     https://blog.csdn.net/fuwenyan/article/details/76576708

     别忘了把synset_words.txt拷贝到build/examples下,否则报错:段错误    

4、android ndk安装

     https://blog.csdn.net/davebobo/article/details/52446986

5、build armv7 library时说我的cmake版本不够,

CMake 3.6.0 or higher is required.  You are running version 3.5.1

升级到3.9

https://blog.csdn.net/u010472607/article/details/76166008

6、protobuf冲突

      当前版本是3.5.1,找到的库却是3.4.0,用指令 可查看两个版本,在bashrc中将anaconda注释掉即可。

sudo protoc --version
protoc --version

      不过后面没有这么做了,也没有再出现问题

7、编译armv7时候的坑

     https://github.com/Tencent/ncnn/wiki/how-to-build里面编译时给了三个平台编译的方式,编译Linux x86后再次编译armv7 library时

一直报错:https://github.com/Tencent/ncnn/issues/139的错误,将opencv、cuda关掉也不行,后来才知道编译armv7是不依赖opencv的,PC上才依赖。

重新git clone,直接编译即可。

8、安卓开发环境的安装

   jdk安装:https://www.cnblogs.com/hwtblog/p/8404473.html

   android studio安装

    http://www.android-studio.org/下载

    解压移动到opt,安装:sudo /opt/android-studio/bin/studio.sh

    遇到问题:unable to access android sdk add-on list

    直接cancel,会下载组件,速度好慢啊。。

    创建快捷图标:https://blog.csdn.net/OOC_ZC/article/details/70808084

9、Android Studio出现Failed to open zip file问题的解决方法

     http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2017/0317/7691.html

     就是改一下gradle-wrapper.properties中的distributionUrl,将是https改为http即可

10、device support x86 but apk only supports armeabi-v7

        解决办法:项目根路径,app文件夹找到build.gradle文件,找到相关代码并改成如下形式:

        abiFilters 'armeabi','armeabi-v7a','armeabi-v8a',"x86"

周末折腾了很久,终于折腾好了,中间遇到的问题 太多,都记不住了,都是在模拟器下出现的问题,换成真机调试后问题就解决了。

 接着折腾。。。

11、参考https://blog.csdn.net/linmingan/article/details/77988382使用自己的模型

首先是将alxnet.prototxt转为新版本的prototxt,在caffe-root根目录下,./build/tools/upgrade_net_proto_text   imagenet_train.prototxt  new_version_train.prototxt

报错:Error parsing text-format caffe.NetParameter: 6:15: Message type "caffe.LayerParameter" has no field named "input_param"

解决办法:用上面的input_shape替换下面的layer,转换后再替换回去。

name: "GoogleNet"
input: "data"
input_shape {
  dim: 10
  dim: 3
  dim: 224
  dim: 224
}

caffe/models/bvlc_googlenet/deploy.prototxt

name: "GoogleNet"
layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param { shape: { dim: 10 dim: 3 dim: 224 dim: 224 } }
}

 12 、android studio 字体太小,调整下

        https://blog.csdn.net/baidu_35781767/article/details/54340350

 

原文地址:https://www.cnblogs.com/573177885qq/p/8668097.html