bonseyes / SFD

S³FD: Single Shot Scale-invariant Face Detector
MIT License
8 stars 3 forks source link

SFD model in TIDSP CAFFE Jacinto throws error #25

Closed bonseyes-admin closed 6 years ago

bonseyes-admin commented 6 years ago

Caffe Jacinto compilation and running of SFD model produces error.

https://github.com/tidsp/caffe-jacinto/issues/17

ghimiredhikura commented 6 years ago

Compilation issue:

1. Using "make"

configuration: with cudnn, cuda, opencv3, use_python_layer, pkg_config on $ make -j12 - successful $ make pycaffe - successful $ make test - unsuccessful, throws following error

CXX src/caffe/test/test_solver_factory.cpp
CXX src/caffe/test/test_db.cpp
In file included from src/caffe/test/test_db.cpp:5:0:
src/caffe/test/test_db.cpp: In member function ‘virtual void caffe::DBTest_TestSeekToFirst_Test<gtest_TypeParam_>::TestBody()’:
src/caffe/test/test_db.cpp:89:35: error: no matching function for call to ‘caffe::db::Cursor::parse(caffe::Datum*)’
   EXPECT_TRUE(cursor->parse(&datum));
                                   ^
./src/gtest/gtest.h:7859:34: note: in definition of macro ‘GTEST_TEST_BOOLEAN_’
       ::testing::AssertionResult(expression)) \
                                  ^
src/caffe/test/test_db.cpp:89:3: note: in expansion of macro ‘EXPECT_TRUE’
   EXPECT_TRUE(cursor->parse(&datum));
   ^
In file included from src/caffe/test/test_db.cpp:9:0:
./include/caffe/util/db.hpp:23:16: note: candidate: virtual bool caffe::db::Cursor::parse(void*, caffe::DatumTypeInfo) const
   virtual bool parse(void* datum, DatumTypeInfo datum_type_info) const = 0;
                ^
./include/caffe/util/db.hpp:23:16: note:   candidate expects 2 arguments, 1 provided
In file included from src/caffe/test/test_db.cpp:5:0:
src/caffe/test/test_db.cpp: In member function ‘virtual void caffe::DBTest_TestKeyValue_Test<gtest_TypeParam_>::TestBody()’:
src/caffe/test/test_db.cpp:103:35: error: no matching function for call to ‘caffe::db::Cursor::parse(caffe::Datum*)’
   EXPECT_TRUE(cursor->parse(&datum));
                                   ^
./src/gtest/gtest.h:7859:34: note: in definition of macro ‘GTEST_TEST_BOOLEAN_’
       ::testing::AssertionResult(expression)) \
                                  ^
src/caffe/test/test_db.cpp:103:3: note: in expansion of macro ‘EXPECT_TRUE’
   EXPECT_TRUE(cursor->parse(&datum));
   ^
In file included from src/caffe/test/test_db.cpp:9:0:
./include/caffe/util/db.hpp:23:16: note: candidate: virtual bool caffe::db::Cursor::parse(void*, caffe::DatumTypeInfo) const
   virtual bool parse(void* datum, DatumTypeInfo datum_type_info) const = 0;
                ^
./include/caffe/util/db.hpp:23:16: note:   candidate expects 2 arguments, 1 provided
In file included from src/caffe/test/test_db.cpp:5:0:
src/caffe/test/test_db.cpp:111:35: error: no matching function for call to ‘caffe::db::Cursor::parse(caffe::Datum*)’
   EXPECT_TRUE(cursor->parse(&datum));
                                   ^
./src/gtest/gtest.h:7859:34: note: in definition of macro ‘GTEST_TEST_BOOLEAN_’
       ::testing::AssertionResult(expression)) \
                                  ^
src/caffe/test/test_db.cpp:111:3: note: in expansion of macro ‘EXPECT_TRUE’
   EXPECT_TRUE(cursor->parse(&datum));
   ^
In file included from src/caffe/test/test_db.cpp:9:0:
./include/caffe/util/db.hpp:23:16: note: candidate: virtual bool caffe::db::Cursor::parse(void*, caffe::DatumTypeInfo) const
   virtual bool parse(void* datum, DatumTypeInfo datum_type_info) const = 0;
                ^
./include/caffe/util/db.hpp:23:16: note:   candidate expects 2 arguments, 1 provided
Makefile:611: recipe for target '.build_release/src/caffe/test/test_db.o' failed
make: *** [.build_release/src/caffe/test/test_db.o] Error 1

Although make test was unsuccessful, I test sfd model of face detection but it gave error: Net.init(SFD_NET, str, int) did not match C++ signature:

2. Using cmake

$ cmake .. - successful $ make -j12 - unsuccessful, throws OpenCV undefined reference error

ghimiredhikura commented 6 years ago

Update: Compilation using cmake

$mkdir build && cd build $make .. - successful $make -j12 - successful, adding "find_package(OpenCV REQUIRED" explicitly in CMakeList.txt file solved OpenCV undefined reference error. $make runtest - unsuccessful

and running our "python2.7 test.py -d FDDB -p ../../../datasets/FDDB/" script gives Net.init(SFD_NET, str, int) did not match C++ signature error.

ezetl commented 6 years ago

There is a PR to fix the signature issue. Could you test that the scripts work on your end @ghimiredhikura? I also documented one solution of compiling jacinto with cmake. Feel free to add more details if needed.

ghimiredhikura commented 6 years ago

Yes, after this small correction in net initialization and properly linking caffe python path, it just works fine. And yes I also got exactly same result as @ezetl .