2018年9月15日土曜日

Caffe-ing GoogleNet Training with ImageNetDogs

There are several networks examples in Caffe distribution. So I suppose I would run caffe with these networks. To do so, a bunch of labeled images are necessary. After googling the net,  I found ImageNet Dogs from Stanford University would be nice.
First of all, I have to restore the images in the lmdb database. Fortunately, there is a script into it. My GPU memory only have 2GB, so I change the image size from 256 to 128.

I take GoogleNet for the first try. The ProtoBuf text should be changed because the number of classification is changed from 1000 to 120. There are three to be changed.
The other lines to be changed are crop_size. The default crop_size is 224 but this is smaller than the prepared image size 128. So I replace the 224 to 112. There are 2 places to be changed.

These are the all to be changed. So we are ready to LEARN now.

But Caffe be down at loop5.
I0915 21:26:05.566467 2647491520 net.cpp:157] Top shape: 32 1024 3 3 (294912)
I0915 21:26:05.566473 2647491520 net.cpp:165] Memory required for data: 442749448
I0915 21:26:05.566479 2647491520 layer_factory.hpp:77] Creating layer pool5/7x7_s1
I0915 21:26:05.566488 2647491520 net.cpp:100] Creating Layer pool5/7x7_s1
I0915 21:26:05.566493 2647491520 net.cpp:434] pool5/7x7_s1 <- inception_5b="" output="" span="">
I0915 21:26:05.566540 2647491520 net.cpp:408] pool5/7x7_s1 -> pool5/7x7_s1

F0915 21:26:05.566615 2647491520 blob.cpp:32] Check failed: shape[i] >= 0 (-1 vs. 0) 

Top shape: 32 1024 3 3 indicates the kernel size should be smaller than 3. Current value is 7 at pool5 layer. So the error indicates kernel size 7 should be changed to 3. Now the network seems to work fine with new specifications. Let me see...

2018年9月10日月曜日

Congrats! 大阪さん

WOW WOWにはいろかな、やめよかな。でやめてたので失敗か。NHKが放送してくれなかったので残念ながら、試合は断片的しか見てないし、とんでもない試合だったようなので、はいっとけば良かった。
でも、そんなひどい状況の中でも崩れなかった彼女はすごい。こういう大舞台で勝てる勝てないは、その後、こじらせるかこじらせないか大きく関係すると思う。錦織選手はチャンスを手にできなかったせいで、今もまだこじらせて大舞台で勝てない。マスターズにも勝ててないし。この最大の大会で勝ちきったのはすばらしい。
せっかくの初優勝が少し残念な感じになってるのがかわいそうだけど、満足できない状態になったのは逆に追い風になるかも。
スピーチで I'm sorryはないよな。かわいそすぎる。でも、良い子だよね。

2018年9月7日金曜日

Build Caffe SDD 1.0.0 on Ubuntu 17.10

UbuntuのディストリビューションにあるCaffeがcuDNN対応では無いのでは無いかという疑念より、ソースからビルドすることにした。まず、SDD対応のブランチからダウンロード。
 git clone https://github.com/weiliu89/caffe.git

% cd caffe
% mkdir BUILD
% cd BUILD

まず、ソースを変更する。
/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h
#define  _GLIBCXX_USE_C99_MATH  1

これは何らかのスイッチ(-D)で済む様な気もする。
次に、必要なライブラリをインストールする。足らないとビルドの最中にエラーが出るので、そこに表示されるキーワードxxxを使って、
% apt search xxx
して、必要と思われるライブラリ(あらかた libxxx-dev)を見つけて、
% sudo apt-get install livxxx-dev
する。私の環境では(既に数値解析関係はインストールされている)
  sudo apt-get install libprotobuf-dev
  sudo apt-get install libgflags-dev
  sudo apt-get install libgoogle-glog-dev
  sudo apt-get install libhdf5-dev
  sudo apt-get install libhdf5-serial-dev
  sudo apt-get install libhdf5-100
  sudo apt-get install opencv-dev
  sudo apt-get install libopencv-dev
  sudo apt-get install libleveldb-dev liblmdb-dev
  sudo apt-get install libboost1.62-all-dev
  sudo apt-get install libsnappy-dev
  sudo apt-get install libatlas-base-dev
  sudo apt-get install libcudnn6-dev
  sudo apt-get install gcc-5

最後のgcc-5はCUDA nvccのホストコンパイラとして必要らしい。
この後、
ccmake ..

として、必要な設定を行っていく。ちなみに、私の設定は、
 ALLOW_LMDB_NOLOCK                OFF                                                                                                                                
 Atlas_BLAS_LIBRARY               /usr/lib/x86_64-linux-gnu/libatlas.so                                                                                              
 Atlas_CBLAS_INCLUDE_DIR          /usr/include/x86_64-linux-gnu                                                                                                      
 Atlas_CBLAS_LIBRARY              /usr/lib/x86_64-linux-gnu/libcblas.so                                                                                              
 Atlas_CLAPACK_INCLUDE_DIR        /usr/include/x86_64-linux-gnu                                                                                                      
 Atlas_LAPACK_LIBRARY             /usr/lib/x86_64-linux-gnu/liblapack.so                                                                                             
 BLAS                             Atlas                                                                                                                              
 BOOST_THREAD_LIBRARY             /usr/lib/x86_64-linux-gnu/libpthread.so                                                                                            
 BUILD_SHARED_LIBS                ON                                                                                                                                 
 BUILD_docs                       ON                                                                                                                                 
 BUILD_matlab                     OFF                                                                                                                                
 BUILD_only_tests                                                                                                                                                    
 BUILD_python                     ON                                                                                                                                 
 BUILD_python_layer               ON                                                                                                                                 
 Boost_ATOMIC_LIBRARY_DEBUG       /usr/lib/x86_64-linux-gnu/libboost_atomic.so                                                                                       
 Boost_ATOMIC_LIBRARY_RELEASE     /usr/lib/x86_64-linux-gnu/libboost_atomic.so                                                                                       
 Boost_CHRONO_LIBRARY_DEBUG       /usr/lib/x86_64-linux-gnu/libboost_chrono.so                                                                                       
 Boost_CHRONO_LIBRARY_RELEASE     /usr/lib/x86_64-linux-gnu/libboost_chrono.so                                                                                       
 Boost_DATE_TIME_LIBRARY_DEBUG    /usr/lib/x86_64-linux-gnu/libboost_date_time.so                                                                                    
 Boost_DATE_TIME_LIBRARY_RELEAS   /usr/lib/x86_64-linux-gnu/libboost_date_time.so                                                                                    
 Boost_DIR                        Boost_DIR-NOTFOUND                                                                                                                 
 Boost_FILESYSTEM_LIBRARY_DEBUG   /usr/lib/x86_64-linux-gnu/libboost_filesystem.so                                                                                   
 Boost_FILESYSTEM_LIBRARY_RELEA   /usr/lib/x86_64-linux-gnu/libboost_filesystem.so                                                                                   
 Boost_INCLUDE_DIR                /usr/include                                                                                                                       
 Boost_LIBRARY_DIR_DEBUG          /usr/lib/x86_64-linux-gnu                                                                                                          
 Boost_LIBRARY_DIR_RELEASE        /usr/lib/x86_64-linux-gnu                                                                                                          
 Boost_PYTHON_LIBRARY_DEBUG       /usr/lib/x86_64-linux-gnu/libboost_python.so                                                                                       
 Boost_PYTHON_LIBRARY_RELEASE     /usr/lib/x86_64-linux-gnu/libboost_python.so                                                                                       
 Boost_SYSTEM_LIBRARY_DEBUG       /usr/lib/x86_64-linux-gnu/libboost_system.so                                                                                       
 Boost_SYSTEM_LIBRARY_RELEASE     /usr/lib/x86_64-linux-gnu/libboost_system.so                                                                                       
 Boost_THREAD_LIBRARY_DEBUG       /usr/lib/x86_64-linux-gnu/libboost_thread.so                                                                                       
 Boost_THREAD_LIBRARY_RELEASE     /usr/lib/x86_64-linux-gnu/libboost_thread.so                                                                                       
 CAFFE_TARGET_SOVERSION           1.0.0                                                                                                                              
 CAFFE_TARGET_VERSION             1.0.0                                                                                                                              
 CMAKE_AR                         /usr/bin/ar                                                                                                                        
 CMAKE_BUILD_TYPE                                                                                                                                                    
 CMAKE_COLOR_MAKEFILE             ON                                                                                                                                 
 CMAKE_CONFIGURATION_TYPES        Debug;Release                                                                                                                      
 CMAKE_CXX_COMPILER               /usr/bin/g++-5                                                                                                                     
 CMAKE_CXX_COMPILER_AR            /usr/bin/gcc-ar-5                                                                                                                  
 CMAKE_CXX_COMPILER_RANLIB        /usr/bin/gcc-ranlib-5                                                                                                              
 CMAKE_CXX_FLAGS                  -std=c++11                                                                                                                         
 CMAKE_CXX_FLAGS_DEBUG                                                                                                                                               
 CMAKE_CXX_FLAGS_MINSIZEREL                                                                                                                                          
 CMAKE_CXX_FLAGS_RELEASE                                                                                                                                             
 CMAKE_CXX_FLAGS_RELWITHDEBINFO                                                                                                                                      

 CMAKE_C_COMPILER                 /usr/bin/gcc-5                                                                                                                     
 CMAKE_C_COMPILER_AR              /usr/bin/gcc-ar-5                                                                                                                  
 CMAKE_C_COMPILER_RANLIB          /usr/bin/gcc-ranlib-5                                                                                                              
 CMAKE_C_FLAGS                                                                                                                                                       
 CMAKE_C_FLAGS_DEBUG                                                                                                                                                 
 CMAKE_C_FLAGS_MINSIZEREL                                                                                                                                            
 CMAKE_C_FLAGS_RELEASE                                                                                                                                               
 CMAKE_C_FLAGS_RELWITHDEBINFO                                                                                                                                        
 CMAKE_EXE_LINKER_FLAGS                                                                                                                                              
 CMAKE_EXE_LINKER_FLAGS_DEBUG                                                                                                                                        
 CMAKE_EXE_LINKER_FLAGS_MINSIZE                                                                                                                                      
 CMAKE_EXE_LINKER_FLAGS_RELEASE                                                                                                                                      
 CMAKE_EXE_LINKER_FLAGS_RELWITH                                                                                                                                      
 CMAKE_EXPORT_COMPILE_COMMANDS    OFF                                                                                                                                
 CMAKE_INSTALL_BINDIR             bin                                                                                                                                
 CMAKE_INSTALL_DATADIR                                                                                                                                               
 CMAKE_INSTALL_DATAROOTDIR        share                                                                                                                              
 CMAKE_INSTALL_DOCDIR                                                                                                                                                
 CMAKE_INSTALL_INCLUDEDIR         include                                                                                                                            
 CMAKE_INSTALL_INFODIR                                                                                                                                               
 CMAKE_INSTALL_LIBDIR             lib                                                                                                                                
 CMAKE_INSTALL_LIBEXECDIR         libexec                                                                                                                            
 CMAKE_INSTALL_LOCALEDIR                                                                                                                                             
 CMAKE_INSTALL_LOCALSTATEDIR      var                                                                                                                                
 CMAKE_INSTALL_MANDIR                                                                                                                                                
 CMAKE_INSTALL_OLDINCLUDEDIR      /usr/include                                                                                                                       
 CMAKE_INSTALL_PREFIX             /usr/local                                                                                                                         
 CMAKE_INSTALL_RPATH_USE_LINK_P   TRUE                                                                                                                               
 CMAKE_INSTALL_RUNSTATEDIR                                                                                                                                           
 CMAKE_INSTALL_SBINDIR            sbin                                                                                                                               
 CMAKE_INSTALL_SHAREDSTATEDIR     com                                                                                                                                
 CMAKE_INSTALL_SYSCONFDIR         etc                                                                                                                                
 CMAKE_LINKER                     /usr/bin/ld                                                                                                                        
 CMAKE_MAKE_PROGRAM               /usr/bin/make                                                                                                                      
 CMAKE_MODULE_LINKER_FLAGS                                                                                                                                           
 CMAKE_MODULE_LINKER_FLAGS_DEBU                                                                                                                                      
 CMAKE_MODULE_LINKER_FLAGS_MINS                                                                                                                                      
 CMAKE_MODULE_LINKER_FLAGS_RELE                                                                                                                                      
 CMAKE_MODULE_LINKER_FLAGS_RELW                                                                                                                                      
 CMAKE_NM                         /usr/bin/nm                                                                                                                        
 CMAKE_OBJCOPY                    /usr/bin/objcopy                                                                                                                   
 CMAKE_OBJDUMP                    /usr/bin/objdump                                                                                                                   
 CMAKE_RANLIB                     /usr/bin/ranlib                                                                                                                    
 CMAKE_SHARED_LINKER_FLAGS                                                                                                                                           
 CMAKE_SHARED_LINKER_FLAGS_DEBU                                                                                                                                      
 CMAKE_SHARED_LINKER_FLAGS_MINS                                                                                                                                      

 CMAKE_SHARED_LINKER_FLAGS_RELE                                                                                                                                      
 CMAKE_SHARED_LINKER_FLAGS_RELW                                                                                                                                      
 CMAKE_SKIP_INSTALL_RPATH         OFF                                                                                                                                
 CMAKE_SKIP_RPATH                 OFF                                                                                                                                
 CMAKE_STATIC_LINKER_FLAGS                                                                                                                                           
 CMAKE_STATIC_LINKER_FLAGS_DEBU                                                                                                                                      
 CMAKE_STATIC_LINKER_FLAGS_MINS                                                                                                                                      
 CMAKE_STATIC_LINKER_FLAGS_RELE                                                                                                                                      
 CMAKE_STATIC_LINKER_FLAGS_RELW                                                                                                                                      
 CMAKE_STRIP                      /usr/bin/strip                                                                                                                     
 CMAKE_VERBOSE_MAKEFILE           OFF                                                                                                                                
 CPU_ONLY                         OFF                                                                                                                                
 CUDA_64_BIT_DEVICE_CODE          ON                                                                                                                                 
 CUDA_ARCH_NAME                   Auto                                                                                                                               
 CUDA_ATTACH_VS_BUILD_RULE_TO_C   ON                                                                                                                                 
 CUDA_BUILD_CUBIN                 OFF                                                                                                                                
 CUDA_BUILD_EMULATION             OFF                                                                                                                                
 CUDA_CUDART_LIBRARY              /usr/lib/x86_64-linux-gnu/libcudart.so                                                                                             
 CUDA_CUDA_LIBRARY                /usr/lib/x86_64-linux-gnu/libcuda.so                                                                                               
 CUDA_GENERATED_OUTPUT_DIR                                                                                                                                           
 CUDA_HOST_COMPILATION_CPP        ON                                                                                                                                 
 CUDA_HOST_COMPILER               /usr/bin/g++-5                                                                                                                     
 CUDA_NVCC_EXECUTABLE             /usr/bin/nvcc                                                                                                                      
 CUDA_NVCC_FLAGS                                                                                                                                                     
 CUDA_NVCC_FLAGS_DEBUG                                                                                                                                               
 CUDA_NVCC_FLAGS_MINSIZEREL                                                                                                                                          
 CUDA_NVCC_FLAGS_RELEASE                                                                                                                                             
 CUDA_NVCC_FLAGS_RELWITHDEBINFO                                                                                                                                      
 CUDA_PROPAGATE_HOST_FLAGS        ON                                                                                                                                 
 CUDA_SDK_ROOT_DIR                CUDA_SDK_ROOT_DIR-NOTFOUND                                                                                                         
 CUDA_SEPARABLE_COMPILATION       OFF                                                                                                                                
 CUDA_TOOLKIT_INCLUDE             /usr/include                                                                                                                       
 CUDA_TOOLKIT_ROOT_DIR            /usr                                                                                                                               
 CUDA_USE_STATIC_CUDA_RUNTIME     ON                                                                                                                                 
 CUDA_VERBOSE_BUILD               OFF                                                                                                                                
 CUDA_VERSION                     8.0                                                                                                                                
 CUDA_cublas_LIBRARY              /usr/lib/x86_64-linux-gnu/libcublas.so                                                                                             
 CUDA_cublas_device_LIBRARY       /usr/lib/x86_64-linux-gnu/libcublas_device.a                                                                                       
 CUDA_cudadevrt_LIBRARY           /usr/lib/x86_64-linux-gnu/libcudadevrt.a                                                                                           
 CUDA_cudart_static_LIBRARY       /usr/lib/x86_64-linux-gnu/libcudart_static.a                                                                                       
 CUDA_cufft_LIBRARY               /usr/lib/x86_64-linux-gnu/libcufft.so                                                                                              
 CUDA_cupti_LIBRARY               CUDA_cupti_LIBRARY-NOTFOUND                                                                                                        
 CUDA_curand_LIBRARY              /usr/lib/x86_64-linux-gnu/libcurand.so                                                                                             
 CUDA_cusolver_LIBRARY            /usr/lib/x86_64-linux-gnu/libcusolver.so                                                                                           
 CUDA_cusparse_LIBRARY            /usr/lib/x86_64-linux-gnu/libcusparse.so                                                                                           
 CUDA_nppc_LIBRARY                /usr/lib/x86_64-linux-gnu/libnppc.so                                                                                               

 CUDA_nppi_LIBRARY                /usr/lib/x86_64-linux-gnu/libnppi.so                                                                                               
 CUDA_npps_LIBRARY                /usr/lib/x86_64-linux-gnu/libnpps.so                                                                                               
 CUDA_rt_LIBRARY                  /usr/lib/x86_64-linux-gnu/librt.so                                                                                                 
 CUDNN_INCLUDE                    /usr/include                                                                                                                       
 CUDNN_LIBRARY                    /usr/lib/x86_64-linux-gnu/libcudnn.so                                                                                              
 CUDNN_ROOT                                                                                                                                                          
 DOXYGEN_DOT_EXECUTABLE           /usr/bin/dot                                                                                                                       
 DOXYGEN_EXECUTABLE               DOXYGEN_EXECUTABLE-NOTFOUND                                                                                                        
 GFLAGS_INCLUDE_DIR               /usr/include                                                                                                                       
 GFLAGS_LIBRARY                   /usr/lib/x86_64-linux-gnu/libgflags.so                                                                                             
 GFLAGS_ROOT_DIR                                                                                                                                                     
 GIT_EXECUTABLE                   /usr/bin/git                                                                                                                       
 GLOG_INCLUDE_DIR                 /usr/include                                                                                                                       
 GLOG_LIBRARY                     /usr/lib/x86_64-linux-gnu/libglog.so                                                                                               
 GLOG_ROOT_DIR                                                                                                                                                       
 HDF5_CXX_COMPILER_EXECUTABLE     /usr/bin/h5c++                                                                                                                     
 HDF5_CXX_LIBRARY_dl              /usr/lib/x86_64-linux-gnu/libdl.so                                                                                                 
 HDF5_CXX_LIBRARY_hdf5            /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so                                                                                   
 HDF5_CXX_LIBRARY_hdf5_cpp        /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_cpp.so                                                                               
 HDF5_CXX_LIBRARY_hdf5_hl         /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_hl.so                                                                                
 HDF5_CXX_LIBRARY_hdf5_hl_cpp     /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_hl_cpp.so                                                                            
 HDF5_CXX_LIBRARY_m               /usr/lib/x86_64-linux-gnu/libm.so                                                                                                  
 HDF5_CXX_LIBRARY_pthread         /usr/lib/x86_64-linux-gnu/libpthread.so                                                                                            
 HDF5_CXX_LIBRARY_sz              /usr/lib/x86_64-linux-gnu/libsz.so                                                                                                 
 HDF5_CXX_LIBRARY_z               /usr/lib/x86_64-linux-gnu/libz.so                                                                                                  
 HDF5_C_COMPILER_EXECUTABLE       /usr/bin/h5cc                                                                                                                      
 HDF5_C_LIBRARY_dl                /usr/lib/x86_64-linux-gnu/libdl.so                                                                                                 
 HDF5_C_LIBRARY_hdf5              /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so                                                                                   
 HDF5_C_LIBRARY_hdf5_hl           /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_hl.so                                                                                
 HDF5_C_LIBRARY_m                 /usr/lib/x86_64-linux-gnu/libm.so                                                                                                  
 HDF5_C_LIBRARY_pthread           /usr/lib/x86_64-linux-gnu/libpthread.so                                                                                            
 HDF5_C_LIBRARY_sz                /usr/lib/x86_64-linux-gnu/libsz.so                                                                                                 
 HDF5_C_LIBRARY_z                 /usr/lib/x86_64-linux-gnu/libz.so                                                                                                  
 HDF5_DIFF_EXECUTABLE             /usr/bin/h5diff                                                                                                                    
 HDF5_DIR                         HDF5_DIR-NOTFOUND                                                                                                                  
 LMDB_INCLUDE_DIR                 /usr/include                                                                                                                       
 LMDB_LIBRARIES                   /usr/lib/x86_64-linux-gnu/liblmdb.so                                                                                               
 LevelDB_INCLUDE                  /usr/include                                                                                                                       
 LevelDB_LIBRARY                  /usr/lib/x86_64-linux-gnu/libleveldb.so                                                                                            
 OpenCV_3RDPARTY_LIB_DIR_DBG      /usr/share/OpenCV/3rdparty/lib/x86_64-linux-gnu                                                                                    
 OpenCV_3RDPARTY_LIB_DIR_OPT      /usr/share/OpenCV/3rdparty/lib/x86_64-linux-gnu                                                                                    
 OpenCV_CONFIG_PATH               /usr/share/OpenCV                                                                                                                  
 OpenCV_DIR                       /usr/share/OpenCV                                                                                                                  
 OpenCV_LIB_DIR_DBG                                                                                                                                                  
 OpenCV_LIB_DIR_OPT                                                                                                                                                  
 PYTHON_EXECUTABLE                /usr/bin/python2.7                                                                                                                 

PYTHON_INCLUDE_DIR               /usr/include/python2.7                                                                                                             
 PYTHON_LIBRARY                   /usr/lib/x86_64-linux-gnu/libpython2.7.so                                                                                          
 PYTHON_LIBRARY_DEBUG             PYTHON_LIBRARY_DEBUG-NOTFOUND                                                                                                      
 Protobuf_INCLUDE_DIR             /usr/include                                                                                                                       
 Protobuf_LIBRARY_DEBUG           /usr/lib/x86_64-linux-gnu/libprotobuf.so                                                                                           
 Protobuf_LIBRARY_RELEASE         /usr/lib/x86_64-linux-gnu/libprotobuf.so                                                                                           
 Protobuf_LITE_LIBRARY_DEBUG      /usr/lib/x86_64-linux-gnu/libprotobuf-lite.so                                                                                      
 Protobuf_LITE_LIBRARY_RELEASE    /usr/lib/x86_64-linux-gnu/libprotobuf-lite.so                                                                                      
 Protobuf_PROTOC_EXECUTABLE       /usr/bin/protoc                                                                                                                    
 Protobuf_PROTOC_LIBRARY_DEBUG    Protobuf_PROTOC_LIBRARY_DEBUG-NOTFOUND                                                                                             
 Protobuf_PROTOC_LIBRARY_RELEAS   Protobuf_PROTOC_LIBRARY_RELEASE-NOTFOUND                                                                                           
 Snappy_INCLUDE_DIR               /usr/include                                                                                                                       
 Snappy_LIBRARIES                 /usr/lib/x86_64-linux-gnu/libsnappy.so                                                                                             
 USE_CUDNN                        ON                                                                                                                                 
 USE_LEVELDB                      ON                                                                                                                                 
 USE_LMDB                         ON                                                                                                                                 
 USE_NCCL                         OFF                                                                                                                                
 USE_OPENCV                       ON                                                                                                                                 
 USE_OPENMP                       OFF                                                                                                                                
 USE_PROJECT_FOLDERS              OFF                                                                                                                                
 python_version                   2                                                                                                                                  

である。
この後、Makefileを生成して、makeすると、Caffeバイナリが作成される。このまま、make installすると、おなじみの /usr/local 以下にインストールされる。