You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I used the following command to compile ncnn arm64-v8a library and my ndk version is 20.1.5948944(/home/liuwenjie/Android/Sdk/ndk/20.1.5948944)
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake
-DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-21 -DCMAKE_INSTALL_PREFIX=/home/liuwen/ncnn_lib ..
This will create the libncnn.a static library.
Then I used ncnn-android-squeezenet squeezencnn_jni.cpp to compile libsqueezencnn.so. The libsqueezencnn.so has been created successfully and the apk is installed in my ViVO Z3.But the ncnn output.channel is always 0.
Both CMakeLists.txt and Android.mk could create libsqueezencnn.so library but produce 0.(sample in the following)
` std::vector cls_scores;
{
const float mean_vals[3] = {104.f, 117.f, 123.f};
in.substract_mean_normalize(mean_vals, 0);
ncnn::Extractor ex = squeezenet.create_extractor();
ex.set_vulkan_compute(use_gpu);
ex.input(squeezenet_v1_1_param_id::BLOB_data, in);
I used the following command to compile ncnn arm64-v8a library and my ndk version is 20.1.5948944(/home/liuwenjie/Android/Sdk/ndk/20.1.5948944)
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake
-DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-21 -DCMAKE_INSTALL_PREFIX=/home/liuwen/ncnn_lib ..
This will create the libncnn.a static library.
Then I used ncnn-android-squeezenet squeezencnn_jni.cpp to compile libsqueezencnn.so. The libsqueezencnn.so has been created successfully and the apk is installed in my ViVO Z3.But the ncnn output.channel is always 0.
The only difference changed(squeezencnn_jni.cpp)
175 cls_scores.resize(out.w);
176 for (int j=0; j<out.w; j++)
177 {
178 cls_scores[j] = out[j]; ----------> const float* prob = out.channel(j);
----------> cls_scores[j] = prob[0];
179 }
CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_ANDROID_STL_TYPE c++_static)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 -fvisibility=hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math -fopenmp")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math -std=c++11 -fopenmp")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -Wl,--gc-sections -fopenmp")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,--gc-sections -fopenmp")
if(CMAKE_BUILD_TYPE MATCHES Release)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -fopenmp")
endif()
set(NCNN_PATH /home/liuwenjie/ncnn_lib)
include_directories(${NCNN_PATH}/include)
include_directories(${NCNN_PATH}/include/ncnn)
add_library(ncnn STATIC IMPORTED)
set_target_properties(ncnn PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/arm64-v8a/libncnn.a)
find_library(log-lib log)
add_library(hello-jni SHARED squeezencnn_jni.cpp)
target_link_libraries(hello-jni android ncnn ${log-lib} jnigraphics z)
Android.mk
LOCAL_PATH := $(call my-dir)
NCNN_INSTALL_PATH := ${LOCAL_PATH}/ncnn-android-vulkan-lib
include $(CLEAR_VARS)$(NCNN_INSTALL_PATH)/$ (TARGET_ARCH_ABI)/libncnn.a
LOCAL_MODULE := ncnn
LOCAL_SRC_FILES :=
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := squeezencnn
LOCAL_SRC_FILES := squeezencnn_jni.cpp
LOCAL_C_INCLUDES :=$(NCNN_INSTALL_PATH)/include $ (NCNN_INSTALL_PATH)/include/ncnn
LOCAL_STATIC_LIBRARIES := ncnn
LOCAL_CFLAGS := -O2 -fvisibility=hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math
LOCAL_CPPFLAGS := -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math
LOCAL_LDFLAGS += -Wl,--gc-sections
LOCAL_CFLAGS += -fopenmp
LOCAL_CPPFLAGS += -fopenmp
LOCAL_LDFLAGS += -fopenmp
LOCAL_LDLIBS := -lz -llog -ljnigraphics -lvulkan -landroid
include $(BUILD_SHARED_LIBRARY)
squeezencnn_jni.cpp
Both CMakeLists.txt and Android.mk could create libsqueezencnn.so library but produce 0.(sample in the following)
` std::vector cls_scores;
{
const float mean_vals[3] = {104.f, 117.f, 123.f};
in.substract_mean_normalize(mean_vals, 0);
172 ncnn::Mat out;
173 ex.extract(squeezenet_v1_1_param_id::BLOB_prob, out);
175 cls_scores.resize(out.w); -----> out.w == 0
}
`
The text was updated successfully, but these errors were encountered: