facebookarchive / c3d Goto Github PK
View Code? Open in Web Editor NEWC3D is a modified version of BVLC caffe to support 3D ConvNets.
License: Other
C3D is a modified version of BVLC caffe to support 3D ConvNets.
License: Other
Hi,
I want to read a binary blob of C3D feature into a numpy array.
I have readed the matlab script, but I don't really get its meaning.
What is the stucture of *.fc6-1 file? Are the first five 32 bytes recorded the num, chanel, length, height and width?
I tried to install C3D under Unbuntu15.04, but I got an error below.Anyone could help me?
/usr/bin/ld: /usr/local/lib/libhdf5.a(H5.c.o): relocation R_X86_64_32 against `H5_debug_g' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libhdf5.a: error adding symbols: 错误的值
collect2: 错误: ld 返回 1
Makefile:285: recipe for target 'build/lib/libcaffe.so' failed
make: *** [build/lib/libcaffe.so] Error 1
does this code have python warpper? thank you
I have gotten the examples to work and I'm now trying to run experiments on my own data.
I'm wondering how C3D handles videos of different lengths. I would like to set the stride to 1 and include all the frames but the videos are of different lengths (100 - 170 frames). What is the best way to handle that kind of data?
I'm running into trouble with computing the mean but my first thought is that it's related to the lengths of the videos.
create_volume_mean.sh:
GLOG_logtostderr=1 ../../build/tools/compute_volume_mean_from_list.bin ../c3d_finetuning/train_house_01.lst 200 128 128 1 house_train_mean.binaryproto
andrew@andrew-All-Series:~/caffe/C3D/examples/house$ sh create_volume_mean.sh
I1206 14:20:56.749550 23315 compute_volume_mean_from_list.cpp:80] Starting Iteration
E1206 14:20:56.756093 23315 compute_volume_mean_from_list.cpp:112] Processed 1524 files.
I1206 14:20:56.756122 23315 compute_volume_mean_from_list.cpp:119] Write to house_train_mean.binaryproto
The resulting house_train_mean.binaryproto is only 11 bytes. Like the other issues, I have made the folder names absolute and the file names are %06d.jpg.
@dutran Hi.
I have a problem when I wanted to compile C3D on my machine. I got error after "make all" that I fixed it using "#2"
but for "make runtest" I still got error. I used suggestions in "BVLC/caffe#626", but I could not fix it. Here it is my current Makefile.config:
I got this error after running make runtest:
build/test/test_all.testbin 0 --gtest_shuffle
Cuda number of devices: 1
Setting to use device 0
Current device id: 0
Note: Randomizing tests' orders with a seed of 22059 .
[==========] Running 407 tests from 72 test cases.
[----------] Global test environment set-up.
[----------] 1 test from UniformFillerTest/0, where TypeParam = float
[ RUN ] UniformFillerTest/0.TestFill
[ OK ] UniformFillerTest/0.TestFill (144 ms)
[----------] 1 test from UniformFillerTest/0 (144 ms total)
[----------] 5 tests from Im2colLayerTest/1, where TypeParam = double
[ RUN ] Im2colLayerTest/1.TestCPU
[ OK ] Im2colLayerTest/1.TestCPU (0 ms)
[ RUN ] Im2colLayerTest/1.TestGPU
F1021 20:35:10.515538 22797 im2col.cu:54] Check failed: error == cudaSuccess (8 vs. 0) invalid device function
*** Check failure stack trace: ***
@ 0x2b97e26b2daa (unknown)
@ 0x2b97e26b2ce4 (unknown)
@ 0x2b97e26b26e6 (unknown)
@ 0x2b97e26b5687 (unknown)
@ 0x5d6b60 caffe::im2col_gpu<>()
@ 0x5c0127 caffe::Im2colLayer<>::Forward_gpu()
@ 0x4482e0 caffe::Layer<>::Forward()
@ 0x4b6bee caffe::Im2colLayerTest_TestGPU_Test<>::TestBody()
@ 0x538cd3 testing::internal::HandleExceptionsInMethodIfSupported<>()
@ 0x52f7b7 testing::Test::Run()
@ 0x52f85e testing::TestInfo::Run()
@ 0x52f965 testing::TestCase::Run()
@ 0x532ca8 testing::internal::UnitTestImpl::RunAllTests()
@ 0x532f37 testing::UnitTest::Run()
@ 0x412c10 main
@ 0x2b97e4c19ec5 (unknown)
@ 0x417e3e (unknown)
@ (nil) (unknown)
make: *** [runtest] Aborted (core dumped)
Could you please help me to fix it.
Thanks a lot.
F0527 19:00:32.462267 31542 image_io.cpp:135] Check failed: end_frm <= num_of_frames (225 vs. 224) end frame must less or equal to num of frames
*** Check failure stack trace: ***
@ 0x2b64bd861b5d google::LogMessage::Fail()
@ 0x2b64bd865b77 google::LogMessage::SendToLog()
@ 0x2b64bd8639f9 google::LogMessage::Flush()
@ 0x2b64bd863cfd google::LogMessageFatal::~LogMessageFatal()
@ 0x4dfd4f caffe::ReadVideoToVolumeDatum()
@ 0x48435a caffe::VideoDataLayerPrefetch<>()
@ 0x3774e079d1 (unknown)
@ 0x3774ae89dd (unknown)
ucf101_finetuning.sh: line 1: 30763 Aborted (core dumped) GLOG_logtostderr=1 ../../build/tools/finetune_net.bin c3d_ucf101_finetuning_solver.prototxt ../c3d_feature_extraction/conv3d_deepnetA_sport1m_iter_1900000
Great paper, thanks for making the source code available! Is the pretrained fbvideo model (that corresponds to the prototxt "c3d_fbvideo_feature_extractor_frm/video.prototxt") made available as well?
Dear dutran!
When I run c3d_sport1m_feature_extraction_frm.sh, I always get an error: out of memory. Although I reduce the bath-size to 10, 5 even to 1, the error appears again and again.
My GPU's memory is 1GB, is it two small for this exxample?
Thanks a lot!
I want to finetune C3D pre-trained model on UCF101, the example uses frames. But I want to use videos, how to modify list files and prototxt files, and different videos have different frames. How to determine frame number in list files. Thank you!
hi du,i use ffmpeg to extract frames from videos,here is some examples of my frames :
000001.jpg 000021.jpg 000041.jpg 000061.jpg 000081.jpg 000101.jpg 000121.jpg 000141.jpg 000161.jpg 000181.jpg
and i use the train_01.lst in your c3d_finetuning fiels ,the path is right,when i run the create_volume_mean file,there some error:
I1202 14:35:56.476048 31451 compute_volume_mean_from_list.cpp:53] using dropping rate 10
I1202 14:35:56.476285 31451 compute_volume_mean_from_list.cpp:81] Starting Iteration
E1202 14:35:56.595129 31451 compute_volume_mean_from_list.cpp:107] Processed 10000 files.
E1202 14:35:56.599031 31451 compute_volume_mean_from_list.cpp:113] Processed 10725 files.
I1202 14:35:56.599041 31451 compute_volume_mean_from_list.cpp:120] Write to ucf101_train_mean.binaryproto
I1202 14:35:56.599046 31451 compute_volume_mean_from_list.cpp:121] sum blob num: 1
I1202 14:35:56.599051 31451 compute_volume_mean_from_list.cpp:122] sum blob channels: 3
I1202 14:35:56.599056 31451 compute_volume_mean_from_list.cpp:123] sum blob length: 16
I1202 14:35:56.599061 31451 compute_volume_mean_from_list.cpp:124] sum blob height: 0
I1202 14:35:56.599064 31451 compute_volume_mean_from_list.cpp:125] sum blob width: 0
I add some test print in cpp. and I check the compute_volum_mean_from_list.cpp:
ReadImageSequenceToVolumeDatum(frm_dir.c_str(), start_frm, label, length, height, width, sampling_rate, &datum);
69 sum_blob.set_num(1);
70 sum_blob.set_channels(datum.channels());
71 sum_blob.set_length(datum.length());
72 sum_blob.set_height(datum.height());
73 sum_blob.set_width(datum.width());
i think the erro happen in the function ReadImageSequenceToVolumeDatum,the height=128,width=171,and datum.height()=0,datum.width()=0.
so ,could you give me some suggest ,thank you !
Hi Du Tran, I'm wondering how to save the test results to files not just the logs in terminal. Now I cannot save the results, so I cannot aggregate the video accuracy. What can I do to solve this?
Hi Du,
I follow "C3D User Guide" and try the example of training from scratch on UCF101. I only modify the batch size from 30 to 10 because of the limited GPU memory. The program runs successfully. But after I run "sh test_ucf101.sh", the clip accuracy on testing data is 0.4022 which is mush lower than the 0.45 proposed in the guide. I also test the clip accuracy on training data, which is 0.9538.
Is my result reasonable?
Thanks.
Hi,
While training/ finetuning my model, I am unable to increase the batch_size more than a value of 5. However I am able to have a batch_size of value 30 while testing.
I am running my scripts on Titan Black GPU.
What could be the reason for such a behavior?
Hi @dutran
I run your example ucf101_finetuning.sh
when iteration 10000, error occurs
F0606 09:01:48.148102 23862 io.cpp:72] Check failed: proto.SerializeToOstream(&output)
*** Check failure stack trace: ***
@ 0x7fb7ee823b5d google::LogMessage::Fail()
@ 0x7fb7ee827b77 google::LogMessage::SendToLog()
@ 0x7fb7ee8259f9 google::LogMessage::Flush()
@ 0x7fb7ee825cfd google::LogMessageFatal::~LogMessageFatal()
@ 0x4508eb caffe::WriteProtoToBinaryFile()
@ 0x43c4bf caffe::Solver<>::Snapshot()
@ 0x43ecbe caffe::Solver<>::Solve()
@ 0x41485d main
@ 0x3d1f01ed1d (unknown)
@ 0x414579 (unknown)
ucf101_finetuning.sh: line 1: 23862 Aborted (core dumped) GLOG_logtostderr=1 ../../build/tools/finetune_net.bin c3d_ucf101_finetuning_solver.prototxt ../c3d_feature_extraction/conv3d_deepnetA_sport1m_iter_1900000
but there are no errors in iteration 1000 to 9000. I think it is strange, my GPU is tesla k40
[nlpr4@bnode01 c3d_finetuning]$ ls
c3d_ucf101_finetune_whole_iter_1000 c3d_ucf101_finetune_whole_iter_8000
c3d_ucf101_finetune_whole_iter_10000 c3d_ucf101_finetune_whole_iter_8000.solverstate
c3d_ucf101_finetune_whole_iter_1000.solverstate c3d_ucf101_finetune_whole_iter_9000
c3d_ucf101_finetune_whole_iter_2000 c3d_ucf101_finetune_whole_iter_9000.solverstate
c3d_ucf101_finetune_whole_iter_2000.solverstate c3d_ucf101_finetuning_solver.prototxt
c3d_ucf101_finetune_whole_iter_3000 c3d_ucf101_finetuning_test.prototxt
c3d_ucf101_finetune_whole_iter_3000.solverstate c3d_ucf101_finetuning_train.prototxt
c3d_ucf101_finetune_whole_iter_4000 frame_to_avi.py
c3d_ucf101_finetune_whole_iter_4000.solverstate myscript
c3d_ucf101_finetune_whole_iter_5000 readme.md
c3d_ucf101_finetune_whole_iter_5000.solverstate read_video.py
c3d_ucf101_finetune_whole_iter_6000 train01_16_128_171_mean.binaryproto
c3d_ucf101_finetune_whole_iter_6000.solverstate train_01.lst
c3d_ucf101_finetune_whole_iter_7000 ucf101_finetuning.sh
c3d_ucf101_finetune_whole_iter_7000.solverstate ucf101_testing.sh
When I tried to run_ucf101.sh, I got an error message below.Anyone could be so kind to help me ?@dutran
F0921 17:46:52.132236 3023 video_data_layer.cpp:346] Check failed: ReadImageSequenceToVolumeDatum(file_list_[id].c_str(), 1, label_list_[id], new_length, new_height, new_width, sampling_rate, &datum)
Also when I tried to run c3d_sport1m_feature_extraction_frm.sh, I got an error message below.
F0921 10:21:11.483539 9951 vol2col.cu:79] Check failed: error == cudaSuccess (8 vs. 0) invalid device function
dear du tran
I want to change the feature extracted by c3d_sport1m_feature_extraction_frm.sh
to txt files so i can use it in libsvm.
I write code like this
#include <stdio.h> // for snprintf
#include <cuda_runtime.h>
#include <google/protobuf/text_format.h>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#include "caffe/blob.hpp"
#include "caffe/common.hpp"
#include "caffe/net.hpp"
#include "caffe/vision_layers.hpp"
#include "caffe/proto/caffe.pb.h"
#include "caffe/util/io.hpp"
#include "caffe/util/image_io.hpp"
using namespace caffe;
template<typename Dtype>
int feature_to_txt_pipeline(int argc,char** argv)
{
::google::InitGoogleLogging(argv[0]);
std::string feature_file(argv[1]);
std::string output_file(argv[2]);
Blob<Dtype>* feature_blob;
load_blob_from_binary(feature_file, feature_blob);
// std::cout<<feature_blob->num()<<std::endl;
return 0;
}
int main(int argc,char** argv)
{
return feature_to_txt_pipeline<float>(argc,argv);
}
And use it like this
feature_to_txt.bin 000001.fc6-1 output.txt
I have no write all of the code yet
i just test this code
error happens
Segmentation fault (core dumped)
what's wrong with my code.
i am not very familar with caffe source code.
thank you very much
forgive my poor english.
Dear dutran
I have successfully run the c3d_feature_extraction examle, so I get some output files such as 000001.fc6-1 000001.fc7-1 and 000001.prob. How can I read features from these files. I couldn't open these files directly with double click.
Thanks!
I have successfully installed the Caffe with mkl and CUDA 7.0 and cuDNN. But when I install the C3D, I use command :make in the directory of C3D-master. Then I have two errors as follow.
src/caffe/util/math_functions.cu(140): error: calling a host function("std::signbit ") from a global function("caffe::sgnbit_kernel ") is not allowed
src/caffe/util/math_functions.cu(140): error: calling a host function("std::signbit ") from a global function("caffe::sgnbit_kernel ") is not allowed
2 errors detected in the compilation of "/tmp/tmpxft_0000342d_00000000-13_math_functions.compute_35.cpp1.ii".
make: *** [build/src/caffe/util/math_functions.cuo] error 2
What can I do for this, thank you very much!
hello Du,When i train the 8 conv networks,I met a problem.Subject to my computing,i set the train and test proto batch size to 5,the lr is 0.001,the max_iter is 100000,the stepsize is 20000.when the network run to 40000 iterations,the loss still around 4.6,not converge,not diverge.could give me some advises about the parameters?Best Wishes,thank you very much!
I'm working thorough the example of training from scratch on UCF101.
I'm able to extract the frames to jpeg with ffmpeg and I edited the test_01 and train_01 lists to the appropriate folder locations. I am able to run create_volume_mean.sh but I encounter the following error when I run the train_ucf101.sh:
I1119 18:47:24.556890 31767 train_net.cpp:26] Starting Optimization
I1119 18:47:24.557006 31767 solver.cpp:41] Creating training net.
I1119 18:47:24.557912 31767 net.cpp:76] Creating Layer data
I1119 18:47:24.557937 31767 net.cpp:112] data -> data
I1119 18:47:24.557951 31767 net.cpp:112] data -> label
I1119 18:47:24.557973 31767 video_data_layer.cpp:283] Opening file ../c3d_finetuning/train_01.lst
I1119 18:47:24.622956 31767 video_data_layer.cpp:312] Shuffling data
I1119 18:47:25.010337 31767 video_data_layer.cpp:317] A total of 107258 video chunks.
I1119 18:47:25.010380 31767 video_data_layer.cpp:344] read video from /home/andrew/caffe/C3D/data/UCF-101/JumpingJack/v_JumpingJack_g25_c05/
F1119 18:47:25.010423 31767 video_data_layer.cpp:346] Check failed: ReadImageSequenceToVolumeDatum(file_list_[id].c_str(), 1, label_list_[id], new_length, new_height, new_width, sampling_rate, &datum)
*** Check failure stack trace: ***
@ 0x7f5c43b5adaa (unknown)
@ 0x7f5c43b5ace4 (unknown)
@ 0x7f5c43b5a6e6 (unknown)
@ 0x7f5c43b5d687 (unknown)
@ 0x49d43e caffe::VideoDataLayer<>::SetUp()
@ 0x450905 caffe::Net<>::Init()
@ 0x451bb5 caffe::Net<>::Net()
@ 0x43172f caffe::Solver<>::Init()
@ 0x434e3b caffe::Solver<>::Solver()
@ 0x40ab46 main
@ 0x7f5c41638ec5 (unknown)
@ 0x40d3b7 (unknown)
@ (nil) (unknown)
Aborted (core dumped)
I've been scratching my head. Any thoughts?
I get the following error:
$ sh c3d_sport1m_feature_extraction_video.sh
WARNING: Logging before InitGoogleLogging() is written to STDERR
E0619 17:15:23.818655 12891 extract_image_features.cpp:55] Using GPU #0
I0619 17:15:23.822535 12891 net.cpp:76] Creating Layer data
I0619 17:15:23.822551 12891 net.cpp:112] data -> data
I0619 17:15:23.822564 12891 net.cpp:112] data -> label
I0619 17:15:23.822578 12891 video_data_layer.cpp:283] Opening file prototxt/input_list_video.txt
I0619 17:15:23.822650 12891 video_data_layer.cpp:317] A total of 16 video chunks.
warning: GStreamer: unable to query position of stream (/builddir/build/BUILD/opencv-2.4.5/modules/highgui/src/cap_gstreamer.cpp:660)
I0619 17:15:23.857631 12891 image_io.cpp:123] not enough frames; having 0
F0619 17:15:23.858307 12891 video_data_layer.cpp:341] Check failed: ReadVideoToVolumeDatum(file_list_[id].c_str(), start_frm_list_[id], label_list_[id], new_length, new_height, new_width, sampling_rate, &datum)
*** Check failure stack trace: ***
c3d_sport1m_feature_extraction_video.sh: line 3: 12891 Aborted (core dumped) GLOG_logtosterr=1 ../../build/tools/extract_image_features.bin prototxt/c3d_sport1m_feature_extractor_video.prototxt conv3d_deepnetA_sport1m_iter_1900000 0 50 1 prototxt/output_list_prefix.txt fc7-1 fc6-1 prob
The main culprit line is in utils/image_io.cpp:121
int num_of_frames = cap.get(CV_CAP_PROP_FRAME_COUNT); // this returns 0 frames.
The opencv version I am using is 2.4.5.
I don't think the problem is with ffmpeg. I am able to get the following output with it
$ ffmpeg -i v_ApplyEyeMakeup_g01_c01.avi -vcodec copy -acodec copy -f null /dev/null 2>&1 |grep 'frame=' | cut -f 2 -d ''
frame= 164 fps=0.0 q=-1.0 Lsize=N/A time=00:00:06.56 bitrate=N/A
Thanks for your help and open sourcing your work!
I am trying to compute the mean volume of the dataset HMDB-51 and I run this code:
GLOG_logtostderr=1 ../../build/tools/compute_volume_mean_from_list.bin c3d_finetuning_HMDB51/train2.lst 16 128 171 1 hmdb51_train_mean.binaryproto 10
My train.lst looks like this:
c3d_finetuning_HMDB51/data/April_09_brush_hair_u_nm_np1_ba_goo_0.avi 1 0
c3d_finetuning_HMDB51/data/April_09_brush_hair_u_nm_np1_ba_goo_0.avi 17 0
c3d_finetuning_HMDB51/data/April_09_brush_hair_u_nm_np1_ba_goo_0.avi 33 0
c3d_finetuning_HMDB51/data/April_09_brush_hair_u_nm_np1_ba_goo_0.avi 49 0
I1021 15:24:30.223497 28438 compute_volume_mean_from_list.cpp:53] using dropping rate 10
I1021 15:24:30.223736 28438 compute_volume_mean_from_list.cpp:80] Starting Iteration
E1021 15:24:30.296300 28438 compute_volume_mean_from_list.cpp:112] Processed 2872 files.
I1021 15:24:30.296344 28438 compute_volume_mean_from_list.cpp:119] Write to hmdb51_train_mean.binaryproto
I get an output file hmdb51_train_mean.binaryproto which is of size 10Bytes.
I have checked the 2 suggestions related to issue-30:
I have tried both and yet the same empty file is returned.
P.S: I do not have any other problems with the code. I am able to extract the features as well.
Thanks in advance!
Hi, I run the finetune example using ucf101 dataset. The loss look like this
I0528 21:46:49.915746 11590 solver.cpp:237] Iteration 20, lr = 0.0001
I0528 21:46:49.916153 11590 solver.cpp:87] Iteration 20, loss = 4.90706
I0528 21:47:27.747942 11590 solver.cpp:237] Iteration 40, lr = 0.0001
I0528 21:47:27.748319 11590 solver.cpp:87] Iteration 40, loss = 4.57005
I0528 21:48:05.530530 11590 solver.cpp:237] Iteration 60, lr = 0.0001
I0528 21:48:05.530972 11590 solver.cpp:87] Iteration 60, loss = 5.05493
I0528 21:48:43.342098 11590 solver.cpp:237] Iteration 80, lr = 0.0001
I0528 21:48:43.342476 11590 solver.cpp:87] Iteration 80, loss = 4.09023
I0528 21:49:21.167407 11590 solver.cpp:237] Iteration 100, lr = 0.0001
I0528 21:49:21.167830 11590 solver.cpp:87] Iteration 100, loss = 4.71882
I0528 21:49:58.997171 11590 solver.cpp:237] Iteration 120, lr = 0.0001
I0528 21:49:58.997553 11590 solver.cpp:87] Iteration 120, loss = 3.3148
I0528 21:50:36.777606 11590 solver.cpp:237] Iteration 140, lr = 0.0001
I0528 21:50:36.777989 11590 solver.cpp:87] Iteration 140, loss = 2.39711
I0528 21:51:14.583552 11590 solver.cpp:237] Iteration 160, lr = 0.0001
I0528 21:51:14.584013 11590 solver.cpp:87] Iteration 160, loss = 3.69446
I0528 21:51:52.391942 11590 solver.cpp:237] Iteration 180, lr = 0.0001
I0528 21:51:52.392320 11590 solver.cpp:87] Iteration 180, loss = 3.81515
I0528 21:52:30.216404 11590 solver.cpp:237] Iteration 200, lr = 0.0001
I0528 21:52:30.216820 11590 solver.cpp:87] Iteration 200, loss = 2.30991
I0528 21:53:08.017086 11590 solver.cpp:237] Iteration 220, lr = 0.0001
I0528 21:53:08.017467 11590 solver.cpp:87] Iteration 220, loss = 4.23676
I0528 21:53:45.828099 11590 solver.cpp:237] Iteration 240, lr = 0.0001
I0528 21:53:45.828479 11590 solver.cpp:87] Iteration 240, loss = 3.21753
I0528 21:54:23.647207 11590 solver.cpp:237] Iteration 260, lr = 0.0001
I0528 21:54:23.647586 11590 solver.cpp:87] Iteration 260, loss = 2.07026
I0528 21:55:01.485985 11590 solver.cpp:237] Iteration 280, lr = 0.0001
I0528 21:55:01.486362 11590 solver.cpp:87] Iteration 280, loss = 1.96745
I0528 21:55:39.291198 11590 solver.cpp:237] Iteration 300, lr = 0.0001
I0528 21:55:39.291574 11590 solver.cpp:87] Iteration 300, loss = 1.99167
I0528 21:56:17.111016 11590 solver.cpp:237] Iteration 320, lr = 0.0001
I0528 21:56:17.111387 11590 solver.cpp:87] Iteration 320, loss = 1.50536
I0528 21:56:54.930027 11590 solver.cpp:237] Iteration 340, lr = 0.0001
I0528 21:56:54.930405 11590 solver.cpp:87] Iteration 340, loss = 3.28589
I0528 21:57:32.727215 11590 solver.cpp:237] Iteration 360, lr = 0.0001
I0528 21:57:32.727594 11590 solver.cpp:87] Iteration 360, loss = 2.74588
I0528 21:58:10.523322 11590 solver.cpp:237] Iteration 380, lr = 0.0001
I0528 21:58:10.523720 11590 solver.cpp:87] Iteration 380, loss = 0.946066
I0528 21:58:48.311733 11590 solver.cpp:237] Iteration 400, lr = 0.0001
I0528 21:58:48.312110 11590 solver.cpp:87] Iteration 400, loss = 2.00241
I0528 21:59:26.104333 11590 solver.cpp:237] Iteration 420, lr = 0.0001
I0528 21:59:26.104742 11590 solver.cpp:87] Iteration 420, loss = 2.41513
I0528 22:00:03.892549 11590 solver.cpp:237] Iteration 440, lr = 0.0001
I0528 22:00:03.892981 11590 solver.cpp:87] Iteration 440, loss = 1.25305
I0528 22:00:41.703632 11590 solver.cpp:237] Iteration 460, lr = 0.0001
I0528 22:00:41.704085 11590 solver.cpp:87] Iteration 460, loss = 1.69272
I0528 22:01:19.531800 11590 solver.cpp:237] Iteration 480, lr = 0.0001
I0528 22:01:19.532176 11590 solver.cpp:87] Iteration 480, loss = 2.35864
I0528 22:01:57.354773 11590 solver.cpp:237] Iteration 500, lr = 0.0001
I0528 22:01:57.355154 11590 solver.cpp:87] Iteration 500, loss = 3.20118
My GPU is K20, I change the batch size from 30 to 10
is this loss normal?
I am curious is there the possibility of using multiple GPUs in C3D? If yes what exactly should I change in solver file?
Thanks.
Dear @dutran,
Since there are many new functions in the latest Caffe, it would be helpful to add the great
C3D function on the latest BVLC/Caffe.
However, the codes are quite different.
I'm still not very familiar with Caffe repository.
May you suggest how to do it smoothly? Thank you.
Hi Du,
I followed the C3DUserGuide and started to extract features for my videos. One of the videos has totally 224 frames and I wrote the input list file as follows:
input/avi/sample224.avi 1 0
input/avi/sample224.avi 17 0
input/avi/sample224.avi 33 0
input/avi/sample224.avi 49 0
input/avi/sample224.avi 65 0
input/avi/sample224.avi 81 0
input/avi/sample224.avi 97 0
input/avi/sample224.avi 113 0
input/avi/sample224.avi 129 0
input/avi/sample224.avi 145 0
input/avi/sample224.avi 161 0
input/avi/sample224.avi 177 0
input/avi/sample224.avi 193 0
input/avi/sample224.avi 209 0
However, it said:
F0717 20:00:40.468828 1975 image_io.cpp:135] Check failed: end_frm <= num_of_frames (225 vs. 224) end frame must less or equal to num of frames
*** Check failure stack trace: ***
Aborted (core dumped)
So I modified the input list as follows:
input/avi/sample224.avi 0 0
input/avi/sample224.avi 16 0
input/avi/sample224.avi 32 0
input/avi/sample224.avi 48 0
input/avi/sample224.avi 64 0
input/avi/sample224.avi 80 0
input/avi/sample224.avi 96 0
input/avi/sample224.avi 112 0
input/avi/sample224.avi 128 0
input/avi/sample224.avi 144 0
input/avi/sample224.avi 160 0
input/avi/sample224.avi 176 0
input/avi/sample224.avi 192 0
input/avi/sample224.avi 208 0
and it worked well and features were extracted successfully.
So I looked into the source code of image_io.cpp and found:
#133: cap.set(CV_CAP_PROP_POS_FRAMES, use_start_frm);
#134: int end_frm = use_start_frm + length * sampling_rate;
Then I found CV_CAP_PROP_POS_FRAMES: 0-based index of the frame to be decoded/captured next.
So I guess the cause of my problem may be the index of the first frame is 0 in OpenCV. For example, if I write
input/avi/sample224.avi m 0
in the input list, it actually starts capturing from frame m+1 and extracts features for frames from m+1 to m+16, not from m to m+15.
So I think it would be better if you use the following input list file as an example:
input/avi/v_ApplyEyeMakeup_g01_c01.avi 0 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 16 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 32 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 48 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 64 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 80 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 96 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 112 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 128 0
input/avi/v_ApplyEyeMakeup_g01_c01.avi 144 0
input/avi/v_BaseballPitch_g01_c01.avi 0 0
input/avi/v_BaseballPitch_g01_c01.avi 16 0
input/avi/v_BaseballPitch_g01_c01.avi 32 0
input/avi/v_BaseballPitch_g01_c01.avi 48 0
input/avi/v_BaseballPitch_g01_c01.avi 64 0
input/avi/v_BaseballPitch_g01_c01.avi 80 0
Are there any misunderstandings about the above problem? Do you have any further suggestions?
Many thanks,
Nigel
how to use it in libsvm? I am not very familar with the extracted feature type.
Hi Dutran,
Thank you for creating and sharing this fork! From the examples you have provided, I understand that you have developed this package primarily for video data analysis, but I have also noticed the implementation for "volume_data_layer", which takes a level-db as its input. I think a volume_data_layer for 64x64x50 subvolumes should simply look like this
layers {
name: "data"
type: VOLUME_DATA
top: "data"
top: "label"
image_data_param {
source: "vol_6x64x50_leveldb"
mean_file: "vol_mean_64x64x50.binaryproto"
batch_size: 30
mirror: false
show_data: 0
shuffle: true
}
}
But I don't know how to generate a leveldb file for the volumetric data. If you happen to have such a script, could you please share it with us? A few posts on the caffe's github page suggest the use of hdf5 for volumetric data but no mentions of leveldb...So, I would appreciate if you could explain how such a leveldb file can be generated.
Thank you!
Nima
Hi Du Tran,
I have successfully built the latest version of Caffe with CUDA7.0 in a virtual machine of Ubuntu14.04. Since there is no GPU, I uncommented the line "CPU_ONLY := 1" in 'Makefile.config' file of the latest Caffe.
I find your 'Makefile.config' file does not include the "CPU_ONLY := 1" statement. Does this mean I can only build your code with GPU support?
I added one line stating "CPU_ONLY := 1" to your 'Makefile.config' file and tried 'make all'. The following errors occurred:
......
/usr/bin/g++ build/tools/device_query.o build/lib/libcaffe.a -o build/tools/device_query.bin -pthread -fPIC -DNDEBUG -O2 -I/usr/local/include/python2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -Ibuild/src -I./src -I./include -I/usr/local/cuda/include -L/usr/local/lib -L/usr/local/lib -L/usr/lib -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib -lcudart -lcublas -lcurand -lpthread -lglog -lprotobuf -lleveldb -lsnappy -lboost_system -lhdf5_hl -lhdf5 -lopencv_core -lopencv_highgui -lopencv_imgproc -lcblas -latlas -Wall
/usr/bin/g++ build/tools/extract_learned_filters.o build/lib/libcaffe.a -o build/tools/extract_learned_filters.bin -pthread -fPIC -DNDEBUG -O2 -I/usr/local/include/python2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -Ibuild/src -I./src -I./include -I/usr/local/cuda/include -L/usr/local/lib -L/usr/local/lib -L/usr/lib -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib -lcudart -lcublas -lcurand -lpthread -lglog -lprotobuf -lleveldb -lsnappy -lboost_system -lhdf5_hl -lhdf5 -lopencv_core -lopencv_highgui -lopencv_imgproc -lcblas -latlas -Wall
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_add_scalar<float>(int, float, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x8a0): multiple definition of `void caffe::caffe_gpu_add_scalar<float>(int, float, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x8a0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_add_scalar<double>(int, double, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x930): multiple definition of `void caffe::caffe_gpu_add_scalar<double>(int, double, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x930): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_mul<float>(int, float const*, float const*, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x9c0): multiple definition of `void caffe::caffe_gpu_mul<float>(int, float const*, float const*, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x9c0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_mul<double>(int, double const*, double const*, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xa50): multiple definition of `void caffe::caffe_gpu_mul<double>(int, double const*, double const*, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xa50): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_div<float>(int, float const*, float const*, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xae0): multiple definition of `void caffe::caffe_gpu_div<float>(int, float const*, float const*, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xae0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_div<double>(int, double const*, double const*, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xb70): multiple definition of `void caffe::caffe_gpu_div<double>(int, double const*, double const*, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xb70): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_powx<float>(int, float const*, float, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xc00): multiple definition of `void caffe::caffe_gpu_powx<float>(int, float const*, float, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xc00): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_powx<double>(int, double const*, double, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xca0): multiple definition of `void caffe::caffe_gpu_powx<double>(int, double const*, double, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xca0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_sign<float>(int, float const*, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xd40): multiple definition of `void caffe::caffe_gpu_sign<float>(int, float const*, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xd40): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_sign<double>(int, double const*, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xdd0): multiple definition of `void caffe::caffe_gpu_sign<double>(int, double const*, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xdd0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_sgnbit<float>(int, float const*, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xe60): multiple definition of `void caffe::caffe_gpu_sgnbit<float>(int, float const*, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xe60): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_sgnbit<double>(int, double const*, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xef0): multiple definition of `void caffe::caffe_gpu_sgnbit<double>(int, double const*, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xef0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_fabs<float>(int, float const*, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0xf80): multiple definition of `void caffe::caffe_gpu_fabs<float>(int, float const*, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0xf80): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_fabs<double>(int, double const*, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1010): multiple definition of `void caffe::caffe_gpu_fabs<double>(int, double const*, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1010): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `unsigned int caffe::caffe_gpu_hamming_distance<float>(int, float const*, float const*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x10a0): multiple definition of `unsigned int caffe::caffe_gpu_hamming_distance<float>(int, float const*, float const*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x10a0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `unsigned int caffe::caffe_gpu_hamming_distance<double>(int, double const*, double const*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x10f0): multiple definition of `unsigned int caffe::caffe_gpu_hamming_distance<double>(int, double const*, double const*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x10f0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `__device_stub__ZN5caffe11popc_kernelEiPKfS1_Ph(int, float const*, float const*, unsigned char*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1140): multiple definition of `__device_stub__ZN5caffe11popc_kernelEiPKfS1_Ph(int, float const*, float const*, unsigned char*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1140): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `caffe::popc_kernel(int, float const*, float const*, unsigned char*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x11d0): multiple definition of `caffe::popc_kernel(int, float const*, float const*, unsigned char*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x11d0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `__device_stub__ZN5caffe13popcll_kernelEiPKdS1_Ph(int, double const*, double const*, unsigned char*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x11e0): multiple definition of `__device_stub__ZN5caffe13popcll_kernelEiPKdS1_Ph(int, double const*, double const*, unsigned char*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x11e0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `caffe::popcll_kernel(int, double const*, double const*, unsigned char*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1270): multiple definition of `caffe::popcll_kernel(int, double const*, double const*, unsigned char*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1270): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_set<float>(int, float, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1280): multiple definition of `void caffe::caffe_gpu_set<float>(int, float, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1280): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_set<double>(int, double, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x13d0): multiple definition of `void caffe::caffe_gpu_set<double>(int, double, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x13d0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_rng_uniform<float>(int, float, float, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1520): multiple definition of `void caffe::caffe_gpu_rng_uniform<float>(int, float, float, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1520): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `caffe::caffe_gpu_rng_uniform(int, unsigned int*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1740): multiple definition of `caffe::caffe_gpu_rng_uniform(int, unsigned int*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1740): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_rng_gaussian<float>(int, float, float, float*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x18f0): multiple definition of `void caffe::caffe_gpu_rng_gaussian<float>(int, float, float, float*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x18f0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_rng_gaussian<double>(int, double, double, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1ab0): multiple definition of `void caffe::caffe_gpu_rng_gaussian<double>(int, double, double, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1ab0): first defined here
build/src/caffe/util/math_functions_backup.cuo: In function `void caffe::caffe_gpu_rng_uniform<double>(int, double, double, double*)':
tmpxft_000051b5_00000000-10_math_functions_backup.compute_20.cudafe1.cpp:(.text+0x1c70): multiple definition of `void caffe::caffe_gpu_rng_uniform<double>(int, double, double, double*)'
build/src/caffe/util/math_functions.cuo:tmpxft_000050b7_00000000-10_math_functions.compute_20.cudafe1.cpp:(.text+0x1c70): first defined here
collect2: error: ld returned 1 exit status
make: *** [build/lib/libcaffe.so] Error 1
make: *** Waiting for unfinished jobs....
Many thanks,
Nigel
Hi,
I am trying to train C3D from scratch. But I met a problem when trying to compute the volume mean.
So... what is the meaning of length and sampling_rate in compute_volume_mean_from_list.cpp? And how to set their values ?
For example, my input_chunk_list is like this:
/media/michael/F/data/UCF-101/UCF-101-frames/v_ApplyEyeMakeup_g08_c01 1 0
/media/michael/F/data/UCF-101/UCF-101-frames/v_ApplyEyeMakeup_g08_c01 17 0
/media/michael/F/data/UCF-101/UCF-101-frames/v_ApplyEyeMakeup_g08_c01 33 0
......
And I write a script to commpute volumn mean:
GLOG_logtostderr=1 /home/michael/workspace/C3D/build/tools/compute_volume_mean_from_list.bin /home/michael/workspace/C3D/examples/ARCH/train_01_for_com_mean.lst 16 128 171 1 /home/michael/workspace/C3D/examples/ARCH/mean_train_16_128_171.binaryproto
the length is set to be 16 and the sampling_rate is set to be 1, because I found the new_length in /c3d_finetuning/c3d_ucf101_finetuning_train.prototxt is 16 .
name: "DeepConv3DNet_ucf101_finetuning"
layers {
name: "data"
type: VIDEO_DATA
top: "data"
top: "label"
image_data_param {
source: "train_01.lst"
use_image: true
mean_file: "train01_16_128_171_mean.binaryproto"
use_temporal_jitter: false
batch_size: 30
crop_size: 112
mirror: true
show_data: 0
new_height: 128
new_width: 171
new_length: 16
shuffle: true
}
}
But it seems that something is wrong. So I think my setting 16 128 171 1 (length height width sampling_rate) when calling compute_volume_mean_from_list.bin is wrong.
Could you give me some suggestions about this question?
Thank you very much!
Hi everyone,
Now I'd like to train on my own data from scratch. I can start the training without the mean file, but get the error as attached image when I use the mean file.
I guess the problem comes from the volume mean file. I run the 'compute volume mean from list.bin', it seems ok as attached image,
but processing speed is too fast only 3seconds and the generated *_mean.binartproto file is very small only 10 bytes.
The image below is my input_chunk_list.
Could you give me some help? Thanks a lot!
cudnn v2
/usr/bin/ld: /usr/local/lib/libhdf5.a(H5.c.o): relocation R_X86_64_32 against `H5_debug_g' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libhdf5.a: error adding symbols:
collect2: error: ld returned 1 exit status
Makefile:285: recipe for target 'build/lib/libcaffe.so' failed
make: *** [build/lib/libcaffe.so] Error 1
make: ***
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/convert_imageset.bin' failed
make: *** [build/tools/convert_imageset.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/compute_image_mean.bin' failed
make: *** [build/tools/compute_image_mean.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/upgrade_net_proto_text.bin' failed
make: *** [build/tools/upgrade_net_proto_text.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/compute_image_mean_from_list.bin' failed
make: *** [build/tools/compute_image_mean_from_list.bin] Error 1
//usr/bin/ld: /usr/local/lib/usr/libprotobuf.sobin: undefined /reference to symbol 'ldinflate':
//usrusr/lib/local/gcc//x86_64lib-linux-/libprotobuf.sognu/4.8/..:/../. ./x86_64undefined-linux-gnu reference/libz.so to: error adding symbolssymbol : DSO missing' from command inflate'
line
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error collect2: error: ld returned 1 exit status
adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/upgrade_net_proto_binary.bin' failed
make: *** [build/tools/upgrade_net_proto_binary.bin] Error 1
Makefile:310: recipe for target 'build/tools/compute_volume_mean_from_list.bin' failed
make: *** [build/tools/compute_volume_mean_from_list.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/extract_learned_filters.bin' failed
make: *** [build/tools/extract_learned_filters.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/blob_proto_to_blob_binary.bin' failed
make: *** [build/tools/blob_proto_to_blob_binary.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/compute_volume_mean.bin' failed
make: *** [build/tools/compute_volume_mean.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/train_net.bin' failed
make: *** [build/tools/train_net.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/extract_features.bin' failed
make: *** [build/tools/extract_features.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: /DSO missing from command lineusr
/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linuxcollect2: error: ld returned 1 exit status
-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/extract_image_features.bin' failed
make: *** [build/tools/extract_image_features.bin] Error 1
Makefile:310: recipe for target 'build/tools/dump_network.bin' failed
make: *** [build/tools/dump_network.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/net_speed_benchmark.bin' failed
make: *** [build/tools/net_speed_benchmark.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/test_net.bin' failed
make: *** [build/tools/test_net.bin] Error 1
/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:310: recipe for target 'build/tools/finetune_net.bin' failed
make: *** [build/tools/finetune_net.bin] Error 1
Before an image or a frame of video are thrown into a CNN, we usually subtract a mean file from the input image. And you have provided a mean file named " fb_train16_128_mean.binaryproto". How was this file created. Is it average image of all images in the train set? If I finetune my model in my own dataset, should I creat a new mean file for the new dataset?
Thanks a lot!
When I execute make test, I get a warning message as follow:
test_data_layer.cpp:(.text._ZN5caffe13DataLayerTestIfEC2Ev[_ZN5caffe13DataLayerTestIfEC5Ev]+0x21): warnning: the use of tmpnam' is dangerous, better use
mkstemp'
Does it make any bad effects?
Here is my result of running Video extraction script (I've passed the frame script):
WARNING: Logging before InitGoogleLogging() is written to STDERR
E0727 22:44:11.561401 28087 extract_image_features.cpp:55] Using GPU #0
I0727 22:44:11.563448 28087 net.cpp:76] Creating Layer data
I0727 22:44:11.563490 28087 net.cpp:112] data -> data
I0727 22:44:11.563510 28087 net.cpp:112] data -> label
I0727 22:44:11.563531 28087 video_data_layer.cpp:283] Opening file prototxt/input_list_video.txt
I0727 22:44:11.563642 28087 video_data_layer.cpp:317] A total of 16 video chunks.
[mpeg4 @ 0x51b84c0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x51b84c0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x51e93a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x51eea20] Invalid and inefficient vfw-avi packed B frames detected
I0727 22:44:11.592236 28087 video_data_layer.cpp:365] output data size: 50,3,16,112,112
I0727 22:44:11.592283 28087 video_data_layer.cpp:387] Loading mean file fromsport1m_train16_128_mean.binaryproto
I0727 22:44:11.638545 28087 net.cpp:127] Top shape: 50 3 16 112 112 (30105600)
I0727 22:44:11.638589 28087 net.cpp:127] Top shape: 50 1 1 1 1 (50)
I0727 22:44:11.638603 28087 net.cpp:159] data does not need backward computation.
I0727 22:44:11.638622 28087 net.cpp:76] Creating Layer conv1a
I0727 22:44:11.638633 28087 net.cpp:86] conv1a <- data
I0727 22:44:11.638653 28087 net.cpp:112] conv1a -> conv1a
I0727 22:44:11.639158 28087 net.cpp:127] Top shape: 50 64 16 112 112 (642252800)
I0727 22:44:11.639184 28087 net.cpp:154] conv1a needs backward computation.
I0727 22:44:11.639199 28087 net.cpp:76] Creating Layer relu1a
I0727 22:44:11.639209 28087 net.cpp:86] relu1a <- conv1a
I0727 22:44:11.639219 28087 net.cpp:100] relu1a -> conv1a (in-place)
I0727 22:44:11.639231 28087 net.cpp:127] Top shape: 50 64 16 112 112 (642252800)
I0727 22:44:11.639241 28087 net.cpp:154] relu1a needs backward computation.
I0727 22:44:11.639253 28087 net.cpp:76] Creating Layer pool1
I0727 22:44:11.639262 28087 net.cpp:86] pool1 <- conv1a
I0727 22:44:11.639272 28087 net.cpp:112] pool1 -> pool1
I0727 22:44:11.639292 28087 net.cpp:127] Top shape: 50 64 16 56 56 (160563200)
I0727 22:44:11.639308 28087 net.cpp:154] pool1 needs backward computation.
I0727 22:44:11.639322 28087 net.cpp:76] Creating Layer conv2a
I0727 22:44:11.639331 28087 net.cpp:86] conv2a <- pool1
I0727 22:44:11.639343 28087 net.cpp:112] conv2a -> conv2a
[mpeg4 @ 0x7f5770002be0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770002be0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700057a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770002460] Invalid and inefficient vfw-avi packed B frames detected
I0727 22:44:11.650568 28087 net.cpp:127] Top shape: 50 128 16 56 56 (321126400)
I0727 22:44:11.650612 28087 net.cpp:154] conv2a needs backward computation.
I0727 22:44:11.650629 28087 net.cpp:76] Creating Layer relu2a
I0727 22:44:11.650641 28087 net.cpp:86] relu2a <- conv2a
I0727 22:44:11.650653 28087 net.cpp:100] relu2a -> conv2a (in-place)
I0727 22:44:11.650665 28087 net.cpp:127] Top shape: 50 128 16 56 56 (321126400)
I0727 22:44:11.650674 28087 net.cpp:154] relu2a needs backward computation.
I0727 22:44:11.650686 28087 net.cpp:76] Creating Layer pool2
I0727 22:44:11.650696 28087 net.cpp:86] pool2 <- conv2a
I0727 22:44:11.650706 28087 net.cpp:112] pool2 -> pool2
I0727 22:44:11.650717 28087 net.cpp:127] Top shape: 50 128 8 28 28 (40140800)
I0727 22:44:11.650727 28087 net.cpp:154] pool2 needs backward computation.
I0727 22:44:11.650739 28087 net.cpp:76] Creating Layer conv3a
I0727 22:44:11.650749 28087 net.cpp:86] conv3a <- pool2
I0727 22:44:11.650759 28087 net.cpp:112] conv3a -> conv3a
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770003e00] Invalid and inefficient vfw-avi packed B frames detected
I0727 22:44:11.682303 28087 net.cpp:127] Top shape: 50 256 8 28 28 (80281600)
I0727 22:44:11.682332 28087 net.cpp:154] conv3a needs backward computation.
I0727 22:44:11.682344 28087 net.cpp:76] Creating Layer relu3a
I0727 22:44:11.682353 28087 net.cpp:86] relu3a <- conv3a
I0727 22:44:11.682361 28087 net.cpp:100] relu3a -> conv3a (in-place)
I0727 22:44:11.682369 28087 net.cpp:127] Top shape: 50 256 8 28 28 (80281600)
I0727 22:44:11.682376 28087 net.cpp:154] relu3a needs backward computation.
I0727 22:44:11.682385 28087 net.cpp:76] Creating Layer conv3b
I0727 22:44:11.682392 28087 net.cpp:86] conv3b <- conv3a
I0727 22:44:11.682400 28087 net.cpp:112] conv3b -> conv3b
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770004480] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57700236a0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f57702ddde0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577001eca0] Invalid and inefficient vfw-avi packed B frames detected
I0727 22:44:11.740874 28087 net.cpp:127] Top shape: 50 256 8 28 28 (80281600)
I0727 22:44:11.740916 28087 net.cpp:154] conv3b needs backward computation.
I0727 22:44:11.740928 28087 net.cpp:76] Creating Layer relu3b
I0727 22:44:11.740937 28087 net.cpp:86] relu3b <- conv3b
I0727 22:44:11.740947 28087 net.cpp:100] relu3b -> conv3b (in-place)
I0727 22:44:11.740955 28087 net.cpp:127] Top shape: 50 256 8 28 28 (80281600)
I0727 22:44:11.740962 28087 net.cpp:154] relu3b needs backward computation.
I0727 22:44:11.740970 28087 net.cpp:76] Creating Layer pool3
I0727 22:44:11.740978 28087 net.cpp:86] pool3 <- conv3b
I0727 22:44:11.740985 28087 net.cpp:112] pool3 -> pool3
I0727 22:44:11.740995 28087 net.cpp:127] Top shape: 50 256 4 14 14 (10035200)
I0727 22:44:11.741003 28087 net.cpp:154] pool3 needs backward computation.
I0727 22:44:11.741011 28087 net.cpp:76] Creating Layer conv4a
I0727 22:44:11.741019 28087 net.cpp:86] conv4a <- pool3
I0727 22:44:11.741026 28087 net.cpp:112] conv4a -> conv4a
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006af00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770781ba0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577006dd00] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f577001d940] Invalid and inefficient vfw-avi packed B frames detected
I0727 22:44:11.857704 28087 net.cpp:127] Top shape: 50 512 4 14 14 (20070400)
I0727 22:44:11.857738 28087 net.cpp:154] conv4a needs backward computation.
I0727 22:44:11.857750 28087 net.cpp:76] Creating Layer relu4a
I0727 22:44:11.857758 28087 net.cpp:86] relu4a <- conv4a
I0727 22:44:11.857767 28087 net.cpp:100] relu4a -> conv4a (in-place)
I0727 22:44:11.857775 28087 net.cpp:127] Top shape: 50 512 4 14 14 (20070400)
I0727 22:44:11.857784 28087 net.cpp:154] relu4a needs backward computation.
I0727 22:44:11.857791 28087 net.cpp:76] Creating Layer conv4b
I0727 22:44:11.857799 28087 net.cpp:86] conv4b <- conv4a
I0727 22:44:11.857805 28087 net.cpp:112] conv4b -> conv4b
[mpeg4 @ 0x7f5770555fa0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770555fa0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770555fa0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770022b20] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770555fa0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770555fa0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770555fa0] Invalid and inefficient vfw-avi packed B frames detected
[mpeg4 @ 0x7f5770004c60] Invalid and inefficient vfw-avi packed B frames detected
I0727 22:44:12.026093 28113 image_io.cpp:143] No data at frame 92
F0727 22:44:12.026762 28113 video_data_layer.cpp:123] Check failed: read_status Testing must not miss any example
*** Check failure stack trace: ***
Is this due to that openCV was not compiled with enable-shared flag ON?
I've installed openCV and ffmpeg 0.8.17-4:0.8.17-0ubuntu0.12.04.1.
But I'm not sure if openCV was installed with enable-shared flag ON.
Any suggestion is welcome. Thank you.
E0529 11:24:15.056433 13957 test_net.cpp:51] Batch 1373, accuracy: 0.8
E0529 11:24:16.577850 13957 test_net.cpp:51] Batch 1374, accuracy: 0.833333
E0529 11:24:18.104264 13957 test_net.cpp:51] Batch 1375, accuracy: 0.833333
E0529 11:24:19.628096 13957 test_net.cpp:51] Batch 1376, accuracy: 0.833333
E0529 11:24:21.147753 13957 test_net.cpp:51] Batch 1377, accuracy: 0.833333
E0529 11:24:22.675658 13957 test_net.cpp:51] Batch 1378, accuracy: 0.733333
E0529 11:24:24.198937 13957 test_net.cpp:51] Batch 1379, accuracy: 0.8
E0529 11:24:25.720679 13957 test_net.cpp:51] Batch 1380, accuracy: 0.8
E0529 11:24:27.248215 13957 test_net.cpp:51] Batch 1381, accuracy: 0.866667
E0529 11:24:28.769614 13957 test_net.cpp:51] Batch 1382, accuracy: 0.833333
E0529 11:24:30.297591 13957 test_net.cpp:51] Batch 1383, accuracy: 0.766667
E0529 11:24:30.297626 13957 test_net.cpp:54] Test accuracy: 0.786777
I run ucf101_testing.sh
I change batch size from 50 to 30,
so I have 1384 batches in total
Test accuracy is 0.786777, is this ok?
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/blob_proto_to_blob_binary.bin] Error 1
make: *** Waiting for unfinished jobs....
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/upgrade_net_proto_binary.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/compute_image_mean.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/device_query.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
/collect2: public/home/kli/local/lib/libopencv_highgui.so:ld returned 1 exit status undefined
reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/examples/mnist/convert_mnist_data.bin] Error 1
make: *** [build/tools/compute_image_mean_from_list.bin] Error 1
make: *** [build/tools/upgrade_net_proto_text.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/compute_volume_mean_from_list.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/convert_imageset.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/compute_volume_mean.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/examples/cifar10/convert_cifar_data.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/finetune_net.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/dump_network.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/extract_learned_filters.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/extract_features.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/extract_image_features.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/test_net.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/train_net.bin] Error 1
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/public/home/kli/local/lib/libopencv_highgui.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
collect2: ld returned 1 exit status
make: *** [build/tools/net_speed_benchmark.bin] Error 1
Hi @dutran,
I want to extract C3D features using your published software in this repo. I installed C3D successfully following Caffe instructions. Then, following your user guide, I execute the example Shell script,
sh c3d_sport1m_feature_extraction_video.sh
It failed as follows,
I1208 16:02:25.142551 27872 net.cpp:154] prob needs backward computation.
I1208 16:02:25.142566 27872 net.cpp:76] Creating Layer accuracy
I1208 16:02:25.142578 27872 net.cpp:86] accuracy <- prob
I1208 16:02:25.142591 27872 net.cpp:86] accuracy <- label
I1208 16:02:25.142606 27872 net.cpp:112] accuracy -> accuracy
I1208 16:02:25.142623 27872 net.cpp:127] Top shape: 1 2 1 1 1 (2)
I1208 16:02:25.142635 27872 net.cpp:154] accuracy needs backward computation.
I1208 16:02:25.142647 27872 net.cpp:165] This network produces output accuracy
I1208 16:02:25.142689 27872 net.cpp:183] Collecting Learning Rate and Weight Decay.
I1208 16:02:25.142758 27872 net.cpp:176] Network initialization done.
I1208 16:02:25.142784 27872 net.cpp:177] Memory required for Data 5653289408
E1208 16:02:26.047878 27872 extract_image_features.cpp:72] Extracting features for 1 batches
F1208 16:02:26.387730 27872 vol2col.cu:75] Check failed: error == cudaSuccess (8 vs. 0) invalid device functio
Hope to receive your responses,
Hi,
I have a question about finetuning example.
I am trying findtuning with UCF101 dataset.
I tried this input video list file but I got below error.
I already checked the #7 and I knew that the cause is exceeded frame number.
I just modified your train_01.lst that reduce all starting frame numbers by 1.
Actually, I expected that the modified list file is working.
I attached my input list file.
https://drive.google.com/file/d/0B8SF8y0vnydpQm01TERSbElhRVU/view?usp=sharing
Hi,
I have fine-tuned C3D model on ActivityNet video dataset using video frames. I am training on some parts of videos for examples frames [100..200] or [1234....1800] so my training list file might not start from frame 1 in order to do that I have just changed line 345 of VideoDataLayer:
from:
CHECK(ReadImageSequenceToVolumeDatum(file_list_[id].c_str(), 1, label_list_[id],
new_length, new_height, new_width, sampling_rate, &datum));
to
CHECK(ReadImageSequenceToVolumeDatum(file_list_[id].c_str(), start_frm_list_[id], label_list_[id],
new_length, new_height, new_width, sampling_rate, &datum));
When I test finetuned model and compute accuracy for list of test input data (formated as you described in your instruction) I get 0.3 accuracy.
However when I extract probability or accuracy of exact same list of test input data and same finetuned model I get always 0 accuracy (single precision and logprob around 5-6) and also based on extracted probabilities, I get very low 0.000005 accuracy. So extracted probabilities and accuracy are consistent but accuracy computed by finetuning_test is 30% which is reasonable.
Do you have any idea where this issue could possibly come from? Is it possible that the line I have changed make this issue and model need all the frames of one video clips to use for training/feature-extraction?
Best!
Hi,
I work on ubuntu 14.04 and using GTX 980 with cuda 6.5. I can successfully compiled C3D. But when I execute running, it reports following error:
Check failed: error == cudaSuccess (8 vs. 0) invalid device function
This error is reported when executing CUDA_POST_KERNEL_CHECK; in vol2col.cu's row 75.
I can run caffe successfully also.
Do anyone have any idea of how shall I fix this? Thanks so much.
Dear Du,
There's a torch-caffe-binding:
https://github.com/szagoruyko/torch-caffe-binding
I was wondering if it could be applied to C3D.
If it's possible, please kindly suggest how to modify for this command
net = caffe.Net('deploy.prototxt', 'bvlc_alexnet.caffemodel', 'test')
Thank you.
Hi Du,
Just a quick question. Do I need to resize the videos before extracting their C3D features? Because in your paper, you have resized all video frames into 128*171.
Thank you very much:)
Nigel
Hi! I followed the guide and I trained on a subset of ucf-101 dataset. I used 3 classes (I changed the num_output of last fc to 3) and it works. I have a strange problem when I use the script /build/tools/extract_image_features.bin. If I use it in demo it works (in c3d_feature_extraction folder), but if I use it with my training it doesn't work.
I use the .prototxt in c3d_train_ucf101 and the snapshot created in the training.
The script is this one:
GLOG_logtosterr=1 ../../build/tools/extract_image_features.bin ./proto_files/conv3d_ucf101_test_nobias.prototxt ./snapshots/conv3d_ucf101_3classes_titan_nobias_iter_450 0 1 1 ./proto_files/output_list_prefix.txt prob
I have the following error:
I1217 18:49:40.410287 23534 net.cpp:76] Creating Layer fc8
I1217 18:49:40.410292 23534 net.cpp:86] fc8 <- fc7
I1217 18:49:40.410297 23534 net.cpp:112] fc8 -> fc8
I1217 18:49:40.410418 23534 net.cpp:127] Top shape: 1 3 1 1 1 (3)
I1217 18:49:40.410436 23534 net.cpp:154] fc8 needs backward computation.
I1217 18:49:40.410444 23534 net.cpp:76] Creating Layer prob
I1217 18:49:40.410449 23534 net.cpp:86] prob <- fc8
I1217 18:49:40.410459 23534 net.cpp:112] prob -> prob
I1217 18:49:40.410466 23534 net.cpp:127] Top shape: 1 3 1 1 1 (3)
I1217 18:49:40.410471 23534 net.cpp:154] prob needs backward computation.
I1217 18:49:40.410477 23534 net.cpp:76] Creating Layer accuracy
I1217 18:49:40.410482 23534 net.cpp:86] accuracy <- prob
I1217 18:49:40.410487 23534 net.cpp:86] accuracy <- label
I1217 18:49:40.410500 23534 net.cpp:112] accuracy -> accuracy
I1217 18:49:40.410524 23534 net.cpp:127] Top shape: 1 2 1 1 1 (2)
I1217 18:49:40.410531 23534 net.cpp:154] accuracy needs backward computation.
I1217 18:49:40.410536 23534 net.cpp:165] This network produces output accuracy
I1217 18:49:40.410553 23534 net.cpp:183] Collecting Learning Rate and Weight Decay.
I1217 18:49:40.410573 23534 net.cpp:176] Network initialization done.
I1217 18:49:40.410578 23534 net.cpp:177] Memory required for Data 103796772
in the network ./proto_files/conv3d_ucf101_test_nobias.prototxt failed: feature_extraction_net->has_blob(string(argv[i])) Unknown feature blob name prob
*** Check failure stack trace: ***
Aborted (core dumped)
As you can see the layer prob is present. Maybe to use this script I need to do something when I train the model?
Thanks
Hi Du,
I extracted the features successfully, how can I train them by SVM? Should I use Matlab or I can use "hinge loss layer" in Caffe for this purpose?
Could you please tell me the required steps after reading features by your script in matlab?
Thanks in advance!
Hello, I want to extract all features of UCF101. I modify your provided train_01.lst and test_01.lst as follow:
For input list:
Uploading input_train_01_new_ucf101.txt…
For output lsit:
output_train_01_new_ucf101t.txt
However, Successfully extracted 0 features! I didn't get any features.
Thanks a lot!
I run ucf101_testing.sh, when going to batch 29, there is an error : Check failed: read status Testing must not miss any example. Before that, I have successfully trained the network on UCF101 with your trainlist. It's ok. From batch 1to 29, I can get the accuracy normally. But going to Batch 30, the error appears. I am confused. So I seek help here, thank you! @dutran
I follow the caffe install step. but error in make test
src/caffe/test/test_tanh_layer.cpp: In constructor ‘caffe::TanHLayerTest<Dtype>::TanHLayerTest() [with Dtype = double]’:
src/caffe/test/test_tanh_layer.cpp:100: instantiated from ‘testing::Test* testing::internal::TestFactoryImpl<TestClass>::CreateTest() [with TestClass = caffe::TanHLayerTest_TestGradientGPU_Test<double>]’
src/caffe/test/test_tanh_layer.cpp:109: instantiated from here
src/caffe/test/test_tanh_layer.cpp:27: error: no matching function for call to ‘caffe::Blob<double>::Blob(int, int, int, int)’
./include/caffe/blob.hpp:114: note: candidates are: caffe::Blob<Dtype>::Blob(const caffe::Blob<Dtype>&) [with Dtype = double]
./include/caffe/blob.hpp:18: note: caffe::Blob<Dtype>::Blob(int, int, int, int, int) [with Dtype = double]
./include/caffe/blob.hpp:15: note: caffe::Blob<Dtype>::Blob() [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp: In constructor ‘caffe::TanHLayerTest<Dtype>::TanHLayerTest() [with Dtype = float]’:
src/caffe/test/test_tanh_layer.cpp:100: instantiated from ‘testing::Test* testing::internal::TestFactoryImpl<TestClass>::CreateTest() [with TestClass = caffe::TanHLayerTest_TestGradientGPU_Test<float>]’
src/caffe/test/test_tanh_layer.cpp:109: instantiated from here
src/caffe/test/test_tanh_layer.cpp:27: error: no matching function for call to ‘caffe::Blob<float>::Blob(int, int, int, int)’
./include/caffe/blob.hpp:114: note: candidates are: caffe::Blob<Dtype>::Blob(const caffe::Blob<Dtype>&) [with Dtype = float]
./include/caffe/blob.hpp:18: note: caffe::Blob<Dtype>::Blob(int, int, int, int, int) [with Dtype = float]
./include/caffe/blob.hpp:15: note: caffe::Blob<Dtype>::Blob() [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp: In member function ‘void caffe::TanHLayerTest_TestForwardGPU_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = double]’:
src/caffe/test/test_tanh_layer.cpp:109: instantiated from here
src/caffe/test/test_tanh_layer.cpp:88: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:88: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:88: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:91: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:91: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:91: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp: In member function ‘void caffe::TanHLayerTest_TestForwardCPU_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = double]’:
src/caffe/test/test_tanh_layer.cpp:109: instantiated from here
src/caffe/test/test_tanh_layer.cpp:56: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:56: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:56: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:59: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:59: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp:59: error: no matching function for call to ‘caffe::Blob<double>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = double]
src/caffe/test/test_tanh_layer.cpp: In member function ‘void caffe::TanHLayerTest_TestForwardGPU_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = float]’:
src/caffe/test/test_tanh_layer.cpp:109: instantiated from here
src/caffe/test/test_tanh_layer.cpp:88: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:88: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:88: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:91: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:91: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:91: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp: In member function ‘void caffe::TanHLayerTest_TestForwardCPU_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = float]’:
src/caffe/test/test_tanh_layer.cpp:109: instantiated from here
src/caffe/test/test_tanh_layer.cpp:56: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:56: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:56: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:59: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:59: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
src/caffe/test/test_tanh_layer.cpp:59: error: no matching function for call to ‘caffe::Blob<float>::data_at(int&, int&, int&, int&)’
./include/caffe/blob.hpp:61: note: candidates are: Dtype caffe::Blob<Dtype>::data_at(int, int, int, int, int) const [with Dtype = float]
make: *** [build/src/caffe/test/test_tanh_layer.o] Error 1
Thank you very much
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.