├── cnnnet └── readme.txt ├── images └── MCFTS_framework.jpg ├── matconvnet1.08 └── matlab │ ├── mex │ ├── .build │ │ ├── im2col.o │ │ ├── im2col.obj │ │ ├── im2col_gpu.o │ │ ├── im2col_gpu.obj │ │ ├── normalize.o │ │ ├── normalize.obj │ │ ├── normalize_gpu.o │ │ ├── normalize_gpu.obj │ │ ├── pooling.o │ │ ├── pooling.obj │ │ ├── pooling_gpu.o │ │ ├── pooling_gpu.obj │ │ ├── subsample.o │ │ ├── subsample.obj │ │ ├── subsample_gpu.o │ │ ├── subsample_gpu.obj │ │ ├── vl_nnconv.o │ │ ├── vl_nnconv.obj │ │ ├── vl_nnnormalize.o │ │ ├── vl_nnnormalize.obj │ │ ├── vl_nnpool.o │ │ └── vl_nnpool.obj │ ├── preCompiled │ │ ├── vl_nnconv.mexa64 │ │ ├── vl_nnconv.mexw64 │ │ ├── vl_nnnormalize.mexa64 │ │ ├── vl_nnnormalize.mexw64 │ │ ├── vl_nnpool.mexa64 │ │ └── vl_nnpool.mexw64 │ ├── vl_nnconv.mexa64 │ ├── vl_nnconv.mexw64 │ ├── vl_nnnormalize.mexa64 │ ├── vl_nnnormalize.mexw64 │ ├── vl_nnpool.mexa64 │ └── vl_nnpool.mexw64 │ ├── simplenn │ ├── vl_simplenn.m │ ├── vl_simplenn_diagnose.m │ ├── vl_simplenn_display.m │ └── vl_simplenn_move.m │ ├── src │ ├── bits │ │ ├── gpu.hpp │ │ ├── im2col.cpp │ │ ├── im2col.hpp │ │ ├── im2col_gpu.cu │ │ ├── mexutils.h │ │ ├── nnhelper.h │ │ ├── normalize.cpp │ │ ├── normalize.hpp │ │ ├── normalize_gpu.cu │ │ ├── pooling.cpp │ │ ├── pooling.hpp │ │ ├── pooling_gpu.cu │ │ ├── subsample.cpp │ │ ├── subsample.hpp │ │ └── subsample_gpu.cu │ ├── config │ │ ├── mex_CUDA_glnxa64.sh │ │ ├── mex_CUDA_glnxa64.xml │ │ ├── mex_CUDA_maci64.sh │ │ └── mex_CUDA_maci64.xml │ ├── vl_imreadjpeg.c │ ├── vl_nnconv.cpp │ ├── vl_nnconv.cu │ ├── vl_nnnormalize.cpp │ ├── vl_nnnormalize.cu │ ├── vl_nnpool.cpp │ └── vl_nnpool.cu │ ├── vl_argparse.m │ ├── vl_compilenn.m │ ├── vl_imreadjpeg.m │ ├── vl_nnconv.m │ ├── vl_nndropout.m │ ├── vl_nnloss.m │ ├── vl_nnnoffset.m │ ├── vl_nnnormalize.m │ ├── vl_nnpool.m │ ├── vl_nnrelu.m │ ├── vl_nnsoftmax.m │ ├── vl_nnsoftmaxloss.m │ ├── vl_rootnn.m │ ├── vl_setupnn.m │ └── xtest │ ├── vl_test_nnlayers.m │ ├── vl_testder.m │ └── vl_testsim.m ├── readme.md ├── runAll_vottir.m ├── run_MCFTS.m ├── run_tracker.m ├── sequences ├── birds │ ├── 00000001.png │ ├── 00000002.png │ ├── 00000003.png │ ├── 00000004.png │ ├── 00000005.png │ ├── 00000006.png │ ├── 00000007.png │ ├── 00000008.png │ ├── 00000009.png │ ├── 00000010.png │ ├── 00000011.png │ ├── 00000012.png │ ├── 00000013.png │ ├── 00000014.png │ ├── 00000015.png │ ├── 00000016.png │ ├── 00000017.png │ ├── 00000018.png │ ├── 00000019.png │ ├── 00000020.png │ ├── 00000021.png │ ├── 00000022.png │ ├── 00000023.png │ ├── 00000024.png │ ├── 00000025.png │ ├── 00000026.png │ ├── 00000027.png │ ├── 00000028.png │ ├── 00000029.png │ ├── 00000030.png │ ├── 00000031.png │ ├── 00000032.png │ ├── 00000033.png │ ├── 00000034.png │ ├── 00000035.png │ ├── 00000036.png │ ├── 00000037.png │ ├── 00000038.png │ ├── 00000039.png │ ├── 00000040.png │ ├── 00000041.png │ ├── 00000042.png │ ├── 00000043.png │ ├── 00000044.png │ ├── 00000045.png │ ├── 00000046.png │ ├── 00000047.png │ ├── 00000048.png │ ├── 00000049.png │ ├── 00000050.png │ ├── 00000051.png │ ├── 00000052.png │ ├── 00000053.png │ ├── 00000054.png │ ├── 00000055.png │ ├── 00000056.png │ ├── 00000057.png │ ├── 00000058.png │ ├── 00000059.png │ ├── 00000060.png │ ├── 00000061.png │ ├── 00000062.png │ ├── 00000063.png │ ├── 00000064.png │ ├── 00000065.png │ ├── 00000066.png │ ├── 00000067.png │ ├── 00000068.png │ ├── 00000069.png │ ├── 00000070.png │ ├── 00000071.png │ ├── 00000072.png │ ├── 00000073.png │ ├── 00000074.png │ ├── 00000075.png │ ├── 00000076.png │ ├── 00000077.png │ ├── 00000078.png │ ├── 00000079.png │ ├── 00000080.png │ ├── 00000081.png │ ├── 00000082.png │ ├── 00000083.png │ ├── 00000084.png │ ├── 00000085.png │ ├── 00000086.png │ ├── 00000087.png │ ├── 00000088.png │ ├── 00000089.png │ ├── 00000090.png │ ├── 00000091.png │ ├── 00000092.png │ ├── 00000093.png │ ├── 00000094.png │ ├── 00000095.png │ ├── 00000096.png │ ├── 00000097.png │ ├── 00000098.png │ ├── 00000099.png │ ├── 00000100.png │ ├── 00000101.png │ ├── 00000102.png │ ├── 00000103.png │ ├── 00000104.png │ ├── 00000105.png │ ├── 00000106.png │ ├── 00000107.png │ ├── 00000108.png │ ├── 00000109.png │ ├── 00000110.png │ ├── 00000111.png │ ├── 00000112.png │ ├── 00000113.png │ ├── 00000114.png │ ├── 00000115.png │ ├── 00000116.png │ ├── 00000117.png │ ├── 00000118.png │ ├── 00000119.png │ ├── 00000120.png │ ├── 00000121.png │ ├── 00000122.png │ ├── 00000123.png │ ├── 00000124.png │ ├── 00000125.png │ ├── 00000126.png │ ├── 00000127.png │ ├── 00000128.png │ ├── 00000129.png │ ├── 00000130.png │ ├── 00000131.png │ ├── 00000132.png │ ├── 00000133.png │ ├── 00000134.png │ ├── 00000135.png │ ├── 00000136.png │ ├── 00000137.png │ ├── 00000138.png │ ├── 00000139.png │ ├── 00000140.png │ ├── 00000141.png │ ├── 00000142.png │ ├── 00000143.png │ ├── 00000144.png │ ├── 00000145.png │ ├── 00000146.png │ ├── 00000147.png │ ├── 00000148.png │ ├── 00000149.png │ ├── 00000150.png │ ├── 00000151.png │ ├── 00000152.png │ ├── 00000153.png │ ├── 00000154.png │ ├── 00000155.png │ ├── 00000156.png │ ├── 00000157.png │ ├── 00000158.png │ ├── 00000159.png │ ├── 00000160.png │ ├── 00000161.png │ ├── 00000162.png │ ├── 00000163.png │ ├── 00000164.png │ ├── 00000165.png │ ├── 00000166.png │ ├── 00000167.png │ ├── 00000168.png │ ├── 00000169.png │ ├── 00000170.png │ ├── 00000171.png │ ├── 00000172.png │ ├── 00000173.png │ ├── 00000174.png │ ├── 00000175.png │ ├── 00000176.png │ ├── 00000177.png │ ├── 00000178.png │ ├── 00000179.png │ ├── 00000180.png │ ├── 00000181.png │ ├── 00000182.png │ ├── 00000183.png │ ├── 00000184.png │ ├── 00000185.png │ ├── 00000186.png │ ├── 00000187.png │ ├── 00000188.png │ ├── 00000189.png │ ├── 00000190.png │ ├── 00000191.png │ ├── 00000192.png │ ├── 00000193.png │ ├── 00000194.png │ ├── 00000195.png │ ├── 00000196.png │ ├── 00000197.png │ ├── 00000198.png │ ├── 00000199.png │ ├── 00000200.png │ ├── 00000201.png │ ├── 00000202.png │ ├── 00000203.png │ ├── 00000204.png │ ├── 00000205.png │ ├── 00000206.png │ ├── 00000207.png │ ├── 00000208.png │ ├── 00000209.png │ ├── 00000210.png │ ├── 00000211.png │ ├── 00000212.png │ ├── 00000213.png │ ├── 00000214.png │ ├── 00000215.png │ ├── 00000216.png │ ├── 00000217.png │ ├── 00000218.png │ ├── 00000219.png │ ├── 00000220.png │ ├── 00000221.png │ ├── 00000222.png │ ├── 00000223.png │ ├── 00000224.png │ ├── 00000225.png │ ├── 00000226.png │ ├── 00000227.png │ ├── 00000228.png │ ├── 00000229.png │ ├── 00000230.png │ ├── 00000231.png │ ├── 00000232.png │ ├── 00000233.png │ ├── 00000234.png │ ├── 00000235.png │ ├── 00000236.png │ ├── 00000237.png │ ├── 00000238.png │ ├── 00000239.png │ ├── 00000240.png │ ├── 00000241.png │ ├── 00000242.png │ ├── 00000243.png │ ├── 00000244.png │ ├── 00000245.png │ ├── 00000246.png │ ├── 00000247.png │ ├── 00000248.png │ ├── 00000249.png │ ├── 00000250.png │ ├── 00000251.png │ ├── 00000252.png │ ├── 00000253.png │ ├── 00000254.png │ ├── 00000255.png │ ├── 00000256.png │ ├── 00000257.png │ ├── 00000258.png │ ├── 00000259.png │ ├── 00000260.png │ ├── 00000261.png │ ├── 00000262.png │ ├── 00000263.png │ ├── 00000264.png │ ├── 00000265.png │ ├── 00000266.png │ ├── 00000267.png │ ├── 00000268.png │ ├── 00000269.png │ ├── 00000270.png │ ├── Thumbs.db │ ├── camera_motion.label │ ├── dynamics_change.label │ ├── groundtruth.txt │ ├── motion_change.label │ ├── occlusion.label │ └── size_change.label └── list.txt ├── tracker_ensemble.m └── util ├── Cal_scale.m ├── avgnh.m ├── cal_window.m ├── find_nh_scale.m ├── gaussian_shaped_labels.m ├── get_axis_aligned_BB.m ├── get_features.m ├── get_features_gray.m ├── get_search_window.m ├── get_subwindow.m ├── imResample.m ├── imResampleMex.mexa64 ├── imResampleMex.mexw64 ├── initial_net.m ├── initialize_region.m ├── load_video_info.m ├── show_video.m └── videofig.m /cnnnet/readme.txt: -------------------------------------------------------------------------------- 1 | Download the VGG-Net-19 using the link https://uofi.box.com/shared/static/kxzjhbagd6ih1rf7mjyoxn2hy70hltpl.mat 2 | 3 | If you are in China, please use this link: http://pan.baidu.com/s/1kU1Me5T 4 | -------------------------------------------------------------------------------- /images/MCFTS_framework.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/images/MCFTS_framework.jpg -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/im2col.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/im2col.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/im2col.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/im2col.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/im2col_gpu.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/im2col_gpu.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/im2col_gpu.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/im2col_gpu.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/normalize.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/normalize.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/normalize.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/normalize.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/normalize_gpu.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/normalize_gpu.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/normalize_gpu.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/normalize_gpu.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/pooling.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/pooling.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/pooling.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/pooling.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/pooling_gpu.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/pooling_gpu.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/pooling_gpu.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/pooling_gpu.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/subsample.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/subsample.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/subsample.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/subsample.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/subsample_gpu.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/subsample_gpu.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/subsample_gpu.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/subsample_gpu.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/vl_nnconv.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/vl_nnconv.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/vl_nnconv.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/vl_nnconv.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/vl_nnnormalize.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/vl_nnnormalize.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/vl_nnnormalize.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/vl_nnnormalize.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/vl_nnpool.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/vl_nnpool.o -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/.build/vl_nnpool.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/.build/vl_nnpool.obj -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/preCompiled/vl_nnconv.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/preCompiled/vl_nnconv.mexa64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/preCompiled/vl_nnconv.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/preCompiled/vl_nnconv.mexw64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/preCompiled/vl_nnnormalize.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/preCompiled/vl_nnnormalize.mexa64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/preCompiled/vl_nnnormalize.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/preCompiled/vl_nnnormalize.mexw64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/preCompiled/vl_nnpool.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/preCompiled/vl_nnpool.mexa64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/preCompiled/vl_nnpool.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/preCompiled/vl_nnpool.mexw64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/vl_nnconv.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/vl_nnconv.mexa64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/vl_nnconv.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/vl_nnconv.mexw64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/vl_nnnormalize.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/vl_nnnormalize.mexa64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/vl_nnnormalize.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/vl_nnnormalize.mexw64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/vl_nnpool.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/vl_nnpool.mexa64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/mex/vl_nnpool.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/matconvnet1.08/matlab/mex/vl_nnpool.mexw64 -------------------------------------------------------------------------------- /matconvnet1.08/matlab/simplenn/vl_simplenn_diagnose.m: -------------------------------------------------------------------------------- 1 | function vl_simplenn_diagnose(net, res) 2 | % VL_SIMPLENN_DIAGNOSE Plot diagnostic information 3 | % VL_SIMPLENN_DIAGNOSE(NET, RES) plots in the current window 4 | % the average, maximum, and miminum element for all the filters 5 | % and biases in the network NET. If RES is also provided, it will 6 | % plot the average, minimum, and maximum element for all the 7 | % intermediate responses and deriviatives stored in RES as well. 8 | % 9 | % This function can be used to rapidly glance at the evolution 10 | % of the paramters during training. 11 | 12 | n = numel(net.layers) ; 13 | fmu = NaN + zeros(1, n) ; 14 | fmi = fmu ; 15 | fmx = fmu ; 16 | bmu = fmu ; 17 | bmi = fmu ; 18 | bmx = fmu ; 19 | xmu = fmu ; 20 | xmi = fmi ; 21 | xmx = fmx ; 22 | dxmu = fmu ; 23 | dxmi = fmi ; 24 | dxmx = fmx ; 25 | dfmu = fmu ; 26 | dfmi = fmu ; 27 | dfmx = fmu ; 28 | dbmu = fmu ; 29 | dbmi = fmu ; 30 | dbmx = fmu ; 31 | 32 | for i=1:numel(net.layers) 33 | ly = net.layers{i} ; 34 | if strcmp(ly.type, 'conv') && numel(ly.filters) > 0 35 | x = gather(ly.filters) ; 36 | fmu(i) = mean(x(:)) ; 37 | fmi(i) = min(x(:)) ; 38 | fmx(i) = max(x(:)) ; 39 | end 40 | if strcmp(ly.type, 'conv') && numel(ly.biases) > 0 41 | x = gather(ly.biases) ; 42 | bmu(i) = mean(x(:)) ; 43 | bmi(i) = min(x(:)) ; 44 | bmx(i) = max(x(:)) ; 45 | end 46 | if nargin > 1 47 | if numel(res(i).x) > 1 48 | x = gather(res(i).x) ; 49 | xmu(i) = mean(x(:)) ; 50 | xmi(i) = min(x(:)) ; 51 | xmx(i) = max(x(:)) ; 52 | end 53 | if numel(res(i).dzdx) > 1 54 | x = gather(res(i).dzdx); 55 | dxmu(i) = mean(x(:)) ; 56 | dxmi(i) = min(x(:)) ; 57 | dxmx(i) = max(x(:)) ; 58 | end 59 | if strcmp(ly.type, 'conv') && numel(res(i).dzdw{1}) > 0 60 | x = gather(res(i).dzdw{1}) ; 61 | dfmu(i) = mean(x(:)) ; 62 | dfmi(i) = min(x(:)) ; 63 | dfmx(i) = max(x(:)) ; 64 | end 65 | if strcmp(ly.type, 'conv') && numel(res(i).dzdw{2}) > 0 66 | x = gather(res(i).dzdw{2}) ; 67 | dbmu(i) = mean(x(:)) ; 68 | dbmi(i) = min(x(:)) ; 69 | dbmx(i) = max(x(:)) ; 70 | end 71 | end 72 | end 73 | 74 | if nargin > 1 75 | np = 6 ; 76 | else 77 | np = 2 ; 78 | end 79 | 80 | clf ; subplot(np,1,1) ; 81 | errorbar(1:n, fmu, fmi, fmx, 'bo') ; 82 | grid on ; 83 | xlabel('layer') ; 84 | ylabel('filters') ; 85 | title('coefficient ranges') ; 86 | 87 | subplot(np,1,2) ; 88 | errorbar(1:n, bmu, bmi, bmx, 'bo') ; 89 | grid on ; 90 | xlabel('layer') ; 91 | ylabel('biases') ; 92 | 93 | if nargin > 1 94 | subplot(np,1,3) ; 95 | errorbar(1:n, xmu, xmi, xmx, 'bo') ; 96 | grid on ; 97 | xlabel('layer') ; 98 | ylabel('x') ; 99 | 100 | subplot(np,1,4) ; 101 | errorbar(1:n, dxmu, dxmi, dxmx, 'bo') ; 102 | grid on ; 103 | xlabel('layer') ; 104 | ylabel('dzdx') ; 105 | 106 | subplot(np,1,5) ; 107 | errorbar(1:n, dfmu, dfmi, dfmx, 'bo') ; 108 | grid on ; 109 | xlabel('layer') ; 110 | ylabel('dfilters') ; 111 | 112 | subplot(np,1,6) ; 113 | errorbar(1:n, dbmu, dbmi, dbmx, 'bo') ; 114 | grid on ; 115 | xlabel('layer') ; 116 | ylabel('dbiases') ; 117 | end 118 | 119 | 120 | drawnow ; 121 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/simplenn/vl_simplenn_display.m: -------------------------------------------------------------------------------- 1 | function info = vl_simplenn_display(net, res) 2 | % VL_SIMPLENN_DISPLAY Simple CNN statistics 3 | % VL_SIMPLENN_DISPLAY(NET) prints statistics about the network NET. 4 | 5 | % Copyright (C) 2014 Andrea Vedaldi. 6 | % All rights reserved. 7 | % 8 | % This file is part of the VLFeat library and is made available under 9 | % the terms of the BSD license (see the COPYING file). 10 | 11 | fields={'layer', 'type', 'support', 'stride', 'pad', 'dim', 'fdim', 'field', 'mem'}; 12 | if nargin > 1 13 | fields = {fields{:}, 'xwhd', 'xmem', 'dxmem'} ; 14 | end 15 | 16 | do_print = (nargout == 0) ; 17 | 18 | for w=fields 19 | switch char(w) 20 | case 'type', s = 'type' ; 21 | case 'stride', s = 'stride' ; 22 | case 'padding', s = 'pad' ; 23 | case 'field', s = 'rec. field' ; 24 | case 'dim', s = 'out dim' ; 25 | case 'fdim', s = 'filt dim' ; 26 | case 'mem', s = 'c/g net KB' ; 27 | case 'xwhd', s = 'x w/h/d' ; 28 | case 'xmem', s = 'c/g x MB' ; 29 | case 'dxmem', s = 'c/g dx MB' ; 30 | otherwise, s = char(w) ; 31 | end 32 | if do_print, fprintf('%10s',s) ; end 33 | for l=1:numel(net.layers) 34 | ly=net.layers{l} ; 35 | switch char(w) 36 | case 'layer', s=sprintf('%d', l) ; 37 | case 'type' 38 | switch ly.type 39 | case 'normalize', s='nrm'; 40 | case 'pool', if strcmpi(ly.method,'avg'), s='apool'; else s='mpool'; end 41 | case 'conv', s='cnv' ; 42 | case 'softmax', s='sftm' ; 43 | case 'loss', s='lloss' ; 44 | case 'softmaxloss', 'sftml' ; 45 | otherwise s=ly.type ; 46 | end 47 | case 'support' 48 | switch ly.type 49 | case 'conv', support(1:2,l) = max([size(ly.filters,1) ; size(ly.filters,2)],1) ; 50 | case 'pool', support(1:2,l) = ly.pool(:) ; 51 | otherwise, support(1:2,l) = [1;1] ; 52 | end 53 | s=sprintf('%dx%d', support(1,l), support(2,l)) ; 54 | case 'fdim' 55 | switch ly.type 56 | case 'conv' 57 | filterDimension(l) = size(ly.filters,3) ; 58 | s=sprintf('%d', filterDimension(l)) ; 59 | otherwise 60 | filterDimension(l) = 0 ; 61 | s='n/a' ; 62 | end 63 | case 'stride' 64 | switch ly.type 65 | case {'conv', 'pool'} 66 | if numel(ly.stride) == 1 67 | stride(1:2,l) = ly.stride ; 68 | else 69 | stride(1:2,l) = ly.stride(:) ; 70 | end 71 | otherwise, stride(1:2,l)=1 ; 72 | end 73 | if all(stride(:,l)==stride(1,l)) 74 | s=sprintf('%d', stride(1,l)) ; 75 | else 76 | s=sprintf('%dx%d', stride(1,l), stride(2,l)) ; 77 | end 78 | case 'pad' 79 | switch ly.type 80 | case {'conv', 'pool'} 81 | if numel(ly.pad) == 1 82 | pad(1:4,l) = ly.pad ; 83 | else 84 | pad(1:4,l) = ly.pad(:) ; 85 | end 86 | otherwise, pad(1:4,l)=0 ; 87 | end 88 | if all(pad(:,l)==pad(1,l)) 89 | s=sprintf('%d', pad(1,l)) ; 90 | else 91 | s=sprintf('%d,%dx%d,%d', pad(1,l), pad(2,l), pad(3,l), pad(4,l)) ; 92 | end 93 | case 'field' 94 | for i=1:2 95 | field(i,l) = sum(cumprod([1 stride(i,1:l-1)]).*(support(i,1:l)-1))+1 ; 96 | end 97 | if all(field(:,l)==field(1,l)) 98 | s=sprintf('%d', field(1,l)) ; 99 | else 100 | s=sprintf('%dx%d', field(1,l), field(2,l)) ; 101 | end 102 | case 'mem' 103 | [a,b] = xmem(ly) ; 104 | mem(1:2,l) = [a;b] ; 105 | s=sprintf('%.0f/%.0f', a/1024, b/1024) ; 106 | case 'dim' 107 | switch ly.type 108 | case 'conv', dimension(1,l) = size(ly.filters,4) ; 109 | otherwise 110 | if l > 1 111 | dimension(1,l) = dimension(1,l-1) ; 112 | end 113 | end 114 | s=sprintf('%d', dimension(1,l)) ; 115 | case 'xwhd' 116 | sz=size(res(l+1).x) ; 117 | s=sprintf('%dx%dx%d%d', sz(1), sz(2), sz(3), sz(4)') 118 | case 'xmem' 119 | [a,b]=xmem(res(l+1).x) ; 120 | rmem(1:2,l) = [a;b] ; 121 | s=sprintf('%.0f/%.0f', a/1024^2, b/1024^2) ; 122 | case 'dxmem' 123 | [a,b]=xmem(res(l+1).dzdx) ; 124 | rmem(1:2,l) = [a;b] ; 125 | s=sprintf('%.0f/%.0f', a/1024^2, b/1024^2) ; 126 | end 127 | if do_print, fprintf('|%7s', s) ; end 128 | end 129 | if do_print, fprintf('|\n') ; end 130 | end 131 | if do_print 132 | [a,b] = xmem(net) ; 133 | fprintf('total network CPU/GPU memory: %.1f/%1.f MB\n', a/1024^2, b/1024^2) ; 134 | if nargin > 1 135 | [a,b] = xmem(res) ; 136 | fprintf('total result CPU/GPU memory: %.1f/%1.f MB\n', a/1024^2, b/1024^2) ; 137 | end 138 | end 139 | 140 | if nargout > 0 141 | info.support = support ; 142 | info.receptiveField = field ; 143 | info.stride = stride ; 144 | info.pad = pad ; 145 | end 146 | 147 | % ------------------------------------------------------------------------- 148 | function [cpuMem,gpuMem] = xmem(s, cpuMem, gpuMem) 149 | % ------------------------------------------------------------------------- 150 | if nargin <= 1 151 | cpuMem = 0 ; 152 | gpuMem = 0 ; 153 | end 154 | if isstruct(s) 155 | for f=fieldnames(s)' 156 | f = char(f) ; 157 | for i=1:numel(s) 158 | [cpuMem,gpuMem] = xmem(s(i).(f), cpuMem, gpuMem) ; 159 | end 160 | end 161 | elseif iscell(s) 162 | for i=1:numel(s) 163 | [cpuMem,gpuMem] = xmem(s{i}, cpuMem, gpuMem) ; 164 | end 165 | elseif isnumeric(s) 166 | if isa(s, 'single') 167 | mult = 4 ; 168 | else 169 | mult = 8 ; 170 | end 171 | if isa(s,'gpuArray') 172 | gpuMem = gpuMem + mult * numel(s) ; 173 | else 174 | cpuMem = cpuMem + mult * numel(s) ; 175 | end 176 | end 177 | 178 | 179 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/simplenn/vl_simplenn_move.m: -------------------------------------------------------------------------------- 1 | function net = vl_simplenn_move(net, destination) 2 | % VL_SIMPLENN_MOVE Move a simple CNN between CPU and GPU 3 | % NET = VL_SIMPLENN_MOVE(NET, 'gpu') moves the network 4 | % on the current GPU device. 5 | % 6 | % NET = VL_SIMPLENN_MOVE(NET, 'cpu') moves the network 7 | % on the CPU. 8 | 9 | % Copyright (C) 2014 Andrea Vedaldi. 10 | % All rights reserved. 11 | % 12 | % This file is part of the VLFeat library and is made available under 13 | % the terms of the BSD license (see the COPYING file). 14 | 15 | switch destination 16 | case 'gpu', moveop = @(x) gpuArray(x) ; 17 | case 'cpu', moveop = @(x) gather(x) ; 18 | otherwise, error('Unknown desitation ''%s''.', destination) ; 19 | end 20 | for l=1:numel(net.layers) 21 | switch net.layers{l}.type 22 | case 'conv' 23 | for f = {'filters', 'biases', 'filtersMomentum', 'biasesMomentum'} 24 | f = char(f) ; 25 | if isfield(net.layers{l}, f) 26 | net.layers{l}.(f) = moveop(net.layers{l}.(f)) ; 27 | end 28 | end 29 | otherwise 30 | % nothing to do ? 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/gpu.hpp: -------------------------------------------------------------------------------- 1 | /** @file gpu.h 2 | ** @brief GPU helper functions. 3 | ** @author Andrea Vedaldi 4 | **/ 5 | 6 | /* 7 | Copyright (C) 2014 Andrea Vedaldi. 8 | All rights reserved. 9 | 10 | This file is part of the VLFeat library and is made available under 11 | the terms of the BSD license (see the COPYING file). 12 | */ 13 | 14 | #ifndef VL_GPU_H 15 | #define VL_GPU_H 16 | 17 | #include 18 | 19 | #if __CUDA_ARCH__ >= 200 20 | #define VL_CUDA_NUM_THREADS 1024 21 | #else 22 | #define VL_CUDA_NUM_THREADS 512 23 | #endif 24 | 25 | inline int divideUpwards(int a, int b) 26 | { 27 | return (a + b - 1) / b ; 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/im2col.hpp: -------------------------------------------------------------------------------- 1 | /** @file im2col.hpp 2 | ** @brief Image to columns and back 3 | ** @author Andrea Vedaldi 4 | **/ 5 | 6 | /* 7 | Copyright (C) 2014 Andrea Vedaldi. 8 | All rights reserved. 9 | 10 | This file is part of the VLFeat library and is made available under 11 | the terms of the BSD license (see the COPYING file). 12 | */ 13 | 14 | #ifndef __matconv__im2col__ 15 | #define __matconv__im2col__ 16 | 17 | #include 18 | 19 | template 20 | void im2col_cpu(T* stacked, 21 | T const* data, 22 | size_t width, 23 | size_t height, 24 | size_t depth, 25 | size_t windowWidth, 26 | size_t windowHeight, 27 | size_t strideX, 28 | size_t strideY, 29 | size_t padLeft, 30 | size_t padRight, 31 | size_t padTop, 32 | size_t padBottom) ; 33 | 34 | template 35 | void col2im_cpu(T* data, 36 | T const* stacked, 37 | size_t width, 38 | size_t height, 39 | size_t depth, 40 | size_t windowWidth, 41 | size_t windowHeight, 42 | size_t strideX, 43 | size_t strideY, 44 | size_t padLeft, 45 | size_t padRight, 46 | size_t padTop, 47 | size_t padBottom) ; 48 | 49 | 50 | #ifdef ENABLE_GPU 51 | template 52 | void im2col_gpu(T* stacked, 53 | T const* data, 54 | size_t width, 55 | size_t height, 56 | size_t depth, 57 | size_t windowWidth, 58 | size_t windowHeight, 59 | size_t strideX, 60 | size_t strideY, 61 | size_t padLeft, 62 | size_t padRight, 63 | size_t padTop, 64 | size_t padBottom) ; 65 | 66 | template 67 | void col2im_gpu(T* data, 68 | T const* stacked, 69 | size_t width, 70 | size_t height, 71 | size_t depth, 72 | size_t windowWidth, 73 | size_t windowHeight, 74 | size_t strideX, 75 | size_t strideY, 76 | size_t padLeft, 77 | size_t padRight, 78 | size_t padTop, 79 | size_t padBottom) ; 80 | #endif 81 | 82 | #endif /* defined(__matconv__im2col__) */ 83 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/normalize.hpp: -------------------------------------------------------------------------------- 1 | /** @file normalize.hpp 2 | ** @brief Normalization 3 | ** @author Andrea Vedaldi 4 | **/ 5 | 6 | /* 7 | Copyright (C) 2014 Andrea Vedaldi. 8 | All rights reserved. 9 | 10 | This file is part of the VLFeat library and is made available under 11 | the terms of the BSD license (see the COPYING file). 12 | */ 13 | 14 | #ifndef __matconv__normalize__ 15 | #define __matconv__normalize__ 16 | 17 | #include 18 | 19 | template 20 | void normalize_cpu(T* pooled, 21 | T const* data, 22 | size_t width, 23 | size_t height, 24 | size_t depth, 25 | size_t num, 26 | size_t normDetph, 27 | T kappa, T alpha, T beta) ; 28 | 29 | template 30 | void normalizeBackward_cpu(T* dzdx, 31 | T const* data, 32 | T const* dzdy, 33 | size_t width, 34 | size_t height, 35 | size_t depth, 36 | size_t num, 37 | size_t normDetph, 38 | T kappa, T alpha, T beta) ; 39 | 40 | #ifdef ENABLE_GPU 41 | template 42 | void normalize_gpu(T* pooled, 43 | T const* data, 44 | size_t width, 45 | size_t height, 46 | size_t depth, 47 | size_t num, 48 | size_t normDetph, 49 | T kappa, T alpha, T beta) ; 50 | 51 | template 52 | void normalizeBackward_gpu(T* dzdx, 53 | T const* data, 54 | T const* dzdy, 55 | size_t width, 56 | size_t height, 57 | size_t depth, 58 | size_t num, 59 | size_t normDetph, 60 | T kappa, T alpha, T beta) ; 61 | #endif 62 | 63 | #endif /* defined(__matconv__normalize__) */ 64 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/normalize_gpu.cu: -------------------------------------------------------------------------------- 1 | /** @file normalize.cpp 2 | ** @brief Normalization block 3 | ** @author Andrea Vedaldi 4 | **/ 5 | /* 6 | Copyright (C) 2014 Andrea Vedaldi. 7 | All rights reserved. 8 | 9 | This file is part of the VLFeat library and is made available under 10 | the terms of the BSD license (see the COPYING file). 11 | */ 12 | 13 | #include "normalize.hpp" 14 | #include "gpu.hpp" 15 | #include 16 | 17 | /* ---------------------------------------------------------------- */ 18 | /* normalize (GPU) */ 19 | /* ---------------------------------------------------------------- */ 20 | 21 | #undef xat 22 | #undef yat 23 | #undef zat 24 | #define xat(t) x[(t) * offset] 25 | #define yat(t) y[(t) * offset] 26 | #define zat(t) z[(t) * offset] 27 | 28 | #define __powf powf 29 | 30 | template __global__ 31 | void normalize_gpu_kernel (T* normalized, 32 | T const* data, 33 | int width, 34 | int height, 35 | int depth, 36 | int num, 37 | int normDepth, 38 | T kappa, T alpha, T beta) 39 | { 40 | int index = threadIdx.x + blockIdx.x * blockDim.x ; 41 | if (index < width*height*num) { 42 | int u0 = index ; 43 | int v0 = u0 / width ; 44 | int k0 = v0 / height ; 45 | u0 %= width ; 46 | v0 %= height ; 47 | 48 | int m1 = ((signed)normDepth-1)/2 ; 49 | int m2 = normDepth - m1 - 1 ; 50 | int offset = width*height ; 51 | int t ; 52 | T const* x = data + u0 + (v0 + k0 * (depth*height)) * width ; 53 | T* y = normalized + u0 + (v0 + k0 * (depth*height)) * width ; 54 | T acc = 0 ; 55 | for (t = -m2 ; t < (signed)depth ; ++t) { 56 | T ap = 0 ; 57 | T am = 0 ; 58 | if (t-m1-1 >= 0) { am = xat(t-m1-1) ; } 59 | if (t+m2 < depth) { ap = xat(t+m2) ; } 60 | acc += ap*ap - am*am ; 61 | if (0 <= t && t < depth) { 62 | yat(t) = xat(t) * __powf(kappa + alpha * acc, -beta) ; 63 | } 64 | } 65 | } 66 | } 67 | 68 | template 69 | void normalize_gpu(T* normalized, 70 | T const* data, 71 | size_t width, 72 | size_t height, 73 | size_t depth, 74 | size_t num, 75 | size_t normDepth, 76 | T kappa, T alpha, T beta) 77 | { 78 | normalize_gpu_kernel 79 | <<< divideUpwards(width*height*num, VL_CUDA_NUM_THREADS), VL_CUDA_NUM_THREADS >>> 80 | (normalized, data, width, height, depth, num, normDepth, kappa, alpha, beta) ; 81 | } 82 | 83 | template 84 | void normalize_gpu(float* normalized, 85 | float const* data, 86 | size_t width, 87 | size_t height, 88 | size_t depth, 89 | size_t num, 90 | size_t normDetph, 91 | float kappa, float alpha, float beta) ; 92 | 93 | template 94 | void normalize_gpu(double* normalized, 95 | double const* data, 96 | size_t width, 97 | size_t height, 98 | size_t depth, 99 | size_t num, 100 | size_t normDetph, 101 | double kappa, double alpha, double beta) ; 102 | 103 | 104 | /* ---------------------------------------------------------------- */ 105 | /* normalizeBackward (gpu) */ 106 | /* ---------------------------------------------------------------- */ 107 | 108 | template __global__ 109 | void normalizeBackward_gpu_kernel(T* normalized, 110 | T const* data, 111 | T const* dzdy, 112 | int width, 113 | int height, 114 | int depth, 115 | int num, 116 | int normDepth, 117 | T kappa, T alpha, T beta) 118 | { 119 | int index = threadIdx.x + blockIdx.x * blockDim.x ; 120 | if (index < width*height*num) { 121 | int u0 = index ; 122 | int v0 = u0 / width ; 123 | int k0 = v0 / height ; 124 | u0 %= width ; 125 | v0 %= height ; 126 | 127 | int m1 = ((signed)normDepth-1)/2 ; 128 | int m2 = normDepth - m1 - 1 ; 129 | int offset = width*height ; 130 | T ab2 = 2*alpha*beta ; 131 | int t, q ; 132 | T const* x = data + u0 + (v0 + k0 * (depth*height)) * width ; 133 | T* y = normalized + u0 + (v0 + k0 * (depth*height)) * width ; 134 | T const* z = dzdy + u0 + (v0 + k0 * (depth*height)) * width ; 135 | T acc = 0 ; 136 | for (t = 0 ; t < (signed)depth ; ++t) { 137 | yat(t) = 0 ; 138 | } 139 | for (t = -m2 ; t < (signed)depth ; ++t) { 140 | int q1 = t-m1 ; 141 | int q2 = t+m2 ; 142 | T ap = 0 ; 143 | T am = 0 ; 144 | if (t-m1-1 >= 0) { am = xat(t-m1-1) ; } else { q1 = 0 ; } 145 | if (t+m2 < depth) { ap = xat(t+m2) ; } else { q2 = depth - 1 ; } 146 | acc += ap*ap - am*am ; 147 | T L = kappa + alpha * acc ; 148 | T Lbeta = __powf(L, -beta) ; 149 | T Lbeta1 = Lbeta / L ; 150 | 151 | if (0 <= t && t < depth) { 152 | yat(t) += zat(t) * Lbeta ; 153 | for (q = q1 ; q <= q2 ; ++ q) { 154 | yat(q) -= zat(t) * xat(t) * xat(q) * ab2 * Lbeta1 ; 155 | } 156 | } 157 | } 158 | } 159 | } 160 | 161 | template 162 | void normalizeBackward_gpu(T* normalized, 163 | T const* data, 164 | T const* dzdy, 165 | size_t width, 166 | size_t height, 167 | size_t depth, 168 | size_t num, 169 | size_t normDepth, 170 | T kappa, T alpha, T beta) 171 | { 172 | normalizeBackward_gpu_kernel 173 | <<< divideUpwards(width*height*num, VL_CUDA_NUM_THREADS), VL_CUDA_NUM_THREADS >>> 174 | (normalized, data, dzdy, width, height, depth, num, normDepth, kappa, alpha, beta) ; 175 | } 176 | 177 | template 178 | void normalizeBackward_gpu(float* normalized, 179 | float const* data, 180 | float const* dzdy, 181 | size_t width, 182 | size_t height, 183 | size_t depth, 184 | size_t num, 185 | size_t normDetph, 186 | float kappa, float alpha, float beta) ; 187 | 188 | template 189 | void normalizeBackward_gpu(double* normalized, 190 | double const* data, 191 | double const* dzdy, 192 | size_t width, 193 | size_t height, 194 | size_t depth, 195 | size_t num, 196 | size_t normDetph, 197 | double kappa, double alpha, double beta) ; 198 | 199 | 200 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/pooling.hpp: -------------------------------------------------------------------------------- 1 | /** @file pooling.hpp 2 | ** @brief Max pooling filters 3 | ** @author Andrea Vedaldi 4 | ** @author Karel Lenc 5 | **/ 6 | 7 | /* 8 | Copyright (C) 2014 Andrea Vedaldi and Karel Lenc. 9 | All rights reserved. 10 | 11 | This file is part of the VLFeat library and is made available under 12 | the terms of the BSD license (see the COPYING file). 13 | */ 14 | 15 | #ifndef VL_NNPOOLING_H 16 | #define VL_NNPOOLING_H 17 | 18 | #include 19 | 20 | enum PoolMethod { 21 | NN_POOL_MAX = 0, NN_POOL_AVG, NN_POOL_METHODS_NUM 22 | } ; 23 | 24 | template 25 | void pooling_cpu(T* pooled, 26 | T const* data, 27 | PoolMethod method, 28 | size_t width, 29 | size_t height, 30 | size_t depth, 31 | size_t windowWidth, 32 | size_t windowHeight, 33 | size_t strideX, 34 | size_t strideY, 35 | size_t padLeft, 36 | size_t padRight, 37 | size_t padTop, 38 | size_t padBottom) ; 39 | 40 | template 41 | void poolingBackward_cpu(T* dzdx, 42 | T const* data, 43 | T const* dzdy, 44 | PoolMethod method, 45 | size_t width, 46 | size_t height, 47 | size_t depth, 48 | size_t windowWidth, 49 | size_t windowHeight, 50 | size_t strideX, 51 | size_t strideY, 52 | size_t padLeft, 53 | size_t padRight, 54 | size_t padTop, 55 | size_t padBottom) ; 56 | 57 | #ifdef ENABLE_GPU 58 | template 59 | void pooling_gpu(T* pooled, 60 | T const* data, 61 | PoolMethod method, 62 | size_t width, 63 | size_t height, 64 | size_t depth, 65 | size_t windowWidth, 66 | size_t windowHeight, 67 | size_t strideX, 68 | size_t strideY, 69 | size_t padLeft, 70 | size_t padRight, 71 | size_t padTop, 72 | size_t padBottom) ; 73 | 74 | template 75 | void poolingBackward_gpu(T* dzdx, 76 | T const* data, 77 | T const* dzdy, 78 | PoolMethod method, 79 | size_t width, 80 | size_t height, 81 | size_t depth, 82 | size_t windowWidth, 83 | size_t windowHeight, 84 | size_t strideX, 85 | size_t strideY, 86 | size_t padLeft, 87 | size_t padRight, 88 | size_t padTop, 89 | size_t padBottom) ; 90 | #endif 91 | 92 | #endif /* defined(VL_NNPOOLING_H) */ 93 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/subsample.cpp: -------------------------------------------------------------------------------- 1 | /** @file subsample.cpp 2 | ** @file Subsample operator (CPU) 3 | ** @author Andrea Vedaldi 4 | ** @author Karel Lenc 5 | **/ 6 | 7 | /* 8 | Copyright (C) 2014 Andrea Vedaldi and Karel Lenc. 9 | All rights reserved. 10 | 11 | This file is part of the VLFeat library and is made available under 12 | the terms of the BSD license (see the COPYING file). 13 | */ 14 | 15 | #include "subsample.hpp" 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | #include 22 | 23 | 24 | /* ---------------------------------------------------------------- */ 25 | /* subsample (CPU) */ 26 | /* ---------------------------------------------------------------- */ 27 | 28 | template 29 | void subsample_cpu(T* subsampled, 30 | T const* data, 31 | size_t width, 32 | size_t height, 33 | size_t depth, 34 | size_t strideX, 35 | size_t strideY, 36 | size_t padLeft, 37 | size_t padRight, 38 | size_t padTop, 39 | size_t padBottom) 40 | { 41 | int subsampledWidth = (width + (padLeft + padRight) - 1)/strideX + 1 ; 42 | int subsampledHeight = (height + (padTop + padBottom) - 1)/strideY + 1 ; 43 | for (int z = 0; z < depth; ++z) { 44 | for (int y = 0; y < subsampledHeight; ++y) { 45 | for (int x = 0; x < subsampledWidth; ++x) { 46 | int x1 = x * (signed)strideX - (signed)padLeft ; 47 | int y1 = y * (signed)strideY - (signed)padTop ; 48 | T value = 0 ; 49 | if (x1 >= 0 && x1 < width && y1 >= 0 && y1 < height) { 50 | value = data[y1 * width + x1] ; 51 | } 52 | subsampled[y * subsampledWidth + x] = value ; 53 | } 54 | } 55 | data += width*height ; 56 | subsampled += subsampledWidth*subsampledHeight ; 57 | } 58 | } 59 | 60 | template 61 | void subsample_cpu(float* subsampled, 62 | float const* data, 63 | size_t width, 64 | size_t height, 65 | size_t depth, 66 | size_t strideX, 67 | size_t strideY, 68 | size_t padLeft, 69 | size_t padRight, 70 | size_t padTop, 71 | size_t padBottom) ; 72 | 73 | template 74 | void subsample_cpu(double* subsampled, 75 | double const* data, 76 | size_t width, 77 | size_t height, 78 | size_t depth, 79 | size_t strideX, 80 | size_t strideY, 81 | size_t padLeft, 82 | size_t padRight, 83 | size_t padTop, 84 | size_t padBottom) ; 85 | 86 | 87 | /* ---------------------------------------------------------------- */ 88 | /* subsampleBackward (CPU) */ 89 | /* ---------------------------------------------------------------- */ 90 | 91 | template 92 | void subsampleBackward_cpu(T* dzdx, 93 | T const* dzdy, 94 | size_t width, 95 | size_t height, 96 | size_t depth, 97 | size_t strideX, 98 | size_t strideY, 99 | size_t padLeft, 100 | size_t padRight, 101 | size_t padTop, 102 | size_t padBottom) 103 | { 104 | int subsampledWidth = (width + (padLeft + padRight) - 1)/strideX + 1 ; 105 | int subsampledHeight = (height + (padTop + padBottom) - 1)/strideY + 1 ; 106 | 107 | memset(dzdx, 0, sizeof(T) * width * height * depth) ; 108 | 109 | for (int z = 0; z < depth; ++z) { 110 | for (int py = 0; py < subsampledHeight; ++py) { 111 | for (int px = 0; px < subsampledWidth; ++px) { 112 | int x1 = px * (int)strideX - (int)padLeft ; 113 | int y1 = py * (int)strideY - (int)padTop ; 114 | if (x1 >= 0 && x1 < width && y1 >= 0 && y1 < height) { 115 | dzdx[y1 * width + x1] = dzdy[py * subsampledWidth + px] ; 116 | } 117 | } 118 | } 119 | dzdx += width*height ; 120 | dzdy += subsampledWidth*subsampledHeight ; 121 | } 122 | } 123 | 124 | template 125 | void subsampleBackward_cpu(float* dzdx, 126 | float const* dzdy, 127 | size_t width, 128 | size_t height, 129 | size_t depth, 130 | size_t strideX, 131 | size_t strideY, 132 | size_t padLeft, 133 | size_t padRight, 134 | size_t padTop, 135 | size_t padBottom) ; 136 | 137 | template 138 | void subsampleBackward_cpu(double* dzdx, 139 | double const* dzdy, 140 | size_t width, 141 | size_t height, 142 | size_t depth, 143 | size_t strideX, 144 | size_t strideY, 145 | size_t padLeft, 146 | size_t padRight, 147 | size_t padTop, 148 | size_t padBottom) ; 149 | 150 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/subsample.hpp: -------------------------------------------------------------------------------- 1 | /** @file subsample.hpp 2 | ** @brief Subsampling operator 3 | ** @author Andrea Vedaldi 4 | **/ 5 | 6 | /* 7 | Copyright (C) 2014 Andrea Vedaldi and Karel Lenc. 8 | All rights reserved. 9 | 10 | This file is part of the VLFeat library and is made available under 11 | the terms of the BSD license (see the COPYING file). 12 | */ 13 | 14 | #ifndef VL_NNSUBSAMPLE_H 15 | #define VL_NNSUBSAMPLE_H 16 | 17 | #include 18 | 19 | template 20 | void subsample_cpu(T* subsampled, 21 | T const* data, 22 | size_t width, 23 | size_t height, 24 | size_t depth, 25 | size_t strideX, 26 | size_t strideY, 27 | size_t padLeft, 28 | size_t padRight, 29 | size_t padTop, 30 | size_t padBottom) ; 31 | 32 | template 33 | void subsampleBackward_cpu(T* dzdx, 34 | T const* dzdy, 35 | size_t width, 36 | size_t height, 37 | size_t depth, 38 | size_t strideX, 39 | size_t strideY, 40 | size_t padLeft, 41 | size_t padRight, 42 | size_t padTop, 43 | size_t padBottom) ; 44 | 45 | #ifdef ENABLE_GPU 46 | template 47 | void subsample_gpu(T* subsampled, 48 | T const* data, 49 | size_t width, 50 | size_t height, 51 | size_t depth, 52 | size_t strideX, 53 | size_t strideY, 54 | size_t padLeft, 55 | size_t padRight, 56 | size_t padTop, 57 | size_t padBottom) ; 58 | 59 | template 60 | void subsampleBackward_gpu(T* dzdx, 61 | T const* dzdy, 62 | size_t width, 63 | size_t height, 64 | size_t depth, 65 | size_t strideX, 66 | size_t strideY, 67 | size_t padLeft, 68 | size_t padRight, 69 | size_t padTop, 70 | size_t padBottom) ; 71 | #endif 72 | 73 | #endif /* defined(VL_NNSUBSAMPLE_H) */ 74 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/bits/subsample_gpu.cu: -------------------------------------------------------------------------------- 1 | /** @file subsample_gpu.cu 2 | ** @brief Max subsample filters (GPU) 3 | ** @author Andrea Vedaldi 4 | ** @author Karel Lenc 5 | **/ 6 | 7 | /* 8 | Copyright (C) 2014 Andrea Vedaldi and Karel Lenc. 9 | All rights reserved. 10 | 11 | This file is part of the VLFeat library and is made available under 12 | the terms of the BSD license (see the COPYING file). 13 | */ 14 | 15 | #include "gpu.hpp" 16 | #include "subsample.hpp" 17 | 18 | #include 19 | #include 20 | 21 | /* ---------------------------------------------------------------- */ 22 | /* subsample (GPU) */ 23 | /* ---------------------------------------------------------------- */ 24 | 25 | template 26 | __global__ void subsample_gpu_kernel 27 | (T* subsampled, 28 | const T* data, 29 | const int subsampledWidth, 30 | const int subsampledHeight, 31 | const int subsampledVolume, 32 | const int width, 33 | const int height, 34 | const int strideX, 35 | const int strideY, 36 | const int padLeft, 37 | const int padTop) 38 | { 39 | int subsampledIndex = threadIdx.x + blockIdx.x * blockDim.x; 40 | if (subsampledIndex < subsampledVolume) { 41 | /* subsampledIndex = x 42 | + y * subsampledWidth 43 | + z * (subsampledWidth * subsampledHeight) ; 44 | */ 45 | int px = subsampledIndex ; 46 | int py = px / subsampledWidth ; 47 | int pz = py / subsampledHeight ; 48 | px %= subsampledWidth ; 49 | py %= subsampledHeight ; 50 | int x1 = px * strideX - padLeft ; 51 | int y1 = py * strideY - padTop ; 52 | data += pz * (width*height) ; 53 | T value = 0 ; 54 | if (x1 >= 0 && x1 < width && y1 >= 0 && y1 < height) { 55 | value = data[y1 * width + x1] ; 56 | } 57 | subsampled[subsampledIndex] = value ; 58 | } 59 | } 60 | 61 | 62 | template 63 | void subsample_gpu(T* subsampled, 64 | T const* data, 65 | size_t width, 66 | size_t height, 67 | size_t depth, 68 | size_t strideX, 69 | size_t strideY, 70 | size_t padLeft, 71 | size_t padRight, 72 | size_t padTop, 73 | size_t padBottom) 74 | { 75 | int subsampledWidth = (width + (padLeft+padRight) - 1)/strideX + 1 ; 76 | int subsampledHeight = (height + (padTop+padBottom) - 1)/strideY + 1 ; 77 | int subsampledVolume = subsampledWidth * subsampledHeight * depth ; 78 | subsample_gpu_kernel 79 | <<< divideUpwards(subsampledVolume, VL_CUDA_NUM_THREADS), VL_CUDA_NUM_THREADS >>> 80 | (subsampled, data, 81 | subsampledWidth, subsampledHeight, subsampledVolume, 82 | width, height, 83 | strideX, strideY, 84 | padLeft, padTop); 85 | if (cudaGetLastError() != cudaSuccess) { 86 | std::cout 87 | <<"subsample_gpu_kernel error (" 88 | <(float* subsampled, 95 | float const* data, 96 | size_t width, 97 | size_t height, 98 | size_t depth, 99 | size_t strideX, 100 | size_t strideY, 101 | size_t padLeft, 102 | size_t padRight, 103 | size_t padTop, 104 | size_t padBottom) ; 105 | 106 | template 107 | void subsample_gpu(double* subsampled, 108 | double const* data, 109 | size_t width, 110 | size_t height, 111 | size_t depth, 112 | size_t strideX, 113 | size_t strideY, 114 | size_t padLeft, 115 | size_t padRight, 116 | size_t padTop, 117 | size_t padBottom) ; 118 | 119 | /* ---------------------------------------------------------------- */ 120 | /* subsampleBackward (GPU) */ 121 | /* ---------------------------------------------------------------- */ 122 | 123 | template 124 | __global__ void subsampleBackward_gpu_kernel 125 | (T* dzdx, 126 | const T* dzdy, 127 | const int subsampledWidth, 128 | const int subsampledHeight, 129 | const int dataVolume, 130 | const int width, 131 | const int height, 132 | const int strideX, 133 | const int strideY, 134 | const int padLeft, 135 | const int padTop) 136 | { 137 | int index = threadIdx.x + blockIdx.x * blockDim.x; 138 | if (index < dataVolume) { 139 | int x = index ; 140 | int y = x / width ; 141 | int z = y / height ; 142 | x %= width ; 143 | y %= height ; 144 | dzdy += z * subsampledHeight * subsampledWidth ; 145 | int px = (x + padLeft) / strideX ; 146 | int py = (y + padTop) / strideY ; 147 | if (x == strideX * px - padLeft && 148 | y == strideY * py - padTop) { 149 | dzdx[index] = dzdy[py * subsampledWidth + px] ; 150 | } else { 151 | dzdx[index] = 0 ; 152 | } 153 | } 154 | } 155 | 156 | template 157 | void subsampleBackward_gpu(T* dzdx, 158 | T const* dzdy, 159 | size_t width, 160 | size_t height, 161 | size_t depth, 162 | size_t strideX, 163 | size_t strideY, 164 | size_t padLeft, 165 | size_t padRight, 166 | size_t padTop, 167 | size_t padBottom) 168 | { 169 | int subsampledWidth = (width + (padLeft+padRight) - 1)/strideX + 1 ; 170 | int subsampledHeight = (height + (padTop+padBottom) - 1)/strideY + 1 ; 171 | int nthreads = width * height * depth ; 172 | subsampleBackward_gpu_kernel 173 | <<< divideUpwards(nthreads, VL_CUDA_NUM_THREADS), VL_CUDA_NUM_THREADS >>> 174 | (dzdx, 175 | dzdy, 176 | subsampledWidth, subsampledHeight, nthreads, 177 | width, height, 178 | strideX, strideY, 179 | padLeft, padTop); 180 | if (cudaGetLastError() != cudaSuccess) { 181 | std::cout 182 | <<"subsampleBackward_gpu_kernel error (" 183 | <(float* dzdx, 190 | float const* dzdy, 191 | size_t width, 192 | size_t height, 193 | size_t depth, 194 | size_t strideX, 195 | size_t strideY, 196 | size_t padLeft, 197 | size_t padRight, 198 | size_t padTop, 199 | size_t padBottom) ; 200 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/config/mex_CUDA_glnxa64.sh: -------------------------------------------------------------------------------- 1 | # 2 | # mexopts.sh Shell script for configuring MEX-file creation script, 3 | # mex, to use NVCC for building GPU MEX files. 4 | # 5 | # usage: Do not call this file directly; it is sourced by the 6 | # mex shell script. Modify only if you don't like the 7 | # defaults after running mex. No spaces are allowed 8 | # around the '=' in the variable assignment. 9 | # 10 | # Note: For the version of system compiler supported with this release, 11 | # refer to the Supported and Compatible Compiler List at: 12 | # http://www.mathworks.com/support/compilers/current_release/ 13 | # 14 | # 15 | # SELECTION_TAGs occur in template option files and are used by MATLAB 16 | # tools, such as mex and mbuild, to determine the purpose of the contents 17 | # of an option file. These tags are only interpreted when preceded by '#' 18 | # and followed by ':'. 19 | # 20 | #SELECTION_TAG_MEX_OPT: Template Options file for building nvcc MEX-files 21 | # 22 | # Copyright 2012 The MathWorks, Inc. 23 | #---------------------------------------------------------------------------- 24 | # 25 | TMW_ROOT="$MATLAB" 26 | MFLAGS='' 27 | # Set the value of $NVCC. By default we assume that it's on your path. You 28 | # can explicitly provide the path in an environment variable if that's not 29 | # the case. 30 | if [ -n "$MW_NVCC_PATH" ]; then 31 | NVCC="$MW_NVCC_PATH" 32 | else 33 | NVCC="nvcc" 34 | fi 35 | if [ "$ENTRYPOINT" = "mexLibrary" ]; then 36 | MLIBS="-L$TMW_ROOT/bin/$Arch -lmx -lmex -lmat -lmwservices -lut" 37 | else 38 | MLIBS="-L$TMW_ROOT/bin/$Arch -lmx -lmex -lmat" 39 | fi 40 | case "$Arch" in 41 | Undetermined) 42 | #---------------------------------------------------------------------------- 43 | # Change this line if you need to specify the location of the MATLAB 44 | # root directory. The script needs to know where to find utility 45 | # routines so that it can determine the architecture; therefore, this 46 | # assignment needs to be done while the architecture is still 47 | # undetermined. 48 | #---------------------------------------------------------------------------- 49 | MATLAB="$MATLAB" 50 | ;; 51 | glnxa64) 52 | #---------------------------------------------------------------------------- 53 | RPATH="-Wl,-rpath-link,$TMW_ROOT/bin/$Arch" 54 | # StorageVersion: 1.0 55 | # CkeyName: nvcc 56 | # CkeyManufacturer: NVIDIA 57 | # CkeyLanguage: C CUDA 58 | # CkeyVersion: 59 | # CkeyLinkerName: GNU ld 60 | # CkeyLinkerVersion: 61 | # $NVCC was set above. 62 | CC='$NVCC' 63 | CFLAGS=" -ccbin=gcc-4.4 -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=\\\"sm_30,compute_30\\\" -I$TMW_ROOT/toolbox/distcomp/gpu/extern/include --compiler-options=-ansi,-D_GNU_SOURCE,-fexceptions,-fPIC,-fno-omit-frame-pointer,-pthread" 64 | CLIBS="$RPATH $MLIBS -lm -lmwgpu $TMW_ROOT/bin/$Arch/libcudart.so.5.0" 65 | COPTIMFLAGS='-O -DNDEBUG' 66 | CDEBUGFLAGS='-g' 67 | CLIBS="$CLIBS -lstdc++" 68 | # 69 | # C++keyName: nvcc 70 | # C++keyManufacturer: NVIDIA 71 | # C++keyLanguage: C++ CUDA 72 | # C++keyVersion: 73 | # C++keyLinkerName: GNU ld 74 | # C++keyLinkerVersion: 75 | # $NVCC was set above. 76 | CXX='$NVCC' 77 | CXXFLAGS=" -ccbin=gcc-4.4 -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=\\\"sm_30,compute_30\\\" -I$TMW_ROOT/toolbox/distcomp/gpu/extern/include --compiler-options=-ansi,-D_GNU_SOURCE,-fPIC,-fno-omit-frame-pointer,-pthread" 78 | CXXLIBS="$RPATH $MLIBS -lm -lmwgpu $TMW_ROOT/bin/$Arch/libcudart.so.5.0" 79 | CXXOPTIMFLAGS='-O -DNDEBUG' 80 | CXXDEBUGFLAGS='-g' 81 | # 82 | LD="g++" 83 | LDEXTENSION='.mexa64' 84 | LDFLAGS="-pthread -shared -Wl,--version-script,$TMW_ROOT/extern/lib/$Arch/$MAPFILE -Wl,--no-undefined" 85 | LDOPTIMFLAGS='-O' 86 | LDDEBUGFLAGS='-g' 87 | # 88 | POSTLINK_CMDS=':' 89 | esac 90 | ############################################################################# 91 | # 92 | # Architecture independent lines: 93 | # 94 | # Set and uncomment any lines which will apply to all architectures. 95 | # 96 | #---------------------------------------------------------------------------- 97 | # CC="$CC" 98 | # CFLAGS="$CFLAGS" 99 | # COPTIMFLAGS="$COPTIMFLAGS" 100 | # CDEBUGFLAGS="$CDEBUGFLAGS" 101 | # CLIBS="$CLIBS" 102 | # 103 | # FC="$FC" 104 | # FFLAGS="$FFLAGS" 105 | # FOPTIMFLAGS="$FOPTIMFLAGS" 106 | # FDEBUGFLAGS="$FDEBUGFLAGS" 107 | # FLIBS="$FLIBS" 108 | # 109 | # LD="$LD" 110 | # LDFLAGS="$LDFLAGS" 111 | # LDOPTIMFLAGS="$LDOPTIMFLAGS" 112 | # LDDEBUGFLAGS="$LDDEBUGFLAGS" 113 | #---------------------------------------------------------------------------- 114 | ############################################################################# 115 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/config/mex_CUDA_glnxa64.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 |
26 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/config/mex_CUDA_maci64.sh: -------------------------------------------------------------------------------- 1 | # 2 | # mexopts.sh Shell script for configuring MEX-file creation script, 3 | # mex, to use NVCC for building GPU MEX files. 4 | # 5 | # usage: Do not call this file directly; it is sourced by the 6 | # mex shell script. Modify only if you don't like the 7 | # defaults after running mex. No spaces are allowed 8 | # around the '=' in the variable assignment. 9 | # 10 | # Note: For the version of system compiler supported with this release, 11 | # refer to the Supported and Compatible Compiler List at: 12 | # http://www.mathworks.com/support/compilers/current_release/ 13 | # 14 | # 15 | # SELECTION_TAGs occur in template option files and are used by MATLAB 16 | # tools, such as mex and mbuild, to determine the purpose of the contents 17 | # of an option file. These tags are only interpreted when preceded by '#' 18 | # and followed by ':'. 19 | # 20 | #SELECTION_TAG_MEX_OPT: Template Options file for building nvcc MEX-files 21 | # 22 | # Copyright 2012 The MathWorks, Inc. 23 | #---------------------------------------------------------------------------- 24 | # 25 | TMW_ROOT="$MATLAB" 26 | MFLAGS='' 27 | # Set the value of $NVCC. By default we assume that it's on your path. You 28 | # can explicitly provide the path in an environment variable if that's not 29 | # the case. 30 | if [ -n "$MW_NVCC_PATH" ]; then 31 | NVCC="$MW_NVCC_PATH" 32 | else 33 | NVCC="nvcc" 34 | fi 35 | if [ "$ENTRYPOINT" = "mexLibrary" ]; then 36 | MLIBS="-L$TMW_ROOT/bin/$Arch -lmx -lmex -lmat -lmwservices -lut" 37 | else 38 | MLIBS="-L$TMW_ROOT/bin/$Arch -lmx -lmex -lmat" 39 | fi 40 | case "$Arch" in 41 | Undetermined) 42 | #---------------------------------------------------------------------------- 43 | # Change this line if you need to specify the location of the MATLAB 44 | # root directory. The script needs to know where to find utility 45 | # routines so that it can determine the architecture; therefore, this 46 | # assignment needs to be done while the architecture is still 47 | # undetermined. 48 | #---------------------------------------------------------------------------- 49 | MATLAB="$MATLAB" 50 | ;; 51 | maci64) 52 | #---------------------------------------------------------------------------- 53 | # StorageVersion: 1.0 54 | # CkeyName: nvcc 55 | # CkeyManufacturer: NVIDIA 56 | # CkeyLanguage: C 57 | # CkeyVersion: 58 | # CkeyLinkerName: 59 | # CkeyLinkerVersion: 60 | CC="$NVCC" 61 | MW_SDK_TEMP="find `xcode-select -print-path` -name MacOSX10.9.sdk" 62 | MW_SDKROOT=`$MW_SDK_TEMP` 63 | MACOSX_DEPLOYMENT_TARGET='10.8' 64 | ARCHS='x86_64' 65 | CFLAGS="-gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=\\\"sm_30,compute_30\\\" -m 64 -I$TMW_ROOT/toolbox/distcomp/gpu/extern/include --compiler-options -fno-common,-arch,$ARCHS,-isysroot.$MW_SDKROOT,-mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET,-fexceptions" 66 | CLIBS="$MLIBS -lmwgpu -lcudart" 67 | COPTIMFLAGS='-O2 -DNDEBUG' 68 | CDEBUGFLAGS='-g' 69 | # 70 | CLIBS="$CLIBS -lstdc++" 71 | # C++keyName: nvcc 72 | # C++keyManufacturer: NVIDIA 73 | # C++keyLanguage: C++ 74 | # C++keyVersion: 75 | # C++keyLinkerName: 76 | # C++keyLinkerVersion: 77 | CXX="$NVCC" 78 | CXXFLAGS="-gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=\\\"sm_30,compute_30\\\" -m 64 -I$TMW_ROOT/toolbox/distcomp/gpu/extern/include --compiler-options -fno-common,-fexceptions,-arch,$ARCHS,-isysroot,$MW_SDKROOT,-mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET" 79 | CXXLIBS="$MLIBS -lstdc++ -lmwgpu -lcudart" 80 | CXXOPTIMFLAGS='-O2 -DNDEBUG' 81 | CXXDEBUGFLAGS='-g' 82 | # 83 | LD="xcrun -sdk macosx10.9 clang++" 84 | LDEXTENSION='.mexmaci64' 85 | LDFLAGS="-arch $ARCHS -Wl,-syslibroot,$MW_SDKROOT -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET" 86 | LDFLAGS="$LDFLAGS -bundle -Wl,-exported_symbols_list,$TMW_ROOT/extern/lib/$Arch/$MAPFILE" 87 | LDOPTIMFLAGS='-O' 88 | LDDEBUGFLAGS='-g' 89 | 90 | # CXXFLAGS="-gencode=arch=compute_13,code=sm_13 -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=\\\"sm_30,compute_30\\\" -m 64 -I$TMW_ROOT/toolbox/distcomp/gpu/extern/include --compiler-options -fno-common,-fexceptions,-arch,$ARCHS,-isysroot,$MW_SDKROOT,-mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET" 91 | # 92 | POSTLINK_CMDS=':' 93 | #---------------------------------------------------------------------------- 94 | ;; 95 | esac 96 | ############################################################################# 97 | # 98 | # Architecture independent lines: 99 | # 100 | # Set and uncomment any lines which will apply to all architectures. 101 | # 102 | #---------------------------------------------------------------------------- 103 | # CC="$CC" 104 | # CFLAGS="$CFLAGS" 105 | # COPTIMFLAGS="$COPTIMFLAGS" 106 | # CDEBUGFLAGS="$CDEBUGFLAGS" 107 | # CLIBS="$CLIBS" 108 | # 109 | # FC="$FC" 110 | # FFLAGS="$FFLAGS" 111 | # FOPTIMFLAGS="$FOPTIMFLAGS" 112 | # FDEBUGFLAGS="$FDEBUGFLAGS" 113 | # FLIBS="$FLIBS" 114 | # 115 | # LD="$LD" 116 | # LDFLAGS="$LDFLAGS" 117 | # LDOPTIMFLAGS="$LDOPTIMFLAGS" 118 | # LDDEBUGFLAGS="$LDDEBUGFLAGS" 119 | #---------------------------------------------------------------------------- 120 | ############################################################################# 121 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/config/mex_CUDA_maci64.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 |
26 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/vl_nnconv.cpp: -------------------------------------------------------------------------------- 1 | /** @file vl_nnconv.cpp 2 | ** @brief A non-CUDA wrapper 3 | **/ 4 | 5 | #include "vl_nnconv.cu" 6 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/vl_nnnormalize.cpp: -------------------------------------------------------------------------------- 1 | /** @file vl_nnnormalize.cpp 2 | ** @brief A non-CUDA wrapper 3 | **/ 4 | 5 | #include "vl_nnnormalize.cu" -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/vl_nnnormalize.cu: -------------------------------------------------------------------------------- 1 | /** @file gnormalize.cu 2 | ** @brief Normalization block 3 | ** @author Andrea Vedaldi 4 | **/ 5 | 6 | /* 7 | Copyright (C) 2014 Andrea Vedaldi. 8 | All rights reserved. 9 | 10 | This file is part of the VLFeat library and is made available under 11 | the terms of the BSD license (see the COPYING file). 12 | */ 13 | 14 | #include "bits/mexutils.h" 15 | #include "bits/nnhelper.h" 16 | #include "bits/normalize.hpp" 17 | 18 | #include 19 | 20 | /* option codes */ 21 | enum { 22 | opt_verbose = 0 23 | } ; 24 | 25 | /* options */ 26 | vlmxOption options [] = { 27 | {"Verbose", 0, opt_verbose }, 28 | {0, 0, 0 } 29 | } ; 30 | 31 | enum { 32 | IN_DATA = 0, IN_PARAM, IN_DEROUTPUT, IN_END 33 | } ; 34 | 35 | enum { 36 | OUT_RESULT = 0, OUT_END 37 | } ; 38 | 39 | void mexFunction(int nout, mxArray *out[], 40 | int nin, mxArray const *in[]) 41 | { 42 | /* inputs */ 43 | PackedData data ; 44 | PackedData derOutput ; 45 | 46 | /* outputs */ 47 | PackedData output ; 48 | PackedData derData ; 49 | PackedDataGeometry outputGeom ; 50 | PackedDataGeometry derDataGeom ; 51 | 52 | size_t normDepth ; 53 | double normAlpha ; 54 | double normKappa ; 55 | double normBeta ; 56 | 57 | #ifdef ENABLE_GPU 58 | bool gpuMode = false ; 59 | #else 60 | bool const gpuMode = false ; 61 | #endif 62 | bool backMode = false ; 63 | 64 | int verbosity = 0 ; 65 | int opt ; 66 | int next = IN_END ; 67 | mxArray const *optarg ; 68 | 69 | packed_data_init_empty(&data) ; 70 | packed_data_init_empty(&derOutput) ; 71 | packed_data_init_empty(&output) ; 72 | packed_data_init_empty(&derData) ; 73 | 74 | /* -------------------------------------------------------------- */ 75 | /* Check the arguments */ 76 | /* -------------------------------------------------------------- */ 77 | 78 | if (nin < 2) { 79 | mexErrMsgTxt("The arguments are less than two.") ; 80 | } 81 | 82 | if (nin > 2 && vlmxIsString(in[2],-1)) { 83 | next = 2 ; 84 | backMode = 0 ; 85 | } else { 86 | backMode = (nin >= 3) ; 87 | } 88 | 89 | while ((opt = vlmxNextOption (in, nin, options, &next, &optarg)) >= 0) { 90 | switch (opt) { 91 | case opt_verbose : 92 | ++ verbosity ; 93 | break ; 94 | default: break ; 95 | } 96 | } 97 | 98 | packed_data_init_with_array (&data, in[IN_DATA]) ; 99 | if (backMode) { packed_data_init_with_array(&derOutput, in[IN_DEROUTPUT]) ; } 100 | 101 | #if ENABLE_GPU 102 | gpuMode = (data.mode == matlabGpuArrayWrapper) ; 103 | if (gpuMode) { 104 | mxInitGPU() ; 105 | } 106 | #endif 107 | 108 | /* check GPU/data class consistency */ 109 | if (gpuMode && (derOutput.mode != matlabGpuArrayWrapper) && backMode) { 110 | mexErrMsgTxt("DATA is a GPU array but DEROUTPUT is not.") ; 111 | } 112 | if (data.geom.classID != mxSINGLE_CLASS) { 113 | mexErrMsgTxt("DATA is not of class SINGLE."); 114 | } 115 | if (backMode && (derOutput.geom.classID != mxSINGLE_CLASS)) { 116 | mexErrMsgTxt("DEROUTPUT is not of class SINGLE."); 117 | } 118 | 119 | if (!mxIsNumeric(in[IN_PARAM]) || 120 | mxGetClassID(in[IN_PARAM]) != mxDOUBLE_CLASS || 121 | mxIsComplex(in[IN_PARAM]) || 122 | mxGetNumberOfElements(in[IN_PARAM]) != 4) 123 | { 124 | mexErrMsgTxt("PARAM is not a plain 4 vector.") ; 125 | } 126 | normDepth = (size_t) mxGetPr(in[IN_PARAM])[0] ; 127 | normKappa = mxGetPr(in[IN_PARAM])[1] ; 128 | normAlpha = mxGetPr(in[IN_PARAM])[2] ; 129 | normBeta = mxGetPr(in[IN_PARAM])[3] ; 130 | 131 | packed_data_geom_init(&outputGeom, 132 | mxSINGLE_CLASS, 133 | data.geom.height, 134 | data.geom.width, 135 | data.geom.depth, 136 | data.geom.size) ; 137 | 138 | derDataGeom = data.geom ; 139 | 140 | if (verbosity > 0) { 141 | mexPrintf("vl_nnnormalize: mode %s; %s\n", gpuMode?"gpu":"cpu", backMode?"backward":"forward") ; 142 | mexPrintf("vl_nnnormalize: (depth,kappa,alpha,beta): (%d,%g,%g,%g)\n", 143 | normDepth, normKappa, normAlpha, normBeta) ; 144 | packed_data_geom_display(&data.geom, "vl_nnnormalize: data") ; 145 | 146 | if (backMode) { 147 | packed_data_geom_display(&derOutput.geom, "vl_nnnormalize: derOutput") ; 148 | packed_data_geom_display(&derDataGeom, "vl_nnnormalize: derData") ; 149 | } else { 150 | packed_data_geom_display(&outputGeom, "vl_nnnormalize: output") ; 151 | } 152 | } 153 | 154 | if (backMode) { 155 | if (derOutput.geom.height != outputGeom.height || 156 | derOutput.geom.width != outputGeom.width || 157 | derOutput.geom.depth != outputGeom.depth || 158 | derOutput.geom.size != outputGeom.size) 159 | { 160 | mexErrMsgTxt("DEROUTPUT dimensions are incompatible with X and POOL.") ; 161 | } 162 | } 163 | 164 | if (normDepth < 1) { 165 | mexErrMsgTxt("The normalization depth is smaller than 1.") ; 166 | } 167 | 168 | /* -------------------------------------------------------------- */ 169 | /* Do the work */ 170 | /* -------------------------------------------------------------- */ 171 | 172 | if (!backMode) { 173 | packed_data_init_with_geom(&output, gpuMode, outputGeom, false, true, 0) ; 174 | //packed_data_init_with_geom(&output, gpuMode, outputGeom, false, false, 0) ; 175 | } else { 176 | packed_data_init_with_geom(&derData, gpuMode, derDataGeom, false, true, 0) ; 177 | } 178 | 179 | if (!backMode) { 180 | /* forward */ 181 | if (gpuMode) { 182 | #ifdef ENABLE_GPU 183 | normalize_gpu(output.memory, 184 | data.memory, 185 | data.geom.height, data.geom.width, data.geom.depth, data.geom.size, 186 | normDepth, normKappa, normAlpha, normBeta) ; 187 | #else 188 | assert(false) ; 189 | #endif 190 | } else { 191 | normalize_cpu(output.memory, 192 | data.memory, 193 | data.geom.height, data.geom.width, data.geom.depth, data.geom.size, 194 | normDepth, normKappa, normAlpha, normBeta) ; 195 | } 196 | } else { 197 | /* backward */ 198 | if (gpuMode) { 199 | #ifdef ENABLE_GPU 200 | normalizeBackward_gpu(derData.memory, 201 | data.memory, 202 | derOutput.memory, 203 | data.geom.height, data.geom.width, data.geom.depth, data.geom.size, 204 | normDepth, normKappa, normAlpha, normBeta) ; 205 | #else 206 | assert(false) ; 207 | #endif 208 | } else { 209 | normalizeBackward_cpu(derData.memory, 210 | data.memory, 211 | derOutput.memory, 212 | data.geom.height, data.geom.width, data.geom.depth, data.geom.size, 213 | normDepth, normKappa, normAlpha, normBeta) ; 214 | } 215 | } 216 | 217 | /* -------------------------------------------------------------- */ 218 | /* Cleanup */ 219 | /* -------------------------------------------------------------- */ 220 | 221 | packed_data_deinit(&data) ; 222 | if (backMode) { 223 | packed_data_deinit(&derOutput) ; 224 | out[OUT_RESULT] = packed_data_deinit_extracting_array(&derData) ; 225 | } else { 226 | out[OUT_RESULT] = packed_data_deinit_extracting_array(&output) ; 227 | } 228 | } 229 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/src/vl_nnpool.cpp: -------------------------------------------------------------------------------- 1 | /** @file vl_nnpool.cpp 2 | ** @brief A non-CUDA wrapper 3 | **/ 4 | 5 | #include "vl_nnpool.cu" -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_argparse.m: -------------------------------------------------------------------------------- 1 | function [conf, args] = vl_argparse(conf, args) 2 | % VL_ARGPARSE Parse list of parameter-value pairs 3 | % CONF = VL_ARGPARSE(CONF, ARGS) updates the structure CONF based on 4 | % the specified parameter-value pairs ARGS={PAR1, VAL1, ... PARN, 5 | % VALN}. The function produces an error if an unknown parameter name 6 | % is passed in. 7 | % 8 | % [CONF, ARGS] = VL_ARGPARSE(CONF, ARGS) copies any parameter in 9 | % ARGS that does not match CONF back to ARGS instead of producing an 10 | % error. 11 | % 12 | % Example:: 13 | % The function can be used to parse a list of arguments 14 | % passed to a MATLAB functions: 15 | % 16 | % function myFunction(x,y,z,varargin) 17 | % conf.parameterName = defaultValue ; 18 | % conf = vl_argparse(conf, varargin) 19 | % 20 | % If only a subset of the options should be parsed, for example 21 | % because the other options are interpreted by a subroutine, then 22 | % use the form 23 | % 24 | % [conf, varargin] = vl_argparse(conf, varargin) 25 | % 26 | % that copies back to VARARGIN any unknown parameter. 27 | % 28 | % See also: VL_OVERRIDE(), VL_HELP(). 29 | 30 | % Authors: Andrea Vedaldi 31 | 32 | % Copyright (C) 2007-12 Andrea Vedaldi and Brian Fulkerson. 33 | % All rights reserved. 34 | % 35 | % This file is part of the VLFeat library and is made available under 36 | % the terms of the BSD license (see the COPYING file). 37 | 38 | if ~isstruct(conf), error('CONF must be a structure') ; end 39 | 40 | remainingArgs = {} ; 41 | names = fieldnames(conf) ; 42 | 43 | ai = 1 ; 44 | while ai <= length(args) 45 | paramName = args{ai} ; 46 | if isstruct(paramName) 47 | moreArgs = cat(2, fieldnames(args{ai}), struct2cell(args{ai}))' ; 48 | [conf,r] = vl_argparse(conf, moreArgs(:)) ; 49 | remainingArgs = cat(2, remainingArgs, r) ; 50 | ai = ai +1 ; 51 | continue ; 52 | end 53 | if ~ischar(paramName) 54 | error('The name of the parameter number %d is not a string nor a structure', (ai-1)/2+1) ; 55 | end 56 | if ai + 1 > length(args) 57 | error('Parameter-value pair expected (missing value?).') ; 58 | end 59 | value = args{ai+1} ; 60 | i = find(strcmpi(paramName, names)) ; 61 | if isempty(i) 62 | if nargout < 2 63 | error('Unknown parameter ''%s''.', paramName) ; 64 | else 65 | remainingArgs(end+1:end+2) = args(ai:ai+1) ; 66 | end 67 | else 68 | paramName = names{i} ; 69 | if isstruct(conf.(paramName)) 70 | [conf.(paramName),r] = vl_argparse(conf.(paramName), {value}) ; 71 | else 72 | conf.(paramName) = value ; 73 | end 74 | end 75 | ai = ai + 2 ; 76 | end 77 | 78 | args = remainingArgs ; 79 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_imreadjpeg.m: -------------------------------------------------------------------------------- 1 | %VL_IMREADJPEG Asynchronous multi-threaded jpeg file loading 2 | % VL_IMREADJPEG reads jpeg files with multiple threads and allows to 3 | % perform this operation asynchronously. In synchronous mode, 4 | % ('Prefetch', false) this function creates pool of workers where each 5 | % processes images from the queue and waits until all images are loaded. 6 | % In asynchronous mode ('Prefetch', true); images are added to the queue 7 | % but the function is not blocking and does not return any value. 8 | % Afterwards, images can be loaded with subsequent call without prefetch. 9 | % 10 | % Synchrnous read: 11 | % IMGS = VL_IMREADJPEG(IMG_PATHS, 'NumThreads', NUM_THREADS) Read jpeg 12 | % images from IMG_PATHS with NUM_THREADS separate threads. Each thread 13 | % creates the image buffer and returns it in IMGS cell array. This 14 | % performs synchronous read (exit when all images read). 15 | % 16 | % Asynchronous read: 17 | % VL_IMREADJPEG(IMG_PATHS, 'NumThreads', NUM_THREADS_P, 'Prefetch' true) 18 | % prefetch the jpeg images with NUM_THREADS worker threads. This command 19 | % exist directly when the jobs are queued. Prefetched images can be 20 | % loaded to Matlab by subsequent call of VL_IMREADJPEG(IMG_PATHS, 21 | % 'NumThreads', NUM_THREADS_L) which loads the prefetched images and waits 22 | % until the rest of the images are loaded. The number of prefetch threads 23 | % NUM_THREADS_P must be equal to number of loader threads NUM_THREADS_L 24 | % in order to keep the existing worker thread pool (with a different 25 | % values the workers pool is recreated which involves waiting until all 26 | % threads finish, this can lead to decreased performance). 27 | % 28 | % Copyright (C) 2014 Andrea Vedaldi. 29 | % All rights reserved. 30 | % 31 | % This file is part of the VLFeat library and is made available under 32 | % the terms of the BSD license (see the COPYING file). -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnconv.m: -------------------------------------------------------------------------------- 1 | % VL_NNCONV CNN convolution 2 | % Y = VL_NNCONV(X, F, B) computes the convolution of the image stack X 3 | % with the filter bank F and biases B. If B is the empty matrix, 4 | % then no biases are added. If F is the empty matrix, then 5 | % the function does not filter the image, but still adds the 6 | % biases as well as performing downsampling and padding as explained 7 | % below. 8 | % 9 | % [DXDY, DXDF, DXDB] = VL_NNCONV(X, F, B, DZDY) computes the 10 | % derivatives of the nework output Z w.r.t. the data X and 11 | % parameters F, B given the derivative w.r.t the output Y. If B is 12 | % the empty matrix, then DXDB is also empty. 13 | % 14 | % X is a SINGLE array of dimension H x W x D x N where (H,W) are 15 | % the height and width of the map stack, D is the image depth 16 | % (number of feature channels) and N the number of of images in the 17 | % stack. 18 | % 19 | % F is a SINGLE array fo dimension FW x FH x D x K where (FH,FW) are 20 | % the filter height and width and K the number o filters in the 21 | % bank. 22 | % 23 | % VL_NNCONV() implements a special `fully-connected' mode: when the 24 | % support of the filters matches exactly the support of the input 25 | % image, the code uses an optimized path for faster computation. 26 | % 27 | % VL_NNCONV(..., 'option', value, ...) takes the following options: 28 | % 29 | % Stride:: [1] 30 | % The output stride (downsampling factor). Passing [STRIDEY 31 | % STRIDEX] allows specifying different subsampling factors for 32 | % the vertical and horizontal directions. 33 | % 34 | % Pad:: [0] 35 | % The amount of input padding. Input images are padded with zeros 36 | % by this number of pixels before the convolution is 37 | % computed. Passing [TOP BOTTOM LEFT RIGHT] allows specifying 38 | % different padding amounts for the top, bottom, left, and right 39 | % sides respectively. 40 | % 41 | % The filter size must be not larger than the padded image, i.e. 42 | % 43 | % 1 <= FH <= H + 2*(PADTOP+PADBOTTOM), 44 | % 1 <= FW <= W + 2*(PADLEFT+PADRIGHT). 45 | % 46 | % The output a is a SINGLE array of dimension YH x YW x K x N of 47 | % N images with K challens and size: 48 | % 49 | % YH = floor((H + (PADTOP+PADBOTTOM) - FH)/STRIDEY) + 1, 50 | % YW = floor((W + (PADLEFT+PADRIGHT) - FW)/STRIDEX) + 1. 51 | % 52 | % The derivative DZDY has the same dimension of the output Y, 53 | % the derivative DZDX has the same dimension as the input X, and 54 | % the derivative DZDF has the the same dimenson as F. 55 | 56 | % Copyright (C) 2014 Andrea Vedaldi and Max Jaderberg. 57 | % All rights reserved. 58 | % 59 | % This file is part of the VLFeat library and is made available under 60 | % the terms of the BSD license (see the COPYING file). 61 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nndropout.m: -------------------------------------------------------------------------------- 1 | function [y,mask] = vl_nndropout(x,varargin) 2 | % VL_NNDROPOUT CNN dropout 3 | % [Y,MASK] = VL_NNDROPOUT(X) applies dropout to the data X. MASK 4 | % is the randomly sampled dropout mask. Both Y and MASK have the 5 | % same size as X. 6 | % 7 | % VL_NNDROPOUT(X, 'rate', R) sets the dropout rate to R. 8 | % 9 | % [DZDX] = VL_NNDROPOUT(X, DZDY, 'mask', MASK) computes the 10 | % derivatives DZDX of the network relative to the input X given 11 | % the derivative DZDY relative to the outut Y. 12 | 13 | % Copyright (C) 2014 Andrea Vedaldi. 14 | % All rights reserved. 15 | % 16 | % This file is part of the VLFeat library and is made available under 17 | % the terms of the BSD license (see the COPYING file). 18 | 19 | opts.rate = 0.5 ; 20 | opts.mask = [] ; 21 | 22 | backMode = numel(varargin) > 0 && ~isstr(varargin{1}) ; 23 | if backMode 24 | dzdy = varargin{1} ; 25 | opts = vl_argparse(opts, varargin(2:end)) ; 26 | else 27 | opts = vl_argparse(opts, varargin) ; 28 | end 29 | 30 | % determine mask 31 | mask = opts.mask ; 32 | scale = single(1 / (1 - opts.rate)) ; 33 | if backMode && isempty(mask) 34 | warning('vl_nndropout: when using in backward mode, the mask should be specified') ; 35 | end 36 | if isempty(mask) 37 | if isa(x,'gpuArray') 38 | mask = scale * single(gpuArray.rand(size(x)) >= opts.rate) ; 39 | else 40 | mask = scale * single(rand(size(x)) >= opts.rate) ; 41 | end 42 | end 43 | 44 | % do job 45 | if ~backMode 46 | y = mask .* x ; 47 | else 48 | y = mask .* dzdy ; 49 | end 50 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnloss.m: -------------------------------------------------------------------------------- 1 | function Y = vl_nnloss(X,c,dzdy) 2 | % VL_NNLOSS CNN log-loss 3 | % Y = VL_NNLOSS(X, C) applies the the logistic loss to the data 4 | % X. X has dimension H x W x D x N, packing N arrays of W x H 5 | % D-dimensional vectors. 6 | % 7 | % C contains the class labels, which should be integer in the range 8 | % 1 to D. C can be an array with either N elements or with H x W x 9 | % 1 x N dimensions. In the fist case, a given class label is 10 | % applied at all spatial locations; in the second case, different 11 | % class labels can be specified for different locations. 12 | % 13 | % D can be thought of as the number of possible classes and the 14 | % function computes the softmax along the D dimension. Often W=H=1, 15 | % but this is not a requirement, as the operator is applied 16 | % convolutionally at all spatial locations. 17 | % 18 | % DZDX = VL_NNLOSS(X, C, DZDY) computes the derivative DZDX of the 19 | % CNN with respect to the input X given the derivative DZDY with 20 | % respect to the block output Y. DZDX has the same dimension as X. 21 | 22 | % Copyright (C) 2014 Andrea Vedaldi. 23 | % All rights reserved. 24 | % 25 | % This file is part of the VLFeat library and is made available under 26 | % the terms of the BSD license (see the COPYING file). 27 | 28 | % no division by zero 29 | X = X + 1e-4 ; 30 | sz = [size(X,1) size(X,2) size(X,3) size(X,4)] ; 31 | 32 | % index from 0 33 | c = c - 1 ; 34 | 35 | if numel(c) == sz(4) 36 | % one label per image 37 | c = reshape(c, [1 1 1 sz(4)]) ; 38 | c = repmat(c, [sz(1) sz(2)]) ; 39 | else 40 | % one label per spatial location 41 | sz_ = size(c) ; 42 | assert(isequal(sz_, [sz(1) sz(2) 1 sz(4)])) ; 43 | end 44 | 45 | % convert to indeces 46 | c_ = 0:numel(c)-1 ; 47 | c_ = 1 + ... 48 | mod(c_, sz(1)*sz(2)) + ... 49 | (sz(1)*sz(2)) * c(:)' + ... 50 | (sz(1)*sz(2)*sz(3)) * floor(c_/(sz(1)*sz(2))) ; 51 | 52 | n = sz(1)*sz(2) ; 53 | if nargin <= 2 54 | Y = - sum(log(X(c_))) / n ; 55 | else 56 | Y_ = - (1./X) * (dzdy/n) ; 57 | Y = Y_*0 ; 58 | Y(c_) = Y_(c_) ; 59 | end 60 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnnoffset.m: -------------------------------------------------------------------------------- 1 | function y = vl_nnnoffset(x, param, dzdy) 2 | % VL_NNNOFFSET Adds an offset dependent on the feature norm 3 | % Y = VL_NNNOFFSET(X, PARAM) subtracts from each element of X the 4 | % weighted norm of the feature channels: 5 | % 6 | % X(i,j,k) = X(i,j,k) - PARAM(1) * L(i,j) ^ PARAM(2) 7 | % 8 | % where 9 | % 10 | % L(i,j) = sum_K X(i,j,k)^2 11 | % 12 | % DZDX = VL_NNNOFFSET(X, PARAM, DZDY) computes the derivative of 13 | % the network given the derivative DZDY with respect to the output 14 | % of this block. 15 | 16 | % Copyright (C) 2014 Andrea Vedaldi. 17 | % All rights reserved. 18 | % 19 | % This file is part of the VLFeat library and is made available under 20 | % the terms of the BSD license (see the COPYING file). 21 | 22 | L = sum(x.^2,3) ; 23 | L = max(L, single(1e-8)) ; 24 | param = single(param) ; 25 | 26 | if nargin <= 2 27 | y = bsxfun(@minus, x, param(1)*L.^param(2)) ; 28 | else 29 | y = dzdy - bsxfun(@times, (2*param(1)*param(2))* x, sum(dzdy,3) .* (L.^(param(2)-1))) ; 30 | end -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnnormalize.m: -------------------------------------------------------------------------------- 1 | % VL_NNNORMALIZE Feature-wise sliding window normalization 2 | % Y = VL_NNORMALIZE(X, PARAM) performs feature-wise sliding window 3 | % normalization of the image X. The normalized output is given by: 4 | % 5 | % Y(i,j,k) = X(i,j,k) / L(i,j,k)^BETA 6 | % 7 | % where the normalising factor is 8 | % 9 | % L(i,j,k) = KAPPA + ALPHA * (sum_{q in Q(k)} X(i,j,k)^2, 10 | % 11 | % PARAM = [N KAPPA ALPHA BETA], and N is the size of the window. The 12 | % window Q(k) itself is defined as: 13 | % 14 | % Q(k) = [max(1, k-FLOOR((N-1)/2)), min(D, k+CEIL((N-1)/2))]. 15 | % 16 | % where D is the number of feature dimensions in X. Note in 17 | % particular that, by setting N >= 2D, the function can be used to 18 | % normalize the whole feature vector. 19 | % 20 | % DZDX = VL_NNORMALIZE(X, PARAM, DZDY) computes the derivative of 21 | % the network output DZDX with respect to the block input X given 22 | % the derivative DZDY with respect to the block output Y. 23 | 24 | % Copyright (C) 2014 Andrea Vedaldi. 25 | % All rights reserved. 26 | % 27 | % This file is part of the VLFeat library and is made available under 28 | % the terms of the BSD license (see the COPYING file). 29 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnpool.m: -------------------------------------------------------------------------------- 1 | % VL_NNPOOL CNN poolinng 2 | % Y = VL_NNPOOL(X, POOL) applies the pooling operator to all 3 | % channels of the data X using a square filter of size POOL. X is a 4 | % SINGLE array of dimension H x W x D x N where (H,W) are the 5 | % height and width of the map stack, D is the image depth (number 6 | % of feature channels) and N the number of of images in the stack. 7 | % 8 | % Y = VL_NNPOOL(X, [POOLY, POOLX]) uses a rectangular filter of 9 | % height POOLY and width POOLX. 10 | % 11 | % DZDX = VL_NNPOOL(X, POOL, DZDY) computes the derivatives of 12 | % the nework output Z w.r.t. the data X given the derivative DZDY 13 | % w.r.t the max-pooling output Y. 14 | % 15 | % VL_NNCONV(..., 'option', value, ...) takes the following options: 16 | % 17 | % Stride:: [1] 18 | % The output stride (downsampling factor). It can be either a 19 | % scalar for isotropic downsampling or a vector [STRIDEY 20 | % STRIDEX]. 21 | % 22 | % Pad:: [0] 23 | % The amount of input padding. Input images are padded with zeros 24 | % by this number of pixels on all sides before the convolution is 25 | % computed. It can also be a vector [TOP BOTTOM LEFT RIGHT] to 26 | % specify a different amount of padding in each direction. The 27 | % size of the poolin filter has to exceed the padding. 28 | % 29 | % Method:: ['max'] 30 | % Specify method of pooling. It can be either 'max' (retain max value 31 | % over the pooling region per channel) or 'avg' (compute the average 32 | % value over the poolling region per channel). 33 | % 34 | % The pooling window must be not larger than the padded image, i.e. 35 | % 36 | % 1 <= POOLY <= HEIGHT + (PADTOP + PADBOTTOM), 37 | % 1 <= POOLX <= WIDTH + (PADLEFT + PADRIGHT). 38 | % 39 | % The output a is a SINGLE array of dimension YH x YW x K x N of N 40 | % images with K challens and size: 41 | % 42 | % YH = floor((H + (PADTOP+PADBOTTOM) - POOLY)/STRIDEY) + 1, 43 | % YW = floor((W + (PADLEFT+PADRIGHT) - POOLX)/STRIDEX) + 1. 44 | % 45 | % The derivative DZDY has the same dimension of the output Y and 46 | % the derivative DZDX has the same dimension as the input X. 47 | 48 | % Copyright (C) 2014 Andrea Vedaldi, Karel Lenc, and Max Jaderberg. 49 | % All rights reserved. 50 | % 51 | % This file is part of the VLFeat library and is made available under 52 | % the terms of the BSD license (see the COPYING file). 53 | 54 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnrelu.m: -------------------------------------------------------------------------------- 1 | function y = vl_nnrelu(x,dzdy) 2 | % VL_NNRELU CNN rectified linear unit 3 | % Y = VL_NNRELU(X) applies the rectified linear unit to the data 4 | % X. X can have arbitrary size. 5 | % 6 | % DZDX = VL_NNRELU(X, DZDY) computes the network derivative DZDX 7 | % with respect to the input X given the derivative DZDY with respect 8 | % to the output Y. DZDX has the same dimension as X. 9 | 10 | % Copyright (C) 2014 Andrea Vedaldi. 11 | % All rights reserved. 12 | % 13 | % This file is part of the VLFeat library and is made available under 14 | % the terms of the BSD license (see the COPYING file). 15 | 16 | if nargin <= 1 || isempty(dzdy) 17 | y = max(x, single(0)) ; 18 | else 19 | y = dzdy .* (x > single(0)) ; 20 | end 21 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnsoftmax.m: -------------------------------------------------------------------------------- 1 | function Y = vl_nnsoftmax(X,dzdY) 2 | % VL_NNSOFTMAX CNN softmax 3 | % Y = VL_NNSOFTMAX(X) applies the softmax operator the data X. X 4 | % has dimension H x W x D x N, packing N arrays of W x H 5 | % D-dimensional vectors. 6 | % 7 | % D can be thought of as the number of possible classes and the 8 | % function computes the softmax along the D dimension. Often W=H=1, 9 | % but this is not a requirement, as the operator is applied 10 | % convolutionally at all spatial locations. 11 | % 12 | % DZDX = VL_NNSOFTMAX(X, DZDY) computes the derivative DZDX of the 13 | % CNN otuoutwith respect to the input X given the derivative DZDY 14 | % with respect to the block output Y. DZDX has the same dimension 15 | % as X. 16 | 17 | % Copyright (C) 2014 Andrea Vedaldi. 18 | % All rights reserved. 19 | % 20 | % This file is part of the VLFeat library and is made available under 21 | % the terms of the BSD license (see the COPYING file). 22 | 23 | E = exp(bsxfun(@minus, X, max(X,[],3))) ; 24 | L = sum(E,3) ; 25 | Y = bsxfun(@rdivide, E, L) ; 26 | 27 | if nargin <= 1, return ; end 28 | 29 | % backward 30 | Y = Y .* bsxfun(@minus, dzdY, sum(dzdY .* Y, 3)) ; 31 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_nnsoftmaxloss.m: -------------------------------------------------------------------------------- 1 | function Y = vl_nnsoftmaxloss(X,c,dzdy) 2 | % VL_NNSOFTMAXLOSS CNN combined softmax and logistic loss 3 | % Y = VL_NNSOFTMAX(X, C) applies the softmax operator followed by 4 | % the logistic loss the data X. X has dimension H x W x D x N, 5 | % packing N arrays of W x H D-dimensional vectors. 6 | % 7 | % C contains the class labels, which should be integer in the range 8 | % 1 to D. C can be an array with either N elements or with H x W x 9 | % 1 x N dimensions. In the fist case, a given class label is 10 | % applied at all spatial locations; in the second case, different 11 | % class labels can be specified for different locations. 12 | % 13 | % D can be thought of as the number of possible classes and the 14 | % function computes the softmax along the D dimension. Often W=H=1, 15 | % but this is not a requirement, as the operator is applied 16 | % convolutionally at all spatial locations. 17 | % 18 | % DZDX = VL_NNSOFTMAXLOSS(X, C, DZDY) computes the derivative DZDX 19 | % of the CNN with respect to the input X given the derivative DZDY 20 | % with respect to the block output Y. DZDX has the same dimension 21 | % as X. 22 | 23 | % Copyright (C) 2014 Andrea Vedaldi. 24 | % All rights reserved. 25 | % 26 | % This file is part of the VLFeat library and is made available under 27 | % the terms of the BSD license (see the COPYING file). 28 | 29 | %X = X + 1e-6 ; 30 | sz = [size(X,1) size(X,2) size(X,3) size(X,4)] ; 31 | 32 | % index from 0 33 | c = c - 1 ; 34 | 35 | if numel(c) == sz(4) 36 | % one label per image 37 | c = reshape(c, [1 1 1 sz(4)]) ; 38 | c = repmat(c, [sz(1) sz(2)]) ; 39 | else 40 | % one label per spatial location 41 | sz_ = size(c) ; 42 | assert(isequal(sz_, [sz(1) sz(2) 1 sz(4)])) ; 43 | end 44 | 45 | % convert to indeces 46 | c_ = 0:numel(c)-1 ; 47 | c_ = 1 + ... 48 | mod(c_, sz(1)*sz(2)) + ... 49 | (sz(1)*sz(2)) * c(:)' + ... 50 | (sz(1)*sz(2)*sz(3)) * floor(c_/(sz(1)*sz(2))) ; 51 | 52 | % compute softmaxloss 53 | Xmax = max(X,[],3) ; 54 | ex = exp(bsxfun(@minus, X, Xmax)) ; 55 | 56 | n = sz(1)*sz(2) ; 57 | if nargin <= 2 58 | t = Xmax + log(sum(ex,3)) - reshape(X(c_), [sz(1:2) 1 sz(4)]) ; 59 | Y = sum(t(:)) / n ; 60 | else 61 | Y = bsxfun(@rdivide, ex, sum(ex,3)) ; 62 | Y(c_) = Y(c_) - 1; 63 | Y = Y * (dzdy / n) ; 64 | end 65 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_rootnn.m: -------------------------------------------------------------------------------- 1 | function root = vl_rootnn() 2 | % VL_ROOTNN Get the root path of the MatConvNet toolbox 3 | % VL_ROOTNN() returns the path to the MatConvNet toolbox. 4 | 5 | % Copyright (C) 2014 Andrea Vedaldi. 6 | % All rights reserved. 7 | % 8 | % This file is part of the VLFeat library and is made available under 9 | % the terms of the BSD license (see the COPYING file). 10 | 11 | root = fileparts(fileparts(mfilename('fullpath'))) ; 12 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/vl_setupnn.m: -------------------------------------------------------------------------------- 1 | function vl_setupnn() 2 | % VL_SETUPNN Setup the MatConvNet toolbox 3 | % VL_SETUPNN() function adds the MatConvNet toolbox to MATLAB path. 4 | 5 | % Copyright (C) 2014 Andrea Vedaldi. 6 | % All rights reserved. 7 | % 8 | % This file is part of the VLFeat library and is made available under 9 | % the terms of the BSD license (see the COPYING file). 10 | 11 | root = vl_rootnn() ; 12 | addpath(fullfile(root, 'matlab')) ; 13 | addpath(fullfile(root, 'matlab', 'mex')) ; 14 | addpath(fullfile(root, 'matlab', 'simplenn')) ; 15 | addpath(fullfile(root, 'matlab', 'xtest')) ; 16 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/xtest/vl_testder.m: -------------------------------------------------------------------------------- 1 | function vl_testder(g,x,dzdy,dzdx,delta,tau) 2 | 3 | if nargin < 5 4 | delta = 1e-3 ; 5 | end 6 | 7 | if nargin < 6 8 | tau = [] ; 9 | end 10 | 11 | dzdy = gather(dzdy) ; 12 | dzdx = gather(dzdx) ; 13 | 14 | y = gather(g(x)) ; 15 | dzdx_=zeros(size(dzdx)); 16 | for i=1:numel(x) 17 | x_ = x ; 18 | x_(i) = x_(i) + delta ; 19 | y_ = gather(g(x_)) ; 20 | factors = dzdy .* (y_ - y)/delta ; 21 | dzdx_(i) = dzdx_(i) + sum(factors(:)) ; 22 | end 23 | vl_testsim(dzdx, dzdx_, tau); 24 | 25 | -------------------------------------------------------------------------------- /matconvnet1.08/matlab/xtest/vl_testsim.m: -------------------------------------------------------------------------------- 1 | function vl_testsim(a,b,tau) 2 | % VL_TESSIM Test near-equality of arrays 3 | % VL_TEST(A,B,TAU) succeds if A and B have the same dimensions 4 | % and if their L^infinity difference is smaller than TAU. 5 | % 6 | % VL_TEST(A,B) selects TAU automatically by looking at the 7 | % dynamic range of the data. The same happens if TAU is the empty 8 | % matrix. 9 | 10 | % Copyright (C) 2014 Andrea Vedaldi. 11 | % All rights reserved. 12 | % 13 | % This file is part of the VLFeat library and is made available under 14 | % the terms of the BSD license (see the COPYING file). 15 | 16 | a = gather(a) ; 17 | b = gather(b) ; 18 | assert(isequal(size(a),size(b))) ; 19 | if isempty(a), return ; end 20 | delta = a - b ; 21 | %max(abs(a(:)-b(:))) 22 | if nargin < 3 || isempty(tau) 23 | maxv = max([max(a(:)), max(b(:))]) ; 24 | minv = min([min(a(:)), min(b(:))]) ; 25 | tau = 1e-2 * (maxv - minv) + 1e-4 * max(maxv, -minv) ; 26 | end 27 | assert(all(abs(a(:)-b(:)) < tau)) ; 28 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | 2 | **Deep Convolutional Neural Networks for Thermal Infrared Object Tracking** 3 | ![Alt text](./images/MCFTS_framework.jpg) 4 | ## Abstract 5 | We propose a correlation filter based ensemble tracker with multi-layer convolutional features for thermal infrared tracking (**MCFTS**). Firstly, we use pre-trained convolutional neural networks to extract the features of the multiple convolution layers of the thermal infrared target. Then, a correlation filter is used to construct multiple weak trackers with the corresponding convolution layer features. These weak trackers give the response maps of the target’s location. Finally, we propose an ensemble method that coalesces these response maps to get a stronger one. Furthermore, a simple but effective scale estimation strategy is exploited to boost the tracking accuracy. 6 | ## Step by step to run demo 7 | 1. Please download the VGG-NET-19 mat file using the link https://uofi.box.com/shared/static/kxzjhbagd6ih1rf7mjyoxn2hy70hltpl.mat or using the link if you are in China http://pan.baidu.com/s/1kU1Me5T , and then, put it into the folder `cnnnet`. 8 | 9 | > Note that this mat file is compatile with the MatConvNet-1beta8 used in this work, if you download the mat file from http://www.vlfeat.org/matconvnet/models/imagenet-vgg-verydeep-19.mat. 10 | > please pay attention to the version compatibility. You may need to modify some names of fields in each convolutional layer. 11 | 12 | 2. Using the preCompiled Matconvnet (not recommended) or Compile yourself Matconvnet using Matlab in the command window. 13 | ``` 14 | >>cd matconvnet1.08 15 | >>addpath matlab 16 | >>vl_compilenn('enableGpu', true) 17 | or 18 | >>vl_compilenn('enableGpu', true, ... 19 | 'cudaRoot','C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ... 20 | 'cudaMethod', 'nvcc') % for windows 21 | ``` 22 | Waiting the notification of success. More information about Matconvnet can be found at http://www.vlfeat.org/matconvnet/install/ 23 | 24 | 3. Run `runAll_vottir.m` to test the demo sequences. 25 | ## Results on VOT-TIR2016 26 | You can download the results in [here](https://drive.google.com/open?id=141ZpogrNkEmGLykHPikkp4m-MW-Cne3h). 27 | ## Others 28 | If you find the code helpful in your research, please consider citing: 29 | ``` 30 | @article{liu2017deep, 31 | title={Deep convolutional neural networks for thermal infrared object tracking}, 32 | author={Liu, Qiao and Lu, Xiaohuan and He, Zhenyu and Zhang, Chunkai and Chen, Wen-Sheng}, 33 | journal={Knowledge-Based Systems}, 34 | volume={134}, 35 | pages={189--198}, 36 | year={2017} 37 | } 38 | ``` 39 | Feedbacks and comments are welcome! 40 | Feel free to contact us via liuqiao.hit@gmail.com or liuqiao@stu.hit.edu.cn 41 | -------------------------------------------------------------------------------- /runAll_vottir.m: -------------------------------------------------------------------------------- 1 | %run the given videos 2 | function runAll_vottir 3 | seqTir={ 4 | 'birds' 5 | }; 6 | for s=1:numel(seqTir) 7 | run_tracker(seqTir{s}); 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /run_MCFTS.m: -------------------------------------------------------------------------------- 1 | 2 | %error('Note: you need to compile the Matconvnet according to Readme.txt, and then comment the FIRST line in run_HDT.m') 3 | function [positions_8]=run_MCFTS() 4 | addpath(genpath('E:\VOT\vottirworkspace2016\Trackers\MCFTS')) 5 | run('E:\VOT\vottirworkspace2016\Trackers\MCFTS/matconvnet1.08/matlab/vl_setupnn.m') 6 | pathModel = 'E:\VOT\vottirworkspace2016\Trackers\MCFTS\cnnnet/vgg-verydeep-19.mat'; 7 | 8 | show_visualization = 1; 9 | 10 | load region.txt; 11 | fid=fopen('images.txt'); 12 | filename=textscan(fid,'%s'); 13 | img_files = filename{1}; 14 | fclose(fid); 15 | [pos, target_sz]=initialize_region(region); 16 | 17 | %load region.txt and images.txt end 18 | e=mod(floor(target_sz),2); 19 | if e(2)==1 20 | target_sz(2)=target_sz(2)+1; 21 | end 22 | if e(1)==1 23 | target_sz(1)=target_sz(1)+1; 24 | end 25 | 26 | % extra area surrounding the target 27 | padding = struct('generic', 1.5, 'large', 1, 'height', 0.4); 28 | 29 | lambda = 1e-4; %regularization 30 | output_sigma_factor = 0.1; %spatial bandwidth (proportional to target) 31 | interp_factor = 0.01; 32 | cell_size = 4; 33 | bSaveImage = 0; 34 | 35 | [positions] = tracker_ensemble1(img_files, pos, target_sz, ... 36 | padding, lambda, output_sigma_factor, interp_factor, ... 37 | cell_size, show_visualization, bSaveImage, pathModel); 38 | 39 | %postions(y,x,h,w) 40 | positions_8=[ positions(:,2)-1/2*positions(:,4),positions(:,1)+1/2*positions(:,3),positions(:,2)-1/2*positions(:,4),positions(:,1)-1/2*positions(:,3),positions(:,2)+1/2*positions(:,4),positions(:,1)-1/2*positions(:,3),... 41 | positions(:,2)+1/2*positions(:,4),positions(:,1)+1/2*positions(:,3)]; 42 | 43 | % save results 44 | % rects = [positions(:,2) - target_sz(2)/2, positions(:,1) - target_sz(1)/2]; 45 | % rects(:,3) = target_sz(2); 46 | % rects(:,4) = target_sz(1); 47 | % res.type = 'rect'; 48 | % res.res = rects; 49 | % results=res; 50 | 51 | 52 | -------------------------------------------------------------------------------- /run_tracker.m: -------------------------------------------------------------------------------- 1 | function [positions_8]=run_tracker(video) 2 | 3 | addpath(genpath('./util')); 4 | addpath(genpath('./sequences')); 5 | addpath(genpath('./matconvnet1.08')); 6 | addpath(genpath('./cnnnet')); 7 | run('./matconvnet1.08/matlab/vl_setupnn.m') 8 | pathModel = './cnnnet/vgg-verydeep-19.mat'; % please download this model 9 | base_path='./sequences'; 10 | show_visualization = 1; 11 | 12 | %initial target's state 13 | [img_files, pos, target_sz]=load_video_info(base_path,video); 14 | 15 | % extra area surrounding the target 16 | padding = struct('generic', 1.5, 'large', 1, 'height', 0.4); 17 | lambda = 1e-4; %regularization 18 | output_sigma_factor = 0.1; %spatial bandwidth (proportional to target) 19 | interp_factor = 0.01; 20 | cell_size = 4; 21 | bSaveImage = 0; 22 | 23 | [positions] = tracker_ensemble(img_files, pos, target_sz, ... 24 | padding, lambda, output_sigma_factor, interp_factor, ... 25 | cell_size, show_visualization, bSaveImage, pathModel); 26 | 27 | %postions(y,x,h,w) 28 | %vottir2015 bounding box 29 | positions_8=[ positions(:,2)-1/2*positions(:,4),positions(:,1)+1/2*positions(:,3),positions(:,2)-1/2*positions(:,4),positions(:,1)-1/2*positions(:,3),positions(:,2)+1/2*positions(:,4),positions(:,1)-1/2*positions(:,3),... 30 | positions(:,2)+1/2*positions(:,4),positions(:,1)+1/2*positions(:,3)]; 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /sequences/birds/00000001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000001.png -------------------------------------------------------------------------------- /sequences/birds/00000002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000002.png -------------------------------------------------------------------------------- /sequences/birds/00000003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000003.png -------------------------------------------------------------------------------- /sequences/birds/00000004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000004.png -------------------------------------------------------------------------------- /sequences/birds/00000005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000005.png -------------------------------------------------------------------------------- /sequences/birds/00000006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000006.png -------------------------------------------------------------------------------- /sequences/birds/00000007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000007.png -------------------------------------------------------------------------------- /sequences/birds/00000008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000008.png -------------------------------------------------------------------------------- /sequences/birds/00000009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000009.png -------------------------------------------------------------------------------- /sequences/birds/00000010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000010.png -------------------------------------------------------------------------------- /sequences/birds/00000011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000011.png -------------------------------------------------------------------------------- /sequences/birds/00000012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000012.png -------------------------------------------------------------------------------- /sequences/birds/00000013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000013.png -------------------------------------------------------------------------------- /sequences/birds/00000014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000014.png -------------------------------------------------------------------------------- /sequences/birds/00000015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000015.png -------------------------------------------------------------------------------- /sequences/birds/00000016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000016.png -------------------------------------------------------------------------------- /sequences/birds/00000017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000017.png -------------------------------------------------------------------------------- /sequences/birds/00000018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000018.png -------------------------------------------------------------------------------- /sequences/birds/00000019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000019.png -------------------------------------------------------------------------------- /sequences/birds/00000020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000020.png -------------------------------------------------------------------------------- /sequences/birds/00000021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000021.png -------------------------------------------------------------------------------- /sequences/birds/00000022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000022.png -------------------------------------------------------------------------------- /sequences/birds/00000023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000023.png -------------------------------------------------------------------------------- /sequences/birds/00000024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000024.png -------------------------------------------------------------------------------- /sequences/birds/00000025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000025.png -------------------------------------------------------------------------------- /sequences/birds/00000026.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000026.png -------------------------------------------------------------------------------- /sequences/birds/00000027.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000027.png -------------------------------------------------------------------------------- /sequences/birds/00000028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000028.png -------------------------------------------------------------------------------- /sequences/birds/00000029.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000029.png -------------------------------------------------------------------------------- /sequences/birds/00000030.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000030.png -------------------------------------------------------------------------------- /sequences/birds/00000031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000031.png -------------------------------------------------------------------------------- /sequences/birds/00000032.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000032.png -------------------------------------------------------------------------------- /sequences/birds/00000033.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000033.png -------------------------------------------------------------------------------- /sequences/birds/00000034.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000034.png -------------------------------------------------------------------------------- /sequences/birds/00000035.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000035.png -------------------------------------------------------------------------------- /sequences/birds/00000036.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000036.png -------------------------------------------------------------------------------- /sequences/birds/00000037.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000037.png -------------------------------------------------------------------------------- /sequences/birds/00000038.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000038.png -------------------------------------------------------------------------------- /sequences/birds/00000039.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000039.png -------------------------------------------------------------------------------- /sequences/birds/00000040.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000040.png -------------------------------------------------------------------------------- /sequences/birds/00000041.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000041.png -------------------------------------------------------------------------------- /sequences/birds/00000042.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000042.png -------------------------------------------------------------------------------- /sequences/birds/00000043.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000043.png -------------------------------------------------------------------------------- /sequences/birds/00000044.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000044.png -------------------------------------------------------------------------------- /sequences/birds/00000045.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000045.png -------------------------------------------------------------------------------- /sequences/birds/00000046.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000046.png -------------------------------------------------------------------------------- /sequences/birds/00000047.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000047.png -------------------------------------------------------------------------------- /sequences/birds/00000048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000048.png -------------------------------------------------------------------------------- /sequences/birds/00000049.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000049.png -------------------------------------------------------------------------------- /sequences/birds/00000050.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000050.png -------------------------------------------------------------------------------- /sequences/birds/00000051.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000051.png -------------------------------------------------------------------------------- /sequences/birds/00000052.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000052.png -------------------------------------------------------------------------------- /sequences/birds/00000053.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000053.png -------------------------------------------------------------------------------- /sequences/birds/00000054.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000054.png -------------------------------------------------------------------------------- /sequences/birds/00000055.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000055.png -------------------------------------------------------------------------------- /sequences/birds/00000056.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000056.png -------------------------------------------------------------------------------- /sequences/birds/00000057.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000057.png -------------------------------------------------------------------------------- /sequences/birds/00000058.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000058.png -------------------------------------------------------------------------------- /sequences/birds/00000059.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000059.png -------------------------------------------------------------------------------- /sequences/birds/00000060.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000060.png -------------------------------------------------------------------------------- /sequences/birds/00000061.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000061.png -------------------------------------------------------------------------------- /sequences/birds/00000062.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000062.png -------------------------------------------------------------------------------- /sequences/birds/00000063.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000063.png -------------------------------------------------------------------------------- /sequences/birds/00000064.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000064.png -------------------------------------------------------------------------------- /sequences/birds/00000065.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000065.png -------------------------------------------------------------------------------- /sequences/birds/00000066.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000066.png -------------------------------------------------------------------------------- /sequences/birds/00000067.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000067.png -------------------------------------------------------------------------------- /sequences/birds/00000068.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000068.png -------------------------------------------------------------------------------- /sequences/birds/00000069.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000069.png -------------------------------------------------------------------------------- /sequences/birds/00000070.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000070.png -------------------------------------------------------------------------------- /sequences/birds/00000071.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000071.png -------------------------------------------------------------------------------- /sequences/birds/00000072.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000072.png -------------------------------------------------------------------------------- /sequences/birds/00000073.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000073.png -------------------------------------------------------------------------------- /sequences/birds/00000074.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000074.png -------------------------------------------------------------------------------- /sequences/birds/00000075.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000075.png -------------------------------------------------------------------------------- /sequences/birds/00000076.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000076.png -------------------------------------------------------------------------------- /sequences/birds/00000077.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000077.png -------------------------------------------------------------------------------- /sequences/birds/00000078.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000078.png -------------------------------------------------------------------------------- /sequences/birds/00000079.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000079.png -------------------------------------------------------------------------------- /sequences/birds/00000080.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000080.png -------------------------------------------------------------------------------- /sequences/birds/00000081.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000081.png -------------------------------------------------------------------------------- /sequences/birds/00000082.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000082.png -------------------------------------------------------------------------------- /sequences/birds/00000083.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000083.png -------------------------------------------------------------------------------- /sequences/birds/00000084.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000084.png -------------------------------------------------------------------------------- /sequences/birds/00000085.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000085.png -------------------------------------------------------------------------------- /sequences/birds/00000086.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000086.png -------------------------------------------------------------------------------- /sequences/birds/00000087.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000087.png -------------------------------------------------------------------------------- /sequences/birds/00000088.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000088.png -------------------------------------------------------------------------------- /sequences/birds/00000089.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000089.png -------------------------------------------------------------------------------- /sequences/birds/00000090.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000090.png -------------------------------------------------------------------------------- /sequences/birds/00000091.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000091.png -------------------------------------------------------------------------------- /sequences/birds/00000092.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000092.png -------------------------------------------------------------------------------- /sequences/birds/00000093.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000093.png -------------------------------------------------------------------------------- /sequences/birds/00000094.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000094.png -------------------------------------------------------------------------------- /sequences/birds/00000095.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000095.png -------------------------------------------------------------------------------- /sequences/birds/00000096.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000096.png -------------------------------------------------------------------------------- /sequences/birds/00000097.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000097.png -------------------------------------------------------------------------------- /sequences/birds/00000098.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000098.png -------------------------------------------------------------------------------- /sequences/birds/00000099.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000099.png -------------------------------------------------------------------------------- /sequences/birds/00000100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000100.png -------------------------------------------------------------------------------- /sequences/birds/00000101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000101.png -------------------------------------------------------------------------------- /sequences/birds/00000102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000102.png -------------------------------------------------------------------------------- /sequences/birds/00000103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000103.png -------------------------------------------------------------------------------- /sequences/birds/00000104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000104.png -------------------------------------------------------------------------------- /sequences/birds/00000105.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000105.png -------------------------------------------------------------------------------- /sequences/birds/00000106.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000106.png -------------------------------------------------------------------------------- /sequences/birds/00000107.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000107.png -------------------------------------------------------------------------------- /sequences/birds/00000108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000108.png -------------------------------------------------------------------------------- /sequences/birds/00000109.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000109.png -------------------------------------------------------------------------------- /sequences/birds/00000110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000110.png -------------------------------------------------------------------------------- /sequences/birds/00000111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000111.png -------------------------------------------------------------------------------- /sequences/birds/00000112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000112.png -------------------------------------------------------------------------------- /sequences/birds/00000113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000113.png -------------------------------------------------------------------------------- /sequences/birds/00000114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000114.png -------------------------------------------------------------------------------- /sequences/birds/00000115.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000115.png -------------------------------------------------------------------------------- /sequences/birds/00000116.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000116.png -------------------------------------------------------------------------------- /sequences/birds/00000117.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000117.png -------------------------------------------------------------------------------- /sequences/birds/00000118.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000118.png -------------------------------------------------------------------------------- /sequences/birds/00000119.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000119.png -------------------------------------------------------------------------------- /sequences/birds/00000120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000120.png -------------------------------------------------------------------------------- /sequences/birds/00000121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000121.png -------------------------------------------------------------------------------- /sequences/birds/00000122.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000122.png -------------------------------------------------------------------------------- /sequences/birds/00000123.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000123.png -------------------------------------------------------------------------------- /sequences/birds/00000124.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000124.png -------------------------------------------------------------------------------- /sequences/birds/00000125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000125.png -------------------------------------------------------------------------------- /sequences/birds/00000126.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000126.png -------------------------------------------------------------------------------- /sequences/birds/00000127.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000127.png -------------------------------------------------------------------------------- /sequences/birds/00000128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000128.png -------------------------------------------------------------------------------- /sequences/birds/00000129.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000129.png -------------------------------------------------------------------------------- /sequences/birds/00000130.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000130.png -------------------------------------------------------------------------------- /sequences/birds/00000131.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000131.png -------------------------------------------------------------------------------- /sequences/birds/00000132.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000132.png -------------------------------------------------------------------------------- /sequences/birds/00000133.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000133.png -------------------------------------------------------------------------------- /sequences/birds/00000134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000134.png -------------------------------------------------------------------------------- /sequences/birds/00000135.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000135.png -------------------------------------------------------------------------------- /sequences/birds/00000136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000136.png -------------------------------------------------------------------------------- /sequences/birds/00000137.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000137.png -------------------------------------------------------------------------------- /sequences/birds/00000138.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000138.png -------------------------------------------------------------------------------- /sequences/birds/00000139.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000139.png -------------------------------------------------------------------------------- /sequences/birds/00000140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000140.png -------------------------------------------------------------------------------- /sequences/birds/00000141.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000141.png -------------------------------------------------------------------------------- /sequences/birds/00000142.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000142.png -------------------------------------------------------------------------------- /sequences/birds/00000143.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000143.png -------------------------------------------------------------------------------- /sequences/birds/00000144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000144.png -------------------------------------------------------------------------------- /sequences/birds/00000145.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000145.png -------------------------------------------------------------------------------- /sequences/birds/00000146.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000146.png -------------------------------------------------------------------------------- /sequences/birds/00000147.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000147.png -------------------------------------------------------------------------------- /sequences/birds/00000148.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000148.png -------------------------------------------------------------------------------- /sequences/birds/00000149.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000149.png -------------------------------------------------------------------------------- /sequences/birds/00000150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000150.png -------------------------------------------------------------------------------- /sequences/birds/00000151.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000151.png -------------------------------------------------------------------------------- /sequences/birds/00000152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000152.png -------------------------------------------------------------------------------- /sequences/birds/00000153.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000153.png -------------------------------------------------------------------------------- /sequences/birds/00000154.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000154.png -------------------------------------------------------------------------------- /sequences/birds/00000155.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000155.png -------------------------------------------------------------------------------- /sequences/birds/00000156.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000156.png -------------------------------------------------------------------------------- /sequences/birds/00000157.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000157.png -------------------------------------------------------------------------------- /sequences/birds/00000158.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000158.png -------------------------------------------------------------------------------- /sequences/birds/00000159.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000159.png -------------------------------------------------------------------------------- /sequences/birds/00000160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000160.png -------------------------------------------------------------------------------- /sequences/birds/00000161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000161.png -------------------------------------------------------------------------------- /sequences/birds/00000162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000162.png -------------------------------------------------------------------------------- /sequences/birds/00000163.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000163.png -------------------------------------------------------------------------------- /sequences/birds/00000164.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000164.png -------------------------------------------------------------------------------- /sequences/birds/00000165.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000165.png -------------------------------------------------------------------------------- /sequences/birds/00000166.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000166.png -------------------------------------------------------------------------------- /sequences/birds/00000167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000167.png -------------------------------------------------------------------------------- /sequences/birds/00000168.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000168.png -------------------------------------------------------------------------------- /sequences/birds/00000169.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000169.png -------------------------------------------------------------------------------- /sequences/birds/00000170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000170.png -------------------------------------------------------------------------------- /sequences/birds/00000171.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000171.png -------------------------------------------------------------------------------- /sequences/birds/00000172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000172.png -------------------------------------------------------------------------------- /sequences/birds/00000173.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000173.png -------------------------------------------------------------------------------- /sequences/birds/00000174.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000174.png -------------------------------------------------------------------------------- /sequences/birds/00000175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000175.png -------------------------------------------------------------------------------- /sequences/birds/00000176.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000176.png -------------------------------------------------------------------------------- /sequences/birds/00000177.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000177.png -------------------------------------------------------------------------------- /sequences/birds/00000178.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000178.png -------------------------------------------------------------------------------- /sequences/birds/00000179.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000179.png -------------------------------------------------------------------------------- /sequences/birds/00000180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000180.png -------------------------------------------------------------------------------- /sequences/birds/00000181.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000181.png -------------------------------------------------------------------------------- /sequences/birds/00000182.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000182.png -------------------------------------------------------------------------------- /sequences/birds/00000183.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000183.png -------------------------------------------------------------------------------- /sequences/birds/00000184.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000184.png -------------------------------------------------------------------------------- /sequences/birds/00000185.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000185.png -------------------------------------------------------------------------------- /sequences/birds/00000186.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000186.png -------------------------------------------------------------------------------- /sequences/birds/00000187.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000187.png -------------------------------------------------------------------------------- /sequences/birds/00000188.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000188.png -------------------------------------------------------------------------------- /sequences/birds/00000189.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000189.png -------------------------------------------------------------------------------- /sequences/birds/00000190.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000190.png -------------------------------------------------------------------------------- /sequences/birds/00000191.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000191.png -------------------------------------------------------------------------------- /sequences/birds/00000192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000192.png -------------------------------------------------------------------------------- /sequences/birds/00000193.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000193.png -------------------------------------------------------------------------------- /sequences/birds/00000194.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000194.png -------------------------------------------------------------------------------- /sequences/birds/00000195.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000195.png -------------------------------------------------------------------------------- /sequences/birds/00000196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000196.png -------------------------------------------------------------------------------- /sequences/birds/00000197.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000197.png -------------------------------------------------------------------------------- /sequences/birds/00000198.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000198.png -------------------------------------------------------------------------------- /sequences/birds/00000199.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000199.png -------------------------------------------------------------------------------- /sequences/birds/00000200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000200.png -------------------------------------------------------------------------------- /sequences/birds/00000201.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000201.png -------------------------------------------------------------------------------- /sequences/birds/00000202.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000202.png -------------------------------------------------------------------------------- /sequences/birds/00000203.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000203.png -------------------------------------------------------------------------------- /sequences/birds/00000204.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000204.png -------------------------------------------------------------------------------- /sequences/birds/00000205.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000205.png -------------------------------------------------------------------------------- /sequences/birds/00000206.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000206.png -------------------------------------------------------------------------------- /sequences/birds/00000207.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000207.png -------------------------------------------------------------------------------- /sequences/birds/00000208.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000208.png -------------------------------------------------------------------------------- /sequences/birds/00000209.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000209.png -------------------------------------------------------------------------------- /sequences/birds/00000210.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000210.png -------------------------------------------------------------------------------- /sequences/birds/00000211.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000211.png -------------------------------------------------------------------------------- /sequences/birds/00000212.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000212.png -------------------------------------------------------------------------------- /sequences/birds/00000213.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000213.png -------------------------------------------------------------------------------- /sequences/birds/00000214.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000214.png -------------------------------------------------------------------------------- /sequences/birds/00000215.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000215.png -------------------------------------------------------------------------------- /sequences/birds/00000216.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000216.png -------------------------------------------------------------------------------- /sequences/birds/00000217.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000217.png -------------------------------------------------------------------------------- /sequences/birds/00000218.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000218.png -------------------------------------------------------------------------------- /sequences/birds/00000219.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000219.png -------------------------------------------------------------------------------- /sequences/birds/00000220.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000220.png -------------------------------------------------------------------------------- /sequences/birds/00000221.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000221.png -------------------------------------------------------------------------------- /sequences/birds/00000222.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000222.png -------------------------------------------------------------------------------- /sequences/birds/00000223.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000223.png -------------------------------------------------------------------------------- /sequences/birds/00000224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000224.png -------------------------------------------------------------------------------- /sequences/birds/00000225.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000225.png -------------------------------------------------------------------------------- /sequences/birds/00000226.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000226.png -------------------------------------------------------------------------------- /sequences/birds/00000227.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000227.png -------------------------------------------------------------------------------- /sequences/birds/00000228.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000228.png -------------------------------------------------------------------------------- /sequences/birds/00000229.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000229.png -------------------------------------------------------------------------------- /sequences/birds/00000230.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000230.png -------------------------------------------------------------------------------- /sequences/birds/00000231.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000231.png -------------------------------------------------------------------------------- /sequences/birds/00000232.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000232.png -------------------------------------------------------------------------------- /sequences/birds/00000233.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000233.png -------------------------------------------------------------------------------- /sequences/birds/00000234.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000234.png -------------------------------------------------------------------------------- /sequences/birds/00000235.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000235.png -------------------------------------------------------------------------------- /sequences/birds/00000236.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000236.png -------------------------------------------------------------------------------- /sequences/birds/00000237.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000237.png -------------------------------------------------------------------------------- /sequences/birds/00000238.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000238.png -------------------------------------------------------------------------------- /sequences/birds/00000239.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000239.png -------------------------------------------------------------------------------- /sequences/birds/00000240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000240.png -------------------------------------------------------------------------------- /sequences/birds/00000241.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000241.png -------------------------------------------------------------------------------- /sequences/birds/00000242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000242.png -------------------------------------------------------------------------------- /sequences/birds/00000243.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000243.png -------------------------------------------------------------------------------- /sequences/birds/00000244.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000244.png -------------------------------------------------------------------------------- /sequences/birds/00000245.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000245.png -------------------------------------------------------------------------------- /sequences/birds/00000246.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000246.png -------------------------------------------------------------------------------- /sequences/birds/00000247.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000247.png -------------------------------------------------------------------------------- /sequences/birds/00000248.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000248.png -------------------------------------------------------------------------------- /sequences/birds/00000249.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000249.png -------------------------------------------------------------------------------- /sequences/birds/00000250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000250.png -------------------------------------------------------------------------------- /sequences/birds/00000251.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000251.png -------------------------------------------------------------------------------- /sequences/birds/00000252.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000252.png -------------------------------------------------------------------------------- /sequences/birds/00000253.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000253.png -------------------------------------------------------------------------------- /sequences/birds/00000254.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000254.png -------------------------------------------------------------------------------- /sequences/birds/00000255.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000255.png -------------------------------------------------------------------------------- /sequences/birds/00000256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000256.png -------------------------------------------------------------------------------- /sequences/birds/00000257.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000257.png -------------------------------------------------------------------------------- /sequences/birds/00000258.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000258.png -------------------------------------------------------------------------------- /sequences/birds/00000259.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000259.png -------------------------------------------------------------------------------- /sequences/birds/00000260.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000260.png -------------------------------------------------------------------------------- /sequences/birds/00000261.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000261.png -------------------------------------------------------------------------------- /sequences/birds/00000262.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000262.png -------------------------------------------------------------------------------- /sequences/birds/00000263.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000263.png -------------------------------------------------------------------------------- /sequences/birds/00000264.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000264.png -------------------------------------------------------------------------------- /sequences/birds/00000265.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000265.png -------------------------------------------------------------------------------- /sequences/birds/00000266.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000266.png -------------------------------------------------------------------------------- /sequences/birds/00000267.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000267.png -------------------------------------------------------------------------------- /sequences/birds/00000268.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000268.png -------------------------------------------------------------------------------- /sequences/birds/00000269.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000269.png -------------------------------------------------------------------------------- /sequences/birds/00000270.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/00000270.png -------------------------------------------------------------------------------- /sequences/birds/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/sequences/birds/Thumbs.db -------------------------------------------------------------------------------- /sequences/birds/camera_motion.label: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 0 22 | 0 23 | 0 24 | 0 25 | 0 26 | 0 27 | 0 28 | 0 29 | 0 30 | 0 31 | 0 32 | 0 33 | 0 34 | 0 35 | 0 36 | 0 37 | 0 38 | 0 39 | 0 40 | 0 41 | 0 42 | 0 43 | 0 44 | 0 45 | 0 46 | 0 47 | 0 48 | 0 49 | 0 50 | 0 51 | 0 52 | 0 53 | 0 54 | 0 55 | 0 56 | 0 57 | 0 58 | 0 59 | 0 60 | 0 61 | 0 62 | 0 63 | 0 64 | 0 65 | 0 66 | 0 67 | 0 68 | 0 69 | 0 70 | 0 71 | 0 72 | 0 73 | 0 74 | 0 75 | 0 76 | 0 77 | 0 78 | 0 79 | 0 80 | 0 81 | 0 82 | 0 83 | 0 84 | 0 85 | 0 86 | 0 87 | 0 88 | 0 89 | 0 90 | 0 91 | 0 92 | 0 93 | 0 94 | 0 95 | 0 96 | 0 97 | 0 98 | 0 99 | 0 100 | 0 101 | 0 102 | 0 103 | 0 104 | 0 105 | 0 106 | 0 107 | 0 108 | 0 109 | 0 110 | 0 111 | 0 112 | 0 113 | 0 114 | 0 115 | 0 116 | 0 117 | 0 118 | 0 119 | 0 120 | 0 121 | 0 122 | 0 123 | 0 124 | 0 125 | 0 126 | 0 127 | 0 128 | 0 129 | 0 130 | 0 131 | 0 132 | 0 133 | 0 134 | 0 135 | 0 136 | 0 137 | 0 138 | 0 139 | 0 140 | 0 141 | 0 142 | 0 143 | 0 144 | 0 145 | 0 146 | 0 147 | 0 148 | 0 149 | 0 150 | 0 151 | 0 152 | 0 153 | 0 154 | 0 155 | 0 156 | 0 157 | 0 158 | 0 159 | 0 160 | 0 161 | 0 162 | 0 163 | 0 164 | 0 165 | 0 166 | 0 167 | 0 168 | 0 169 | 0 170 | 0 171 | 0 172 | 0 173 | 0 174 | 0 175 | 0 176 | 0 177 | 0 178 | 0 179 | 0 180 | 0 181 | 0 182 | 0 183 | 0 184 | 0 185 | 0 186 | 0 187 | 0 188 | 0 189 | 0 190 | 0 191 | 0 192 | 0 193 | 0 194 | 0 195 | 0 196 | 0 197 | 0 198 | 0 199 | 0 200 | 0 201 | 0 202 | 0 203 | 0 204 | 0 205 | 0 206 | 0 207 | 0 208 | 0 209 | 0 210 | 0 211 | 0 212 | 0 213 | 0 214 | 0 215 | 0 216 | 0 217 | 0 218 | 0 219 | 0 220 | 0 221 | 0 222 | 0 223 | 0 224 | 0 225 | 0 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 0 237 | 0 238 | 0 239 | 0 240 | 0 241 | 0 242 | 0 243 | 0 244 | 0 245 | 0 246 | 0 247 | 0 248 | 0 249 | 0 250 | 0 251 | 0 252 | 0 253 | 0 254 | 0 255 | 0 256 | 0 257 | 0 258 | 0 259 | 0 260 | 0 261 | 0 262 | 0 263 | 0 264 | 0 265 | 0 266 | 0 267 | 0 268 | 0 269 | 0 270 | 0 271 | -------------------------------------------------------------------------------- /sequences/birds/dynamics_change.label: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 0 22 | 0 23 | 0 24 | 0 25 | 0 26 | 0 27 | 0 28 | 0 29 | 0 30 | 0 31 | 0 32 | 0 33 | 0 34 | 0 35 | 0 36 | 0 37 | 0 38 | 0 39 | 0 40 | 0 41 | 0 42 | 0 43 | 0 44 | 0 45 | 0 46 | 0 47 | 0 48 | 0 49 | 0 50 | 0 51 | 0 52 | 0 53 | 0 54 | 0 55 | 0 56 | 0 57 | 0 58 | 0 59 | 0 60 | 0 61 | 0 62 | 0 63 | 0 64 | 0 65 | 0 66 | 0 67 | 0 68 | 0 69 | 0 70 | 0 71 | 0 72 | 0 73 | 0 74 | 0 75 | 0 76 | 0 77 | 0 78 | 0 79 | 0 80 | 0 81 | 0 82 | 0 83 | 0 84 | 0 85 | 0 86 | 0 87 | 0 88 | 0 89 | 0 90 | 0 91 | 0 92 | 0 93 | 0 94 | 0 95 | 0 96 | 0 97 | 0 98 | 0 99 | 0 100 | 0 101 | 0 102 | 0 103 | 0 104 | 0 105 | 0 106 | 0 107 | 0 108 | 0 109 | 0 110 | 0 111 | 0 112 | 0 113 | 0 114 | 0 115 | 0 116 | 0 117 | 0 118 | 0 119 | 0 120 | 0 121 | 0 122 | 0 123 | 0 124 | 0 125 | 0 126 | 0 127 | 0 128 | 0 129 | 0 130 | 0 131 | 0 132 | 0 133 | 0 134 | 0 135 | 0 136 | 0 137 | 0 138 | 0 139 | 0 140 | 0 141 | 0 142 | 0 143 | 0 144 | 0 145 | 0 146 | 0 147 | 0 148 | 0 149 | 0 150 | 0 151 | 0 152 | 0 153 | 0 154 | 0 155 | 0 156 | 0 157 | 0 158 | 0 159 | 0 160 | 0 161 | 0 162 | 0 163 | 0 164 | 0 165 | 0 166 | 0 167 | 0 168 | 0 169 | 0 170 | 0 171 | 0 172 | 0 173 | 0 174 | 0 175 | 0 176 | 0 177 | 0 178 | 0 179 | 0 180 | 0 181 | 0 182 | 0 183 | 0 184 | 0 185 | 0 186 | 0 187 | 0 188 | 0 189 | 0 190 | 0 191 | 0 192 | 0 193 | 0 194 | 0 195 | 0 196 | 0 197 | 0 198 | 0 199 | 0 200 | 0 201 | 0 202 | 0 203 | 0 204 | 0 205 | 0 206 | 0 207 | 0 208 | 0 209 | 0 210 | 0 211 | 0 212 | 0 213 | 0 214 | 0 215 | 0 216 | 0 217 | 0 218 | 0 219 | 0 220 | 0 221 | 0 222 | 0 223 | 0 224 | 0 225 | 0 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 0 237 | 0 238 | 0 239 | 0 240 | 0 241 | 0 242 | 0 243 | 0 244 | 0 245 | 0 246 | 0 247 | 0 248 | 0 249 | 0 250 | 0 251 | 0 252 | 0 253 | 0 254 | 0 255 | 0 256 | 0 257 | 0 258 | 0 259 | 0 260 | 0 261 | 0 262 | 0 263 | 0 264 | 0 265 | 0 266 | 0 267 | 0 268 | 0 269 | 0 270 | 0 271 | -------------------------------------------------------------------------------- /sequences/birds/motion_change.label: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 0 22 | 0 23 | 0 24 | 0 25 | 0 26 | 0 27 | 0 28 | 0 29 | 0 30 | 0 31 | 0 32 | 0 33 | 0 34 | 0 35 | 0 36 | 0 37 | 0 38 | 0 39 | 0 40 | 0 41 | 0 42 | 0 43 | 0 44 | 0 45 | 0 46 | 0 47 | 0 48 | 0 49 | 0 50 | 1 51 | 1 52 | 1 53 | 1 54 | 1 55 | 1 56 | 1 57 | 1 58 | 1 59 | 1 60 | 1 61 | 1 62 | 1 63 | 1 64 | 1 65 | 1 66 | 1 67 | 1 68 | 1 69 | 1 70 | 1 71 | 1 72 | 1 73 | 1 74 | 1 75 | 1 76 | 1 77 | 1 78 | 1 79 | 1 80 | 1 81 | 1 82 | 1 83 | 1 84 | 1 85 | 1 86 | 1 87 | 1 88 | 1 89 | 1 90 | 1 91 | 1 92 | 1 93 | 1 94 | 1 95 | 1 96 | 0 97 | 0 98 | 0 99 | 0 100 | 0 101 | 0 102 | 0 103 | 0 104 | 0 105 | 0 106 | 0 107 | 0 108 | 0 109 | 0 110 | 0 111 | 0 112 | 0 113 | 0 114 | 0 115 | 0 116 | 0 117 | 0 118 | 0 119 | 0 120 | 0 121 | 0 122 | 0 123 | 0 124 | 0 125 | 0 126 | 0 127 | 0 128 | 0 129 | 0 130 | 0 131 | 0 132 | 0 133 | 0 134 | 0 135 | 0 136 | 0 137 | 0 138 | 0 139 | 0 140 | 0 141 | 0 142 | 0 143 | 0 144 | 0 145 | 0 146 | 0 147 | 0 148 | 0 149 | 0 150 | 0 151 | 1 152 | 1 153 | 1 154 | 1 155 | 1 156 | 1 157 | 1 158 | 1 159 | 1 160 | 1 161 | 1 162 | 1 163 | 1 164 | 1 165 | 1 166 | 1 167 | 1 168 | 1 169 | 1 170 | 1 171 | 1 172 | 1 173 | 1 174 | 1 175 | 1 176 | 1 177 | 1 178 | 1 179 | 1 180 | 1 181 | 1 182 | 1 183 | 1 184 | 1 185 | 1 186 | 1 187 | 1 188 | 1 189 | 1 190 | 1 191 | 1 192 | 1 193 | 1 194 | 1 195 | 1 196 | 1 197 | 1 198 | 1 199 | 1 200 | 1 201 | 1 202 | 1 203 | 1 204 | 1 205 | 1 206 | 1 207 | 1 208 | 1 209 | 1 210 | 1 211 | 1 212 | 1 213 | 1 214 | 1 215 | 1 216 | 1 217 | 1 218 | 0 219 | 0 220 | 0 221 | 0 222 | 0 223 | 0 224 | 0 225 | 0 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 0 237 | 0 238 | 0 239 | 0 240 | 0 241 | 0 242 | 0 243 | 0 244 | 0 245 | 0 246 | 0 247 | 0 248 | 0 249 | 0 250 | 0 251 | 0 252 | 0 253 | 0 254 | 0 255 | 0 256 | 0 257 | 0 258 | 0 259 | 0 260 | 0 261 | 0 262 | 0 263 | 0 264 | 0 265 | 0 266 | 0 267 | 0 268 | 0 269 | 0 270 | 0 271 | -------------------------------------------------------------------------------- /sequences/birds/occlusion.label: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 0 22 | 0 23 | 0 24 | 0 25 | 0 26 | 0 27 | 0 28 | 0 29 | 0 30 | 0 31 | 0 32 | 0 33 | 0 34 | 0 35 | 0 36 | 0 37 | 0 38 | 0 39 | 0 40 | 0 41 | 0 42 | 0 43 | 0 44 | 0 45 | 0 46 | 0 47 | 0 48 | 0 49 | 0 50 | 0 51 | 0 52 | 0 53 | 0 54 | 0 55 | 0 56 | 0 57 | 0 58 | 0 59 | 0 60 | 0 61 | 0 62 | 0 63 | 0 64 | 0 65 | 0 66 | 0 67 | 0 68 | 0 69 | 0 70 | 0 71 | 0 72 | 0 73 | 0 74 | 0 75 | 0 76 | 0 77 | 0 78 | 0 79 | 0 80 | 0 81 | 0 82 | 0 83 | 0 84 | 0 85 | 0 86 | 0 87 | 0 88 | 0 89 | 0 90 | 0 91 | 0 92 | 0 93 | 0 94 | 0 95 | 0 96 | 0 97 | 0 98 | 0 99 | 0 100 | 0 101 | 0 102 | 0 103 | 0 104 | 0 105 | 0 106 | 0 107 | 0 108 | 0 109 | 0 110 | 0 111 | 0 112 | 0 113 | 0 114 | 0 115 | 0 116 | 0 117 | 0 118 | 0 119 | 0 120 | 0 121 | 0 122 | 0 123 | 0 124 | 0 125 | 0 126 | 0 127 | 0 128 | 0 129 | 0 130 | 1 131 | 1 132 | 1 133 | 1 134 | 1 135 | 1 136 | 1 137 | 1 138 | 1 139 | 1 140 | 1 141 | 1 142 | 1 143 | 1 144 | 1 145 | 0 146 | 0 147 | 0 148 | 0 149 | 0 150 | 0 151 | 0 152 | 0 153 | 0 154 | 0 155 | 0 156 | 0 157 | 0 158 | 0 159 | 0 160 | 0 161 | 0 162 | 0 163 | 0 164 | 0 165 | 0 166 | 0 167 | 0 168 | 0 169 | 0 170 | 0 171 | 0 172 | 0 173 | 0 174 | 0 175 | 0 176 | 0 177 | 0 178 | 0 179 | 0 180 | 0 181 | 0 182 | 0 183 | 0 184 | 0 185 | 0 186 | 0 187 | 0 188 | 0 189 | 0 190 | 0 191 | 0 192 | 0 193 | 0 194 | 0 195 | 0 196 | 0 197 | 0 198 | 0 199 | 0 200 | 0 201 | 0 202 | 0 203 | 0 204 | 0 205 | 0 206 | 0 207 | 0 208 | 0 209 | 0 210 | 0 211 | 0 212 | 0 213 | 0 214 | 0 215 | 0 216 | 0 217 | 0 218 | 0 219 | 0 220 | 0 221 | 0 222 | 0 223 | 0 224 | 0 225 | 0 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 0 237 | 0 238 | 0 239 | 0 240 | 0 241 | 0 242 | 0 243 | 0 244 | 0 245 | 0 246 | 0 247 | 0 248 | 0 249 | 0 250 | 0 251 | 0 252 | 0 253 | 0 254 | 0 255 | 0 256 | 0 257 | 0 258 | 0 259 | 0 260 | 0 261 | 0 262 | 0 263 | 0 264 | 0 265 | 0 266 | 0 267 | 0 268 | 0 269 | 0 270 | 0 271 | -------------------------------------------------------------------------------- /sequences/birds/size_change.label: -------------------------------------------------------------------------------- 1 | 1 2 | 1 3 | 1 4 | 1 5 | 1 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1 11 | 1 12 | 1 13 | 1 14 | 1 15 | 1 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 21 | 1 22 | 1 23 | 1 24 | 1 25 | 1 26 | 1 27 | 1 28 | 1 29 | 1 30 | 1 31 | 1 32 | 1 33 | 1 34 | 1 35 | 1 36 | 1 37 | 1 38 | 1 39 | 1 40 | 1 41 | 1 42 | 1 43 | 1 44 | 1 45 | 1 46 | 1 47 | 1 48 | 1 49 | 1 50 | 0 51 | 0 52 | 0 53 | 0 54 | 0 55 | 0 56 | 0 57 | 0 58 | 0 59 | 0 60 | 0 61 | 0 62 | 0 63 | 0 64 | 0 65 | 0 66 | 0 67 | 0 68 | 0 69 | 0 70 | 0 71 | 0 72 | 0 73 | 0 74 | 0 75 | 0 76 | 0 77 | 0 78 | 0 79 | 0 80 | 0 81 | 0 82 | 0 83 | 0 84 | 0 85 | 0 86 | 0 87 | 0 88 | 0 89 | 0 90 | 0 91 | 0 92 | 0 93 | 0 94 | 0 95 | 0 96 | 0 97 | 0 98 | 0 99 | 0 100 | 0 101 | 0 102 | 0 103 | 0 104 | 0 105 | 0 106 | 0 107 | 0 108 | 0 109 | 0 110 | 0 111 | 0 112 | 0 113 | 0 114 | 0 115 | 0 116 | 0 117 | 0 118 | 0 119 | 0 120 | 0 121 | 0 122 | 0 123 | 0 124 | 0 125 | 0 126 | 0 127 | 0 128 | 0 129 | 0 130 | 0 131 | 0 132 | 0 133 | 0 134 | 0 135 | 0 136 | 0 137 | 0 138 | 0 139 | 0 140 | 0 141 | 0 142 | 0 143 | 0 144 | 0 145 | 0 146 | 0 147 | 0 148 | 0 149 | 0 150 | 0 151 | 0 152 | 0 153 | 0 154 | 0 155 | 0 156 | 0 157 | 0 158 | 0 159 | 0 160 | 0 161 | 0 162 | 0 163 | 0 164 | 0 165 | 0 166 | 0 167 | 0 168 | 0 169 | 0 170 | 0 171 | 0 172 | 0 173 | 0 174 | 0 175 | 0 176 | 0 177 | 0 178 | 0 179 | 0 180 | 0 181 | 0 182 | 0 183 | 0 184 | 0 185 | 0 186 | 0 187 | 0 188 | 0 189 | 0 190 | 0 191 | 0 192 | 0 193 | 0 194 | 0 195 | 0 196 | 0 197 | 0 198 | 0 199 | 0 200 | 0 201 | 0 202 | 0 203 | 0 204 | 0 205 | 0 206 | 0 207 | 0 208 | 0 209 | 0 210 | 0 211 | 0 212 | 0 213 | 0 214 | 0 215 | 0 216 | 0 217 | 0 218 | 0 219 | 0 220 | 0 221 | 0 222 | 0 223 | 0 224 | 0 225 | 0 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 0 237 | 0 238 | 0 239 | 0 240 | 0 241 | 0 242 | 0 243 | 0 244 | 0 245 | 0 246 | 0 247 | 0 248 | 0 249 | 0 250 | 0 251 | 0 252 | 0 253 | 0 254 | 0 255 | 0 256 | 0 257 | 0 258 | 1 259 | 1 260 | 1 261 | 1 262 | 1 263 | 1 264 | 1 265 | 1 266 | 1 267 | 1 268 | 1 269 | 1 270 | 1 271 | -------------------------------------------------------------------------------- /sequences/list.txt: -------------------------------------------------------------------------------- 1 | bird 2 | birds 3 | boat1 4 | boat2 5 | car1 6 | car2 7 | crouching 8 | crowd 9 | depthwise_crossing 10 | dog 11 | excavator 12 | garden 13 | hiding 14 | jacket 15 | mixed_distractors 16 | quadrocopter 17 | quadrocopter2 18 | ragged 19 | running_rhino 20 | saturated 21 | selma 22 | soccer 23 | street 24 | trees1 25 | trees2 26 | -------------------------------------------------------------------------------- /util/Cal_scale.m: -------------------------------------------------------------------------------- 1 | function [scale_3]=Cal_scale(response) 2 | 3 | response(:,:,2)= response(:,:,2)*0.94; %1.05 size 4 | response(:,:,3)= response(:,:,3)*0.94; %0.95 size 5 | maxr=max(response(:)); 6 | % a=response(:,:,1); 7 | b=response(:,:,2); 8 | c=response(:,:,3); 9 | % max1=max(a(:)); 10 | max2=max(b(:)); 11 | max3= max(c(:)); 12 | 13 | if max2==maxr 14 | scales=2; 15 | elseif max3==maxr 16 | scales=3; 17 | else 18 | scales=1; 19 | end 20 | scale_3=scales; 21 | end -------------------------------------------------------------------------------- /util/avgnh.m: -------------------------------------------------------------------------------- 1 | function total = avgnh(r, c, A) 2 | n = numel(r); 3 | T = r+A; 4 | T(T<0)=0; 5 | w = exp(0.5*T.*T/c); 6 | total = (1/n)*sum(w)-2.72; 7 | 8 | -------------------------------------------------------------------------------- /util/cal_window.m: -------------------------------------------------------------------------------- 1 | % this function calculates the scaling image patch cetered by pos 2 | function [im_s1]=cal_window(im,pos,sz_ori,scaling) 3 | 4 | sz=floor(sz_ori*scaling); 5 | ww_s=(1:sz(2)) - floor(sz(2)/2); 6 | hh_s=(1:sz(1)) - floor(sz(1)/2); 7 | xs_s = floor(pos(2)) + ww_s; 8 | ys_s = floor(pos(1)) + hh_s; 9 | 10 | xs_s(xs_s < 1) = 1; 11 | ys_s(ys_s < 1) = 1; 12 | xs_s(xs_s > size(im,2)) = size(im,2); 13 | ys_s(ys_s > size(im,1)) = size(im,1); 14 | im_s1=im(ys_s,xs_s,:); 15 | im_s1=imresize(im_s1,sz_ori); 16 | 17 | end -------------------------------------------------------------------------------- /util/find_nh_scale.m: -------------------------------------------------------------------------------- 1 | function c = find_nh_scale(regrets,A) 2 | 3 | %%first find an upper and lower bound on c, based on the nh weights 4 | clower = 1.0; counter=0; 5 | while (avgnh(regrets, clower, A) < 0) && counter<30 6 | clower = clower * 0.5; 7 | counter=counter+1; 8 | end 9 | 10 | cupper = 1.0;counter=0; 11 | while (avgnh(regrets, cupper, A) > 0) && counter<30 12 | cupper = cupper * 2; 13 | counter=counter+1; 14 | end 15 | 16 | %now do a binary search 17 | 18 | cmid = (cupper + clower)/2;counter=0; 19 | while(abs(avgnh(regrets, cmid, A)) > 1e-2) && counter<30 20 | if (avgnh(regrets, cmid, A) > 1e-2) 21 | clower = cmid; 22 | cmid = (cmid + cupper)/2; 23 | else 24 | cupper = cmid; 25 | cmid = (cmid + clower)/2; 26 | end 27 | counter = counter+1; 28 | end 29 | 30 | c = cmid; 31 | 32 | -------------------------------------------------------------------------------- /util/gaussian_shaped_labels.m: -------------------------------------------------------------------------------- 1 | function labels = gaussian_shaped_labels(sigma, sz) 2 | %GAUSSIAN_SHAPED_LABELS 3 | % Gaussian-shaped labels for all shifts of a sample. 4 | % 5 | % LABELS = GAUSSIAN_SHAPED_LABELS(SIGMA, SZ) 6 | % Creates an array of labels (regression targets) for all shifts of a 7 | % sample of dimensions SZ. The output will have size SZ, representing 8 | % one label for each possible shift. The labels will be Gaussian-shaped, 9 | % with the peak at 0-shift (top-left element of the array), decaying 10 | % as the distance increases, and wrapping around at the borders. 11 | % The Gaussian function has spatial bandwidth SIGMA. 12 | % 13 | % Joao F. Henriques, 2014 14 | % http://www.isr.uc.pt/~henriques/ 15 | 16 | 17 | % %as a simple example, the limit sigma = 0 would be a Dirac delta, 18 | % %instead of a Gaussian: 19 | % labels = zeros(sz(1:2)); %labels for all shifted samples 20 | % labels(1,1) = magnitude; %label for 0-shift (original sample) 21 | 22 | 23 | %evaluate a Gaussian with the peak at the center element 24 | [rs, cs] = ndgrid((1:sz(1)) - floor(sz(1)/2), (1:sz(2)) - floor(sz(2)/2)); 25 | labels = exp(-0.5 / sigma^2 * (rs.^2 + cs.^2)); 26 | 27 | %move the peak to the top-left, with wrap-around 28 | labels = circshift(labels, -floor(sz(1:2) / 2) + 1); 29 | 30 | %sanity check: make sure it's really at top-left 31 | assert(labels(1,1) == 1) 32 | 33 | end 34 | 35 | -------------------------------------------------------------------------------- /util/get_axis_aligned_BB.m: -------------------------------------------------------------------------------- 1 | % ------------------------------------------------------------------------------------------------- 2 | function [cx, cy, w, h] = get_axis_aligned_BB(region) 3 | %GETAXISALIGNEDBB computes axis-aligned bbox with same area as the rotated one (REGION) 4 | % ------------------------------------------------------------------------------------------------- 5 | nv = numel(region); 6 | assert(nv==8 || nv==4); 7 | 8 | if nv==8 9 | cx = mean(region(1:2:end)); 10 | cy = mean(region(2:2:end)); 11 | x1 = min(region(1:2:end)); 12 | x2 = max(region(1:2:end)); 13 | y1 = min(region(2:2:end)); 14 | y2 = max(region(2:2:end)); 15 | A1 = norm(region(1:2) - region(3:4)) * norm(region(3:4) - region(5:6)); 16 | A2 = (x2 - x1) * (y2 - y1); 17 | s = sqrt(A1/A2); 18 | w = s * (x2 - x1) + 1; 19 | h = s * (y2 - y1) + 1; 20 | else 21 | x = region(1); 22 | y = region(2); 23 | w = region(3); 24 | h = region(4); 25 | cx = x+w/2; 26 | cy = y+h/2; 27 | end 28 | -------------------------------------------------------------------------------- /util/get_features.m: -------------------------------------------------------------------------------- 1 | function feat = get_features(im, cos_window, layers) 2 | %GET_FEATURES 3 | % Extracts dense features from image. 4 | 5 | 6 | global net 7 | 8 | sz_window=size(cos_window); 9 | 10 | img = single(im); % note: 255 range 11 | img = imResample(img, net.normalization.imageSize(1:2)); 12 | img = img - net.normalization.averageImage; 13 | img = gpuArray(img); 14 | 15 | % run the CNN 16 | res=vl_simplenn(net,img); 17 | 18 | feat={}; 19 | 20 | for ii=1:length(layers) 21 | 22 | x=gather(res(layers(ii)).x); 23 | 24 | x = imResample(x, sz_window(1:2)); 25 | 26 | 27 | %process with cosine window if needed 28 | if ~isempty(cos_window), 29 | x = bsxfun(@times, x, cos_window); 30 | end 31 | 32 | feat{ii}=x; 33 | 34 | end 35 | end 36 | -------------------------------------------------------------------------------- /util/get_features_gray.m: -------------------------------------------------------------------------------- 1 | function x = get_features_gray(im, cos_window) 2 | %GET_FEATURES 3 | % Extracts dense features from image. 4 | % 5 | % X = GET_FEATURES(IM, FEATURES, CELL_SIZE) 6 | % Extracts features specified in struct FEATURES, from image IM. The 7 | % features should be densely sampled, in cells or intervals of CELL_SIZE. 8 | % The output has size [height in cells, width in cells, features]. 9 | % 10 | % To specify HOG features, set field 'hog' to true, and 11 | % 'hog_orientations' to the number of bins. 12 | % 13 | % To experiment with other features simply add them to this function 14 | % and include any needed parameters in the FEATURES struct. To allow 15 | % combinations of features, stack them with x = cat(3, x, new_feat). 16 | % 17 | % Joao F. Henriques, 2014 18 | % http://www.isr.uc.pt/~henriques/ 19 | 20 | sz_window=size(cos_window); 21 | %gray-level (scalar feature) 22 | x = single(im) / 255; 23 | 24 | x = x - mean(x(:)); 25 | x = imResample(x, sz_window(1:2)); 26 | 27 | %process with cosine window if needed 28 | if ~isempty(cos_window), 29 | x = bsxfun(@times, x, cos_window); 30 | end 31 | 32 | end 33 | -------------------------------------------------------------------------------- /util/get_search_window.m: -------------------------------------------------------------------------------- 1 | function window_sz = get_search_window( target_sz, im_sz, padding) 2 | 3 | % For objects with large height, we restrict the search window with padding.height 4 | if target_sz(1)/target_sz(2)>2 5 | window_sz = floor(target_sz.*[1+padding.height, 1+padding.generic]); 6 | 7 | % For objects with large height and width and accounting for at least 10 percent of the whole image, 8 | % we only search 2x height and width 9 | elseif prod(target_sz)/prod(im_sz(1:2))>0.05 10 | window_sz=floor(target_sz*(1+padding.large)); 11 | 12 | %otherwise, we use the padding configuration 13 | else 14 | window_sz = floor(target_sz * (1 + padding.generic)); 15 | end 16 | 17 | 18 | end 19 | 20 | -------------------------------------------------------------------------------- /util/get_subwindow.m: -------------------------------------------------------------------------------- 1 | function out = get_subwindow(im, pos, sz,scaling) 2 | %GET_SUBWINDOW Obtain sub-window from image, with replication-padding. 3 | % Returns sub-window of image IM centered at POS ([y, x] coordinates), 4 | % with size SZ ([height, width]). If any pixels are outside of the image, 5 | % they will replicate the values at the borders. 6 | % 7 | % Joao F. Henriques, 2014 8 | % http://www.isr.uc.pt/~henriques/ 9 | 10 | if isscalar(sz), %square sub-window 11 | sz = [sz, sz]; 12 | end 13 | 14 | ys = floor(pos(1)) + (1:sz(1)) - floor(sz(1)/2); 15 | xs = floor(pos(2)) + (1:sz(2)) - floor(sz(2)/2); 16 | 17 | 18 | %check for out-of-bounds coordinates, and set them to the values at 19 | %the borders 20 | xs(xs < 1) = 1; 21 | ys(ys < 1) = 1; 22 | xs(xs > size(im,2)) = size(im,2); 23 | ys(ys > size(im,1)) = size(im,1); 24 | 25 | %extract image 26 | im_s1=cal_window(im,pos,sz,scaling); 27 | im_s2=cal_window(im,pos,sz,scaling*1.02); 28 | im_s3=cal_window(im,pos,sz,scaling*0.95); 29 | out=cat(4,im_s1,im_s2,im_s3); 30 | %out = im(ys, xs, :); 31 | 32 | end 33 | 34 | -------------------------------------------------------------------------------- /util/imResample.m: -------------------------------------------------------------------------------- 1 | function B = imResample( A, scale, method, norm ) 2 | % Fast bilinear image downsampling/upsampling. 3 | % 4 | % Gives similar results to imresize with the bilinear option and 5 | % antialiasing turned off if scale is near 1, except sometimes the final 6 | % dims are off by 1 pixel. For very small values of the scale imresize is 7 | % faster but only looks at subset of values of original image. 8 | % 9 | % This code requires SSE2 to compile and run (most modern Intel and AMD 10 | % processors support SSE2). Please see: http://en.wikipedia.org/wiki/SSE2. 11 | % 12 | % USAGE 13 | % B = imResample( A, scale, [method], [norm] ) 14 | % 15 | % INPUT 16 | % A - input image (2D or 3D single, double or uint8 array) 17 | % scale - scalar resize factor [s] of target height and width [h w] 18 | % method - ['bilinear'] either 'bilinear' or 'nearest' 19 | % norm - [1] optionally multiply every output pixel by norm 20 | % 21 | % OUPUT 22 | % B - resampled image 23 | % 24 | % EXAMPLE 25 | % I=single(imread('cameraman.tif')); n=100; s=1/2; method='bilinear'; 26 | % tic, for i=1:n, I1=imresize(I,s,method,'Antialiasing',0); end; toc 27 | % tic, for i=1:n, I2=imResample(I,s,method); end; toc 28 | % figure(1); im(I1); figure(2); im(I2); 29 | % 30 | % See also imresize 31 | % 32 | % Piotr's Computer Vision Matlab Toolbox Version 3.24 33 | % Copyright 2014 Piotr Dollar. [pdollar-at-gmail.com] 34 | % Licensed under the Simplified BSD License [see external/bsd.txt] 35 | 36 | % figure out method and get target dimensions 37 | if( nargin<3 || isempty(method) ), bilinear=1; else 38 | if(~all(ischar(method))), error('method must be a string'); end 39 | bilinear = ~strcmpi(method,'nearest'); 40 | end 41 | if( nargin<4 || isempty(norm) ), norm=1; end 42 | [m,n,~]=size(A); k=numel(scale); 43 | same = (k==1 && scale==1) | (k==2 && m==scale(1) && n==scale(2)); 44 | if( same && norm==1 ); B=A; return; end 45 | 46 | if( bilinear ) 47 | % use bilinear interpolation 48 | if(k==1), m1=round(scale*m); n1=round(scale*n); 49 | else m1=scale(1); n1=scale(2); end 50 | B=imResampleMex(A,m1,n1,norm); 51 | else 52 | % use nearest neighbor interpolation 53 | if(k==1), sy=scale; sx=sy; m1=ceil(m*sy); n1=ceil(n*sx); 54 | else m1=scale(1); n1=scale(2); sy=m1/m; sx=n1/n; end 55 | y=(1:m1)'; y=floor(y/sy-.5/sy+1); y=min(max(1,y),m); 56 | x=(1:n1)'; x=floor(x/sx-.5/sx+1); x=min(max(1,x),n); 57 | nd=ndims(A); if(nd==2), B=A(y,x); elseif(nd==3), B=A(y,x,:); 58 | else ids={y,x}; ids(3:nd)={':'}; B=A(ids{:}); end 59 | if(norm~=1), B=B*norm; end 60 | end 61 | -------------------------------------------------------------------------------- /util/imResampleMex.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/util/imResampleMex.mexa64 -------------------------------------------------------------------------------- /util/imResampleMex.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/util/imResampleMex.mexw64 -------------------------------------------------------------------------------- /util/initial_net.m: -------------------------------------------------------------------------------- 1 | 2 | function initial_net(pathModel) 3 | global net; 4 | net = load(pathModel); 5 | net.layers(37+1:end)=[]; 6 | net=vl_simplenn_move(net,'gpu'); 7 | end 8 | -------------------------------------------------------------------------------- /util/initialize_region.m: -------------------------------------------------------------------------------- 1 | function [pos,target_size]=initialize_region(region) 2 | if numel(region) > 4 3 | x1 = round(min(region(1:2:end))); 4 | x2 = round(max(region(1:2:end))); 5 | y1 = round(min(region(2:2:end))); 6 | y2 = round(max(region(2:2:end))); 7 | region = round([x1, y1, x2 - x1, y2 - y1]); 8 | else 9 | region = round([round(region(1)), round(region(2)), ... 10 | round(region(1) + region(3)) - round(region(1)), ... 11 | round(region(2) + region(4)) - round(region(2))]); 12 | end; 13 | 14 | x1 = max(0, region(1)); 15 | y1 = max(0, region(2)); 16 | % x2 = min(width-1, region(1) + region(3) - 1); 17 | % y2 = min(height-1, region(2) + region(4) - 1); 18 | 19 | target_size=[y2 - y1 + 1,x2 - x1 + 1]; 20 | pos=[y2 + y1 + 1,x2 + x1 + 1]/2; -------------------------------------------------------------------------------- /util/load_video_info.m: -------------------------------------------------------------------------------- 1 | % ------------------------------------------------------------------------------------------------- 2 | function [img_files, pos, target_sz] = load_video_info(base_path, video) 3 | %LOAD_VOT_VIDEO_INFO 4 | % Loads all the relevant information for the video in the given path: 5 | % the list of image files (cell array of strings), initial position 6 | % (1x2), target size (1x2), the ground truth information for precision 7 | % calculations (Nx4, for N frames), and the path where the images are 8 | % located. The ordering of coordinates and sizes is always [y, x]. 9 | % 10 | % Joao F. Henriques, 2014 11 | % http://www.isr.uc.pt/~henriques/ 12 | % ------------------------------------------------------------------------------------------------- 13 | %full path to the video's files 14 | if base_path(end) ~= '/' && base_path(end) ~= '\', 15 | base_path(end+1) = '/'; 16 | end 17 | video_path = [base_path video '/']; 18 | 19 | %load ground truth from text file 20 | %ground_truth = csvread([base_path '/' video '/' 'groundtruth.txt']); 21 | %vottir 22 | ground_truth = csvread([base_path video '/' 'groundtruth.txt']); 23 | region = ground_truth(1, :); 24 | [cx, cy, w, h] = get_axis_aligned_BB(region); 25 | pos = [cy cx]; % centre of the bounding box 26 | target_sz = [h w]; 27 | 28 | %load all jpg files in the folder 29 | %img_files = dir([video_path '*.jpg']); 30 | img_files = dir([video_path '*.png']);% vottir png 31 | assert(~isempty(img_files), 'No image files to load.') 32 | img_files = sort({img_files.name}); 33 | 34 | %eliminate frame 0 if it exists, since frames should only start at 1 35 | img_files(strcmp('00000000.jpg', img_files)) = []; 36 | img_files = strcat(video_path, img_files); 37 | % read all frames at once 38 | % imgs = vl_imreadjpeg(img_files,'numThreads', 12); 39 | % imgs=ceil(1,numel(img_files)); 40 | % for i=1:numel(img_files) 41 | % imgs{1,i}=imread(img_files{1,i}); 42 | % end 43 | 44 | end 45 | 46 | -------------------------------------------------------------------------------- /util/show_video.m: -------------------------------------------------------------------------------- 1 | function update_visualization_func = show_video(img_files, video_path, resize_image) 2 | %SHOW_VIDEO 3 | % Visualizes a tracker in an interactive figure, given a cell array of 4 | % image file names, their path, and whether to resize the images to 5 | % half size or not. 6 | % 7 | % This function returns an UPDATE_VISUALIZATION function handle, that 8 | % can be called with a frame number and a bounding box [x, y, width, 9 | % height], as soon as the results for a new frame have been calculated. 10 | % This way, your results are shown in real-time, but they are also 11 | % remembered so you can navigate and inspect the video afterwards. 12 | % Press 'Esc' to send a stop signal (returned by UPDATE_VISUALIZATION). 13 | % 14 | % Joao F. Henriques, 2014 15 | % http://www.isr.uc.pt/~henriques/ 16 | 17 | 18 | %store one instance per frame 19 | num_frames = numel(img_files); 20 | boxes = cell(num_frames,1); 21 | 22 | %create window 23 | [fig_h, axes_h, unused, scroll] = videofig(num_frames, @redraw, [], [], @on_key_press); %#ok, unused outputs 24 | set(fig_h, 'Name', ['Tracker - MCFTS' video_path]) 25 | axis off; 26 | 27 | %image and rectangle handles start empty, they are initialized later 28 | im_h = []; 29 | rect_h = []; 30 | text_h=[]; 31 | refbox=[]; 32 | ref_h=[]; 33 | update_visualization_func = @update_visualization; 34 | stop_tracker = false; 35 | 36 | 37 | function stop = update_visualization(frame, box) 38 | %store the tracker instance for one frame, and show it. returns 39 | %true if processing should stop (user pressed 'Esc'). 40 | if iscell(box) 41 | refbox=box; 42 | for i=1:length(box) 43 | boxes{frame} = box{end}; 44 | scroll(frame); 45 | end 46 | else 47 | boxes{frame} = box; 48 | scroll(frame); 49 | end 50 | 51 | stop = stop_tracker; 52 | end 53 | 54 | function redraw(frame) 55 | brushstyle={ struct('color',[1,1,0],'lineStyle',':'),...%yellow 56 | struct('color',[1,0,1],'lineStyle','-.'),...%pink 57 | struct('color',[0,1,1],'lineStyle','-.'),... 58 | struct('color',[136,0,21]/255,'lineStyle','-.'),...%dark red 59 | struct('color',[255,127,39]/255,'lineStyle','-.'),...%orange 60 | struct('color',[0,162,232]/255,'lineStyle','-.'),...%Turquoise 61 | struct('color',[163,73,164]/255,'lineStyle','-.')};%purple 62 | %render main image 63 | im = imread([video_path img_files{frame}]); 64 | 65 | if isempty(im_h), %create image 66 | im_h = imshow(im, 'Border','tight', 'InitialMag',200, 'Parent',axes_h); 67 | else %just update it 68 | set(im_h, 'CData', im) 69 | end 70 | 71 | 72 | 73 | 74 | %render target bounding box for this frame 75 | if isempty(rect_h), %create it for the first time 76 | rect_h = rectangle('Position',[0,0,1,1], 'LineWidth',1,'EdgeColor','g', 'Parent',axes_h); 77 | end 78 | if ~isempty(refbox) 79 | if isempty(ref_h) 80 | delete(rect_h); 81 | for i=1:length(refbox)-1 82 | ref_h(i)= rectangle('Position',[0,0,1,1], 'LineWidth',1,'EdgeColor',brushstyle{i}.color, 'Parent',axes_h); 83 | end 84 | rect_h = rectangle('Position',[0,0,1,1], 'LineWidth',1,'EdgeColor','r', 'Parent',axes_h); 85 | end 86 | end 87 | if ~isempty(boxes{frame}), 88 | hold on 89 | 90 | if ~isempty(refbox) 91 | for i=1:length(refbox)-1 92 | set(ref_h(i), 'Visible', 'on', 'Position', refbox{i}); 93 | end 94 | end 95 | set(rect_h, 'Visible', 'on', 'Position', boxes{frame}); 96 | delete(text_h); 97 | text_h=text(10,10,num2str(frame),'color','yellow','FontSize',20,'FontWeight','bold','Parent',axes_h); 98 | else 99 | set(rect_h, 'Visible', 'off'); 100 | set(text_h, 'Visible', 'off'); 101 | end 102 | end 103 | 104 | function on_key_press(key) 105 | if strcmp(key, 'escape'), %stop on 'Esc' 106 | stop_tracker = true; 107 | end 108 | end 109 | 110 | end 111 | 112 | -------------------------------------------------------------------------------- /util/videofig.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QiaoLiuHit/MCFTS/88008d3b6ef5d496af27e9784796febf929f996b/util/videofig.m --------------------------------------------------------------------------------