From afb8b4f98bab53e85f2e5a3e7b3d11f0c9207ec7 Mon Sep 17 00:00:00 2001 From: Joseph Redmon Date: Wed, 22 Jun 2016 21:46:32 -0700 Subject: [PATCH] CVPR prep --- Makefile | 8 +- cfg/yolo-coco.cfg | 4 +- data/labels/aeroplane.png | Bin 713 -> 713 bytes data/labels/airplane.png | Bin 629 -> 629 bytes data/labels/apple.png | Bin 537 -> 537 bytes data/labels/backpack.png | Bin 610 -> 610 bytes data/labels/banana.png | Bin 494 -> 494 bytes data/labels/baseball bat.png | Bin 657 -> 657 bytes data/labels/baseball glove.png | Bin 833 -> 833 bytes data/labels/bear.png | Bin 520 -> 520 bytes data/labels/bed.png | Bin 497 -> 497 bytes data/labels/bench.png | Bin 583 -> 583 bytes data/labels/bicycle.png | Bin 635 -> 635 bytes data/labels/bird.png | Bin 480 -> 480 bytes data/labels/boat.png | Bin 517 -> 517 bytes data/labels/book.png | Bin 500 -> 500 bytes data/labels/bottle.png | Bin 547 -> 547 bytes data/labels/bowl.png | Bin 541 -> 541 bytes data/labels/broccoli.png | Bin 579 -> 579 bytes data/labels/bus.png | Bin 466 -> 466 bytes data/labels/cake.png | Bin 541 -> 541 bytes data/labels/car.png | Bin 436 -> 436 bytes data/labels/carrot.png | Bin 550 -> 550 bytes data/labels/cat.png | Bin 438 -> 438 bytes data/labels/cell phone.png | Bin 711 -> 711 bytes data/labels/chair.png | Bin 518 -> 518 bytes data/labels/clock.png | Bin 501 -> 501 bytes data/labels/couch.png | Bin 535 -> 535 bytes data/labels/cow.png | Bin 517 -> 517 bytes data/labels/cup.png | Bin 474 -> 474 bytes data/labels/dining table.png | Bin 785 -> 785 bytes data/labels/diningtable.png | Bin 779 -> 779 bytes data/labels/dog.png | Bin 535 -> 535 bytes data/labels/donut.png | Bin 559 -> 559 bytes data/labels/elephant.png | Bin 653 -> 653 bytes data/labels/fire hydrant.png | Bin 812 -> 812 bytes data/labels/fork.png | Bin 488 -> 488 bytes data/labels/frisbee.png | Bin 602 -> 602 bytes data/labels/giraffe.png | Bin 588 -> 588 bytes data/labels/hair drier.png | Bin 666 -> 666 bytes data/labels/handbag.png | Bin 661 -> 661 bytes data/labels/horse.png | Bin 575 -> 575 bytes data/labels/hot dog.png | Bin 640 -> 640 bytes data/labels/keyboard.png | Bin 806 -> 806 bytes data/labels/kite.png | Bin 471 -> 471 bytes data/labels/knife.png | Bin 526 -> 526 bytes data/labels/laptop.png | Bin 561 -> 561 bytes data/labels/microwave.png | Bin 841 -> 841 bytes data/labels/motorbike.png | Bin 745 -> 745 bytes data/labels/motorcycle.png | Bin 762 -> 762 bytes data/labels/mouse.png | Bin 606 -> 606 bytes data/labels/orange.png | Bin 634 -> 634 bytes data/labels/oven.png | Bin 552 -> 552 bytes data/labels/parking meter.png | Bin 853 -> 853 bytes data/labels/person.png | Bin 633 -> 633 bytes data/labels/pizza.png | Bin 515 -> 515 bytes data/labels/potted plant.png | Bin 789 -> 789 bytes data/labels/pottedplant.png | Bin 785 -> 785 bytes data/labels/refrigerator.png | Bin 761 -> 761 bytes data/labels/remote.png | Bin 593 -> 593 bytes data/labels/sandwich.png | Bin 777 -> 777 bytes data/labels/scissors.png | Bin 583 -> 583 bytes data/labels/sheep.png | Bin 571 -> 571 bytes data/labels/sink.png | Bin 475 -> 475 bytes data/labels/skateboard.png | Bin 836 -> 836 bytes data/labels/skis.png | Bin 459 -> 459 bytes data/labels/snowboard.png | Bin 819 -> 819 bytes data/labels/sofa.png | Bin 527 -> 527 bytes data/labels/spoon.png | Bin 560 -> 560 bytes data/labels/sports ball.png | Bin 698 -> 698 bytes data/labels/stop sign.png | Bin 744 -> 744 bytes data/labels/suitcase.png | Bin 669 -> 669 bytes data/labels/surfboard.png | Bin 752 -> 752 bytes data/labels/teddy bear.png | Bin 765 -> 765 bytes data/labels/tennis racket.png | Bin 806 -> 806 bytes data/labels/tie.png | Bin 411 -> 411 bytes data/labels/toaster.png | Bin 628 -> 628 bytes data/labels/toilet.png | Bin 509 -> 509 bytes data/labels/toothbrush.png | Bin 700 -> 700 bytes data/labels/traffic light.png | Bin 709 -> 709 bytes data/labels/train.png | Bin 474 -> 474 bytes data/labels/truck.png | Bin 509 -> 509 bytes data/labels/tv.png | Bin 374 -> 374 bytes data/labels/tvmonitor.png | Bin 654 -> 654 bytes data/labels/umbrella.png | Bin 654 -> 654 bytes data/labels/vase.png | Bin 552 -> 552 bytes data/labels/wine glass.png | Bin 771 -> 771 bytes data/labels/zebra.png | Bin 584 -> 584 bytes src/coco.c | 50 ++---------- src/convolutional_kernels.cu | 3 +- src/{coco_demo.c => demo.c} | 95 ++++++++++++++--------- src/demo.h | 7 ++ src/detection_layer.c | 11 +-- src/image.c | 1 + src/layer.h | 1 + src/parser.c | 1 + src/yolo.c | 13 ++-- src/yolo_demo.c | 135 --------------------------------- 98 files changed, 93 insertions(+), 236 deletions(-) rename src/{coco_demo.c => demo.c} (57%) create mode 100644 src/demo.h delete mode 100644 src/yolo_demo.c diff --git a/Makefile b/Makefile index f3e4b792..6569ac4d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -GPU=1 -CUDNN=1 -OPENCV=1 +GPU=0 +CUDNN=0 +OPENCV=0 DEBUG=0 ARCH= --gpu-architecture=compute_52 --gpu-code=compute_52 @@ -41,7 +41,7 @@ CFLAGS+= -DCUDNN LDFLAGS+= -lcudnn endif -OBJ=gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o darknet.o detection_layer.o imagenet.o captcha.o route_layer.o writing.o box.o nightmare.o normalization_layer.o avgpool_layer.o coco.o dice.o yolo.o layer.o compare.o classifier.o local_layer.o swag.o shortcut_layer.o activation_layer.o rnn_layer.o gru_layer.o rnn.o rnn_vid.o crnn_layer.o coco_demo.o tag.o cifar.o yolo_demo.o go.o batchnorm_layer.o art.o +OBJ=gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o darknet.o detection_layer.o imagenet.o captcha.o route_layer.o writing.o box.o nightmare.o normalization_layer.o avgpool_layer.o coco.o dice.o yolo.o layer.o compare.o classifier.o local_layer.o swag.o shortcut_layer.o activation_layer.o rnn_layer.o gru_layer.o rnn.o rnn_vid.o crnn_layer.o demo.o tag.o cifar.o go.o batchnorm_layer.o art.o ifeq ($(GPU), 1) LDFLAGS+= -lstdc++ OBJ+=convolutional_kernels.o deconvolutional_kernels.o activation_kernels.o im2col_kernels.o col2im_kernels.o blas_kernels.o crop_layer_kernels.o dropout_layer_kernels.o maxpool_layer_kernels.o softmax_layer_kernels.o network_kernels.o avgpool_layer_kernels.o diff --git a/cfg/yolo-coco.cfg b/cfg/yolo-coco.cfg index 0c13a312..88438ae9 100644 --- a/cfg/yolo-coco.cfg +++ b/cfg/yolo-coco.cfg @@ -1,6 +1,6 @@ [net] -batch=64 -subdivisions=4 +batch=1 +subdivisions=1 height=448 width=448 channels=3 diff --git a/data/labels/aeroplane.png b/data/labels/aeroplane.png index a939a2ddfe1e8ad8e6bcb38daa44115ebd907af7..5b2f1d73cefba80a4772b01983ea68b45170f4c0 100644 GIT binary patch delta 83 zcmX@fdXjZQ3D*NQaTXnwS*kqj8|!W|N}1^znCTiBg%}xHnV47^o9P;uTNxNUy*wv$ Tav_sA4(Tazm7AZEnO4bQWMGJ0L&8CZUz5KvDgywCv>X`# delta 101 zcmbQqGLvOO3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnbQmR0aU%%^p_( diff --git a/data/labels/backpack.png b/data/labels/backpack.png index a0d665ffd04dd1d0d7e08bc546af070e2bc9cbc5..32a9a4a09d1f19d55a1358985154b04e942a1021 100644 GIT binary patch delta 101 zcmaFF@`z)!ag8WRNi0dV%FR#7OsixtGBCuh;d`9m<;gZoY5?l@9E|_~ delta 101 zcmaFF@`zShPpzm7AZEnO4bQWMGJ0L&8CZUz1NUssI4IyBul& delta 101 zcmaFI{Em4-3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dncb_Q~>}P;~uC0 diff --git a/data/labels/baseball bat.png b/data/labels/baseball bat.png index 0c2a03dd8071d191b9a9e2abfb5aff384a37af04..134830eff03f1ef3a2a60a7d832fb061adad1b00 100644 GIT binary patch delta 101 zcmbQpI+1lk3D*NQaTXnUZM~<;8|&sVdYkDQnCTiBg%}xHnV47^8|oUETNxNAlq|Z< lz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0L!hQq`s8#bEdY<{8qNR! delta 101 zcmbQpI+1lk3D)!ag8WRNi0dV%FR#7OsixtGBCuhAy88)eX=OC4gi}<8jt`0 delta 101 zcmX@ec93mC3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnb!B>i_@`Q62RF diff --git a/data/labels/bear.png b/data/labels/bear.png index f924210f49278daf3c89ed4154cd1835ead63eab..22470687b9275b171ca1e8e7f2c4213b8e71ec22 100644 GIT binary patch delta 101 zcmeBR>0p^q!u5bnoJB`2M)T^{jdik&-e$T6X1Yd3Ax4H)CMH(K2D%33Rt5%b%q#O5 l7#LJbTq8;;P94G() delta 101 zcmeBR>0p^q!gZfpip_|nGa@f*W1TFcx2dk7p{|i>h>?+%sezS&iLQZ#m4SiP^_*4) l1_sp<*NBpo#FA92-29Zxv`Pje14HZ@yt}SgPJYIy1OR-$8_fU! diff --git a/data/labels/bed.png b/data/labels/bed.png index d5906989ef400fdc450f3440d34cb30de9db0831..c316d709c59a48b0c85ad878cd9cb63e1d691484 100644 GIT binary patch delta 83 zcmey!{E>M=3D*NQaTXoLSN=abHrBB-N}1^znCTiBg%}xHnV47^8|xaFTNxN^f4%wB TM=3D)!ag8WRNi0dV%FR#7OsixtGBCuhVO>thyvZs|$^f}x8|(l8 delta 101 zcmX@ka-3yC3DShPpzm7AZEnO4bQWMGJ0!<0Uimy^SoQ~}#C9K`?t delta 101 zcmey(@|$Hs3D l7#LJbTq8Kd7b7#Ufa8dw>a>l#>C85nTemq|?S RWfaFDU6pih$>e>EN&vup7LWh{ diff --git a/data/labels/boat.png b/data/labels/boat.png index f8e6cda56b689d784584a6d10536e8d6923cb399..b43070e555ae614719875aa52b6522b89ec1f04b 100644 GIT binary patch delta 101 zcmZo=X=RyE!u5bnoJB`vmMRbX#yTlRZ!=v3GhHL25Fsekrd2W+85m;MFr`oB<>beVN&s8T8}9%B delta 101 zcmZo=X=RyE!gZfpip_{!AkhB8#yTlRZ&O`ELtP`&5F;ZiQv)jlb6o=qD+2>=`!Wdz l1_sp<*NBpo#FA92-29Zxv`Pje14HZ@s*=tvnf#bh2>>HM8p8kp diff --git a/data/labels/book.png b/data/labels/book.png index 46683b94f0dfe1b27c938bc7b604a4cf9c7db0e7..401b513cc68f7741a4121be50631fd84757f81cd 100644 GIT binary patch delta 83 zcmeyu{DpZ!3D*NQaTXn=Vz-q>8|ye3rOb2<%yf;6LW~TpOiZkdO>_;+tqcr`e0pmp SFJu(QAzm7AZEnO4bQWMGJ0L&8CZUz2|`DggkFd>kqO delta 101 zcmbQsGM8mS3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnf;9R006&l^$pS diff --git a/data/labels/broccoli.png b/data/labels/broccoli.png index 8b114b24033d8dc8f648b0f5b26e9d28d414ff36..c96bcfcbe772629587b3a790c0a7c8a045ef8012 100644 GIT binary patch delta 101 zcmX@ia+qa83D*NQaTXngxgICvHr9nOdYkDQnCTiBg%}xHnV47^8|fODTNxM#&e`F{ lz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0L&8CZUz25-)Bv=68@~Vm delta 101 zcmX@ia+qa83DShPpsekrd2W+85m;Ma7Xm0z+_n_H2{g08x;Tm diff --git a/data/labels/bus.png b/data/labels/bus.png index bdd7a01a37e0a1218a7c956ed6b05ac2b2616444..661d6533f06f4aac3d9ffc42667ccbf808d305af 100644 GIT binary patch delta 82 zcmcb_e2IBN3D*NQaTXnwS*kqj6YE|`nduss=^7b@7#Uibm{=K`=^B_@85lghJSTK= S1EV+&=_!3GFDGwgR0IIjy%%@@ delta 82 zcmcb_e2IBN3DKd7b7#Ufa8dw>a>l#>C85nTemq|=+ RU=+t8U6pih$>fcUiU6{V7EAyD diff --git a/data/labels/cake.png b/data/labels/cake.png index 29944474e32dfaf22920f9006b5dda4ffcf609d9..39b8ea5568fcd39f7a7369f70e7ddc9dcca22eb6 100644 GIT binary patch delta 101 zcmbQsGM8mS3D*NQaTXoLSN=abHr5$2dYkDQnCTiBg%}xHnV47^8|xaFTNxN^f4%t= m0|SFRc?MtW?ChKk%1w04ac@|`%V7Ms008wnjUcg delta 101 zcmbQsGM8mS3DShPpsekrd2W+85m;Ma7Xm0z~tYIN&sV)8-M@+ diff --git a/data/labels/car.png b/data/labels/car.png index f3e5c2a0e35ae3649950580d64981a610536572b..430637a851daad0f4faf0bf270f22023b2341397 100644 GIT binary patch delta 100 zcmdnOyoGr}3D*NQaTXnwS*kqj6YEZSo9P;u=^7b@7#Uibm{=K`=^B_@85lghJSUWa lfkCyzHKHUXu_VKd7b7#Ufa8dw>a>l#>C85nTemq{=% kFsPQeMwFx^mZVzc=BH$)RWcYE7-H8@m2_^&t<8 diff --git a/data/labels/carrot.png b/data/labels/carrot.png index 562749f395100d003af77f6d13ca3137ef3bb4a1..5fe7dd3af5e780a1fd7143a27126ea09c8dac523 100644 GIT binary patch delta 83 zcmZ3+vW#Uy3D*NQaTXoLSN=abHr81(N}1^znCTiBg%}xHnV47^8|fODTNxM#&e`EM T`68n@4(Wu048JBbF{uCm{u37j delta 83 zcmZ3+vW#Uy3DKd7b7#Ufa8dw>a>l#>C85nTemq{=% kFsPQeMwFx^mZVzc=BH$)RWcYE7-H8@m2_^&8|$tyN}1^znCTiBg%}xHnV47^o9G&tTNxM>`SjLI S&SMhCAsekrd2W+85m;MFr`oB<>beV$^cxI8}a}E delta 101 zcmZo;X=9mC!gZfpip_{!AkhB8#yTlRZ&O`ELtP`&5F;ZiQv)jlb6o=qD+2>=`!Wdz l1_sp<*NBpo#FA92-29Zxv`Pje14HZ@s*=tvnf#bh82}^*8pZ$s diff --git a/data/labels/clock.png b/data/labels/clock.png index 082dafc3dbdbd907a095d4ac6abe0feedc109133..aacf1e95825f3ae25f8dd645c1af47b68eb2c6e4 100644 GIT binary patch delta 83 zcmey${FQk^3D*NQaTXnA7RQ-OHr8=6N}1^znCTiBg%}xHnV47^o9Y^vTNxN!v2Hst Tc_E`X4(X+7b|sT9F)9N9<*OGn delta 83 zcmey${FQk^3DRc?MtW?ChKk%1w04ac@|`%V7Bs0;uxm>yUF delta 101 zcmbQvGM!~Y3DShPpsekrd2W+85m;Ma7Xm0z~nEC$^cxH8)pCj diff --git a/data/labels/cow.png b/data/labels/cow.png index 53a3bb53d4c8630e774847ef4e032f2c86df4521..c90848484f2d07e4de7ce68e88979d071ffb17c9 100644 GIT binary patch delta 101 zcmZo=X=RyE!u5bnoJB`vmMRbX#yV+6Z!=v3GhHL25Fsekrd2W+85m;MFr`oB<>V)fiU3?78}I-C delta 101 zcmZo=X=RyE!gZfpip_{!AkhB8#yV+6Z&O`ELtP`&5F;ZiQv)jlb6o=qD+2>=`!Wdz l1_sp<*NBpo#FA92-29Zxv`Pje14HZ@s*=tvnf!!N5db5T8pHqq diff --git a/data/labels/cup.png b/data/labels/cup.png index f6b4dbde8e5436ad886dca58ab74113f54fa6782..67caab4bb8610a376cd71067f51c026336b2a891 100644 GIT binary patch delta 100 zcmcb`e2aNP3D*NQaTXngxgICvCf0rMHq$jQ(={>*F*39=F|jf>(ls!*GB6OFv%`&n lfkCyzHKHUXu_VVPTt9=2mnJ0A36X4 diff --git a/data/labels/dining table.png b/data/labels/dining table.png index 68a8f86e56d8aa75fb40a700d601bc844242993a..f5c173e69d2b46d7c783f773de63686412810fec 100644 GIT binary patch delta 101 zcmbQpHj!;Y3D*NQaTXoLSN=abHrB~8d7J4PnCTiBg%}xHnV47^8|xaFTNxN^f4%t= m0|SFRc?MtW?ChKk%1w04ac@|`%Qk%qy+#feI7pm delta 101 zcmbQpHj!;Y3DShPpsekrd2W+85m;Ma7Xm0z~tvlS^!mf8%_WK diff --git a/data/labels/diningtable.png b/data/labels/diningtable.png index 9e11cb13eda9fbd92b8ea173f214f98eddabf186..6fb8ce914eab11a4a61481d464adf65476aa9e46 100644 GIT binary patch delta 83 zcmeBX>t>r!!u5bnoJB|Vt&+{ejdhYtQf9gaX1Yd3Ax4H)CMH(KX1WIERt5%7FV6{` Typc&9hxC*_m6wwrF=+w-(?A!x delta 83 zcmeBX>t>r!!gZfpip_{!AkhB8#yUwRDN|iTLtP`&5F;ZiQv)jlb6o=qD+2>=`!b2i S8=1s$NLMADTQd0(lO_OamlcBm diff --git a/data/labels/dog.png b/data/labels/dog.png index 10455f44ff6e7a69df114d84e817d887b70cbd39..f5cf46b5fc7e68e43b125eaf41970ecc62eeb772 100644 GIT binary patch delta 101 zcmbQvGM!~Y3D*NQaTXobw@Nk>H`eJgdYkDQnCTiBg%}xHnV47^o9h~wTNxNQFPZ+3 mfq_A_#5JNMC9x#cDmOnRGp&-r$iNW02BV+)v6H_sDgpqt#T l7#LJbTq8yd diff --git a/data/labels/donut.png b/data/labels/donut.png index 1c89e6b86bdc54d87c3b24285532b289ac41dd30..79c21f608fa2d5878c6ded1c41bd6870fa1ed29b 100644 GIT binary patch delta 101 zcmZ3_vYur^3D*NQaTXoLSN=abHr6>adYkDQnCTiBg%}xHnV47^8|xaFTNxN^f4%t= m0|SFRc?MtW?ChKk%1w04ac@|`%UIyQU(A?QXRPf delta 101 zcmZ3_vYur^3DShPpsekrd2W+85m;Ma7Xm0z+@gKWdL+e8pr?u diff --git a/data/labels/elephant.png b/data/labels/elephant.png index 3680eb38a1378a045a6bf15b8a1c64210b8d0c27..ca391e8e2d2b93f208d7f92091ade6842fed98ce 100644 GIT binary patch delta 101 zcmeBW?PZ-%!u5bnoJB`2M)T^{jdk-Fz0GtD%yf;6LW~TpOiZkd4Rj66tqcs>m{;aA lFfgc=xJHzuB$lLF<>sekrd2W+85m;M@I6lO^5k?TH2}Aq96JC2 delta 101 zcmeBW?PZ-%!gZfpip_|nGa@f*W8FMPZ&O`ELtP`&5F;ZiQv)jl6I}xfD+2?o>p86q l3=FCzt`Q|Ei6yC4x%nxXX_X8{28P%*cz0c~oSe?21^}r@8{hx{ diff --git a/data/labels/fire hydrant.png b/data/labels/fire hydrant.png index 21ea2727bbada641261bd701ee60d99e8e92ec98..f78bd90798e680ed6fe818b55949acfec8bd7e66 100644 GIT binary patch delta 83 zcmZ3(wuWs&3D*NQaTXofqY5qj8|y5Yq|9^;%yf;6LW~TpOiZkdEOiactqctA8@^GR Se33~UhxEFfka?4tn6&`F;1);# delta 83 zcmZ3(wuWs&3D*F*39=F|jf>(ls!*GB6OFv%`&n lfkCyzHKHUXu_VVPCmw{1OQSaA8`Nx diff --git a/data/labels/frisbee.png b/data/labels/frisbee.png index d285f33ae544af449e2f74318ae95da88c2e750e..153ef9f5cc2b044ce7ccfa6436e668511ec95eec 100644 GIT binary patch delta 101 zcmcb`a*Jg`3D*NQaTXnUZM~<;8|!iyz0GtD%yf;6LW~TpOiZkd4Rj66tqcs>m{;aA lFfgc=xJHzuB$lLF<>sekrd2W+85m;M@I6lO@?=vcRRE}c8^Hho delta 101 zcmcb`a*Jg`3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dncPRsR95ilO9?C diff --git a/data/labels/giraffe.png b/data/labels/giraffe.png index 70dfbec1681e8ba589dcce543533dd015feab493..dedf3d68ccc63560d9628c3b2ce9bffaa3659ad0 100644 GIT binary patch delta 101 zcmX@Za)xC>3D*NQaTXo97|p9&H`c{5dYkDQnCTiBg%}xHnV47^8|WICTNxO%F|W*L lU|>)!ag8WRNi0dV%FR#7OsixtGBCuh;d`9m<;m(yssPf>95w&| delta 101 zcmX@Za)xC>3DShPpIP SvLll?4(X+7b|sUGm^1*!>lSDL delta 83 zcmbQmI*WBe3DH`WC+dYkDQnCTiBg%}xHnV47^o9h~wTNxNQFPZ+3 lfq_A_#5JNMC9x#cDmOnRGp&-r$iNW02BV+)v6E$(lmXtS93lV! delta 101 zcmdnbvY%x_3D l7#LJbTq8sCG5}zI8mj;R diff --git a/data/labels/hot dog.png b/data/labels/hot dog.png index 537bf774e695f503e8babf25ac66545fb2cb2bca..5812a40b8c7e4f9fa03839a91b301a10083d2762 100644 GIT binary patch delta 101 zcmZo*ZD5^H!u5bnoJB|RmH&^9jdhb4z0GtD%yf;6LW~TpOiZkdjdcyotqcsdzux?b mfq_A_#5JNMC9x#cDmOnRGp&-r$iNW0hGW~f{U%2yd diff --git a/data/labels/keyboard.png b/data/labels/keyboard.png index f4a223225e21155a0811eb97f33d8cad556c537f..3fb76c53a3fcfbbbc4d3a7f327960b53d558813b 100644 GIT binary patch delta 82 zcmZ3+wv25;3D*NQaTXn=Vz-q>8|%!Oq|9^;%yf;6LW~TpOiZkdO>_;+tqcr`e0pmp RpJx)sA8UUFd6z~85 delta 82 zcmZ3+wv25;3DR_j diff --git a/data/labels/kite.png b/data/labels/kite.png index 04629e27f0ed1f454fa127d6e17bae017216764c..b3b96e046ff7285995465a6be0656632e166bf21 100644 GIT binary patch delta 100 zcmcc4e4Tkh3D*NQaTXnUZM~<;6YJi1o9P;u=^7b@7#Uibm{=Jb>Kd3^85k&(EV|9W kz@S><8c~vxSdwa$o1c=IR>@#wV2E8qpr%y%VPTtC>1OPv2A1wd? diff --git a/data/labels/knife.png b/data/labels/knife.png index ab563d8f06443c6a1bb41ebeda171cfc40db214a..28037e3cd3e91b8fc90476b35121ed838af80c50 100644 GIT binary patch delta 101 zcmeBU>0_Bt!u5bnoJB`ruEzsekrd2W+85m;MkZ_RU*W}lX$^d0_Bt!gZfpip_}iUwqu3jdeShPpsekrd2W+85m;M@b>Th-pQ{Sl>yq09xDI< diff --git a/data/labels/laptop.png b/data/labels/laptop.png index d4ec1c5333cc4a3d1ade0358769cc9b42888c162..55d95e8eeed52151321509cb9e94f505c80cbe9e 100644 GIT binary patch delta 101 zcmdnUvXNy%3D*NQaTXn=Vz-q>8|z#cz0GtD%yf;6LW~TpOiZkdO>_;+tqcr`e0pmb l7#LJbTq8ShPpsekrd2W+85m;Ma7Xm0z+_$~6##ZL8qWX# diff --git a/data/labels/microwave.png b/data/labels/microwave.png index ffe97e7212c9e1e332bb9fb8583bb3620167bb52..4bb532682e8b2e90584b0e597baa9bcc224155e1 100644 GIT binary patch delta 83 zcmX@fc9LyE3D*NQaTXn=Vz-q>8|xyOq|9^;%yf;6LW~TpOiZkdO>_;+tqcr`e0pmp Se`FHJAUVbL;8;BQGv-y%<2HX0u~zp diff --git a/data/labels/motorbike.png b/data/labels/motorbike.png index 1363f861e20384891988e826f85495af4a1f75fa..7091ca42b2a5b85f46761e48cd716a6eba7e0599 100644 GIT binary patch delta 83 zcmaFK`jT}*3D*NQaTXobw@Nk>H`e`RlrqybFw-?M3NbRYGBL3-HrF*Uw=ytrUNZgR Tc>t##H0=YGV>Tw delta 83 zcmaFK`jT}*3D*(MnA8E;OcvSz diff --git a/data/labels/motorcycle.png b/data/labels/motorcycle.png index 2f13ec40f42d268c9737015d685b4fdc93901729..fc8b0deb02c8db3830d530e1f48a78ac6ef1ccc5 100644 GIT binary patch delta 83 zcmeyx`ipf!3D*NQaTXn!P3l`_Zmi>Ek}}gZFw-?M3NbRYGBL3-vd}d!w=yuObbCH+ T@ delta 83 zcmeyx`ipf!3D8|#V~z0GtD%yf;6LW~TpOiZkdO>_;+tqcr`e0pmb l7#LJbTq8ShPpsekrd2W+85m;Ma7Xm0z+`JCWdNw58-xG= diff --git a/data/labels/orange.png b/data/labels/orange.png index 5eaf17fee60454ff6666108ad573b34ec39b9a30..9c4363e03c7a1972209b7ddb62c784c830b41f88 100644 GIT binary patch delta 101 zcmeyx@{46c3D*NQaTXngxgICvHrDkrdYkDQnCTiBg%}xHnV47^8|fODTNxM#&e`F{ lz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0L&8CZUz5X_Q~>f{9Gw6F delta 101 zcmeyx@{46c3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnbo6sQ>^^haTGi diff --git a/data/labels/oven.png b/data/labels/oven.png index ba3f0885dbe3efe879cbbfb00bcc6e5fef9b1cfa..cd48c8bdf11b28eb803730c55ecf64bb9a1d933a 100644 GIT binary patch delta 101 zcmZ3%vVvto3D*NQaTXn=Vz-q>8|!Qtz0GtD%yf;6LW~TpOiZkdO>_;+tqcr`e0pmb l7#LJbTq82>^u68ZZC= delta 101 zcmZ3%vVvto3DShPpsekrd2W+85m;Ma7Xm0z+^TiB>-&K8m#~T diff --git a/data/labels/parking meter.png b/data/labels/parking meter.png index dfc3e9695a941ef8487077901726946aa92bff2c..afb6a7aeb7761f0528f31b0114d70eeb987508d5 100644 GIT binary patch delta 101 zcmcc0c9m^H3D*NQaTXofqY5qj8|xC8yv=kC%yf;6LW~TpOiZkdEOiactqctA8@^Fu lU|>)!ag8WRNi0dV%FR#7OsixtGBCuhVO>thyvbV3+5pHl93lV! delta 101 zcmcc0c9m^H3DShPpH`etqdYkDQnCTiBg%}xHnV47^o9h~wTNxNQFPZ+3 lfq_A_#5JNMC9x#cDmOnRGp&-r$iNW02BV+)v6DlYQ~)0I9SHyc delta 101 zcmey#@{?sk3D l7#LJbTq8X=a&F!u5bnoJB|RmH&^9jdkLTQf9gaX1Yd3Ax4H)CMH(K#<~XPRt5&!UvK_2 Tc|D^z4(Vgtxcw$SU{nSG8Oj*0 delta 83 zcmZo>X=a&F!gZfpip_{EJ&fONW1Tpol&P+vp{|i>h>?+%sezS&nXZ9_m4U%pkJ>ep S*E5RakiH{&RABN0Mr8nabQQe- diff --git a/data/labels/potted plant.png b/data/labels/potted plant.png index 00c2c0ff1e97e37c7ce08688e6068d9bf1f9119d..07bb49ca3c60a2ba5bc28866c989f8ce1ba15af5 100644 GIT binary patch delta 101 zcmbQrHkEBc3D*NQaTXoLSN=abHr6RId7J4PnCTiBg%}xHnV47^8|xaFTNxN^f4%t= m0|SFRc?MtW?ChKk%1w04ac@|`%Qk$qy+#j@g7eA delta 101 zcmbQrHkEBc3DShPpsekrd2W+85m;Ma7Xm0z~t9VS^!z?8(sha diff --git a/data/labels/pottedplant.png b/data/labels/pottedplant.png index 4b054c5c54aece87edcf1d956cd15d669ec3a58e..569b86b15ad2bb425045fd4bbebe4e06741ceeae 100644 GIT binary patch delta 101 zcmbQpHj!;Y3D*NQaTXobw@Nk>H`d8Bd7J4PnCTiBg%}xHnV47^o9h~wTNxNQFPZ+3 mfq_A_#5JNMC9x#cDmOnRGp&-r$iNW02BV+)v6EjgX#xPQRvc*n delta 101 zcmbQpHj!;Y3D l7#LJbTq88|&DZq|9^;%yf;6LW~TpOiZkdO>_;+tqcr`e0pmp S&tnqDA8|zXSz0GtD%yf;6LW~TpOiZkdO>_;+tqcr`e0pmb l7#LJbTq8ShPpsekrd2W+85m;Ma7Xm0z+_z}6#$vk8&3cL diff --git a/data/labels/sandwich.png b/data/labels/sandwich.png index 717021a5737a062ec73f03133ea7d998ea0ccf76..5d2d77e66f9c186316a47c475a1f5b0fbd8db4a3 100644 GIT binary patch delta 101 zcmeBV>tvfy!u5bnoJB`ruEzsekrd2W+85m;MkZ_RU*W|}cY5;i08{7Z@ delta 101 zcmeBV>tvfy!gZfpip_}iUwqu3jdfB?-ln>ShPpsekrd2W+85m;M@b>Th-pP-d)Bx4s9vT1u diff --git a/data/labels/scissors.png b/data/labels/scissors.png index 2c58d0fc7198548230588ddf8a36c0975ea2f5e3..b5583c8ad9577b2e74cc78f2711a00b14c79779e 100644 GIT binary patch delta 83 zcmX@ka-3yC3D*NQaTXnA7RQ-OHr7QjN}1^znCTiBg%}xHnV47^o9Y^vTNxN!v2Hst S`2(Xk4(X+7b|sS)nbZK~1s2Kx delta 83 zcmX@ka-3yC3D3D*NQaTXobw@Nk>H`e(xdYkDQnCTiBg%}xHnV47^o9h~wTNxNQFPZ+3 lfq_A_#5JNMC9x#cDmOnRGp&-r$iNW02BV+)v6Cg3lmXf^91;Kk delta 101 zcmdnZvYTZ>3D l7#LJbTq8U4G5}l)8k+zB diff --git a/data/labels/sink.png b/data/labels/sink.png index 4053cd6bea25cb2b75648d0a9a0ab7e9cc796336..d97981e7b5b385b2e24e5a6a53ce06fbe8acf214 100644 GIT binary patch delta 100 zcmcc3e4BYf3D*NQaTXn=Vz-q>6YD;Bo9P;u=^7b@7#Uibm{=K`=o*+?85k7#^wuyi kFsPQeMwFx^mZVzc=BH$)RWcYE7-HAJENFUQ@=iu20MyPK*Z=?k delta 100 zcmcc3e4BYf3D%}>cpt7I@TFvPCmj_6T=$vYX90KI1%RR910 diff --git a/data/labels/skateboard.png b/data/labels/skateboard.png index cbb4c94ed37211a33eb4c492b45e4ae9ff83aeb7..e5df25542375eba061e615d9a13be2860016b876 100644 GIT binary patch delta 101 zcmX@Yc7$z03D*NQaTXnUZM~<;8|#9Zyv=kC%yf;6LW~TpOiZkd4RsC7tqcqlN*3K_ lU|>)!ag8WRNi0dV%FR#7OsixtGBCuhAy88)eXSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnd~Kd3^85k&(EV|9W kz@S><8c~vxSdwa$o1c=IR>@#wV2E8qpr%y%VPF~5V1OPHI9{m6S diff --git a/data/labels/snowboard.png b/data/labels/snowboard.png index 2703ce1c7c3f4b7d2515197db45f4f2944af53b4..8c2b06c72d645f1816bcebb26afd2c54b9c87702 100644 GIT binary patch delta 101 zcmdnYwwY~03D*NQaTXnUZM~<;8|$2zyv=kC%yf;6LW~TpOiZkd4RsC7tqcqlN*3K_ lU|>)!ag8WRNi0dV%FR#7OsixtGBCuhAy88)eKHTTIslDW8eISY delta 101 zcmdnYwwY~03Dad7J7Q8tNLEh8P)HnHpFbnCco>SQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnfZSs{;T5Umd~# diff --git a/data/labels/sofa.png b/data/labels/sofa.png index 5aeea312ec86958512d3ae40c07bdcc0f686cb6e..a555a3106976b444556b5dfcb1f5337044d94956 100644 GIT binary patch delta 101 zcmeBY>1UZx!u5bnoJB|Vt&+{ejdd!F-e$T6X1Yd3Ax4H)CMH(K=DG&vRt5&nOQt_$ lU|>)!ag8WRNi0dV%FR#7OsixtGBCuh!RV)c?ButMN&u{h9AW?f delta 101 zcmeBY>1UZx!gZfpip_{!AkhB8#yS;7Z&O`ELtP`&5F;ZiQv)jlb6o=qD+2>=`!Wdz l1_sp<*NBpo#FA92-29Zxv`Pje14HZ@s*=tvnf#Vf2>>o(8tVW6 diff --git a/data/labels/spoon.png b/data/labels/spoon.png index ebc2d9f9c2d94d6df6d6d30ceced41d490ad9bf9..127dfd192de750296a5ee0697aa2d390712ad0d8 100644 GIT binary patch delta 101 zcmdnMvVmnn3D*NQaTXngxgICvHrBZ?dYkDQnCTiBg%}xHnV47^8|fODTNxM#&e`F{ lz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0L&8CZUz2&6lmVbo8+HHy delta 101 zcmdnMvVmnn3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnfZUDFXogY8|uy diff --git a/data/labels/sports ball.png b/data/labels/sports ball.png index 1a92e7e368b79a99a773099bf050df44f072d3d2..957d37ad9532d654390fa7b92af85f735798d2d3 100644 GIT binary patch delta 83 zcmdnRx{Gx}3D*NQaTXnUZM~<;8|zLmN}1^znCTiBg%}xHnV47^8|oUETNxNAlq|YE SIe|$WhjgH(RQlwJOqu}8?G?)a delta 83 zcmdnRx{Gx}3DrIL)yFRisj^kOzHp>(HGMI diff --git a/data/labels/suitcase.png b/data/labels/suitcase.png index 4c3231b018a6a427039a04fa1f511407313376f0..c5b389828f906850c2f8f565415d6cc6144cdd51 100644 GIT binary patch delta 101 zcmbQsI+t}q3D*NQaTXo97|p9&H`c9V^fuEqFw-?M3NbRYGBL3-HqbRNw=ytjV_uoh lz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!}mDB%ahBQ)BwqB9D4u& delta 101 zcmbQsI+t}q3D%}>cpt7I@TFvPAQP*W;>@<}Fj0G#w2J^%m! delta 100 zcmeys`hj&q3DKd7b7#Ufa8dw>a>Ka&B85qo2kZ#Dp lz@S><8c~vxSdwa$o1c=IR>@#wV2EAA+rRgFC!b_e2LKPS9-{yN diff --git a/data/labels/teddy bear.png b/data/labels/teddy bear.png index c0ea2cc9175d41510c157cc044183b050533ef84..b79fb2092dc73819a4c2daba13cb97b53edf1187 100644 GIT binary patch delta 101 zcmey%`j>S=3D*NQaTXnA7RQ-OHrDYld7J4PnCTiBg%}xHnV47^o9Y^vTNxN!v2HuT lz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!_qXnlF3(@GyvNY9J~Mk delta 101 zcmey%`j>S=3D l7#LJbTq8)!ag8WRNi0dV%FR#7OsixtGBCuhAy88)ee!Q6Z2*9c8zcY# delta 101 zcmZ3+wv25;3DSQ!}1S&(kX mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!`r|2dnf;9(gpzZg&v6j diff --git a/data/labels/tie.png b/data/labels/tie.png index 16ac404f671e9e79bd969b055a8c8a0629a5c496..a547fad6c414c506530b8b16c17dd05c75f1f218 100644 GIT binary patch delta 100 zcmbQuJezq!3D*NQaTXo97|p9&C)REBHq$jQ(={>*F*39=F|jf>&^0i(GB9XkUYXCp kz@S><8c~vxSdwa$o1c=IR>@#wV2EAA_c+1JldBjN0kskwQUCw| delta 100 zcmbQuJezq!3DVPOf591OWY&9zFm7 diff --git a/data/labels/toaster.png b/data/labels/toaster.png index e87e0765c65e30b4fafea877711e7ae82722d280..4c59a9161fa5fd1a0c05e82b1886941cb0dbd38d 100644 GIT binary patch delta 83 zcmeyu@`YtW3D*NQaTXn=Vz-q>8|&H_rOb2<%yf;6LW~TpOiZkdO>_;+tqcr`e0pmp S%Q1=LkY*M%JuumyNfiLwh81%F delta 83 zcmeyu@`YtW3D>msK8`@CRG5($QAGa diff --git a/data/labels/toilet.png b/data/labels/toilet.png index f2a02747e990178311324cd14131889cbb16e1c3..c7aa726acf2cfd7df190510c67da2dc6cf682324 100644 GIT binary patch delta 101 zcmey%{Fiw`3D*NQaTXoLSN=abHr5F+dYkDQnCTiBg%}xHnV47^8|xaFTNxN^f4%t= m0|SFRc?MtW?ChKk%1w04ac@|`%S*dr~&|Yj2`U( delta 101 zcmey%{Fiw`3DShPpsekrd2W+85m;Ma7Xm0z~q~ZDgdI08~gwO diff --git a/data/labels/toothbrush.png b/data/labels/toothbrush.png index 2f943ede04aec95ac719d9046f35bf0d9b2f1c12..67877b09d99b352844a6dcc2c0e7d6a85d054f84 100644 GIT binary patch delta 101 zcmdnPx`%Z_3D*NQaTXnA7RQ-OHrAbH^fuEqFw-?M3NbRYGBL3-Hq|vSw=yueV%>Iv mfq_A_#5JNMC9x#cDmOnRGp&-r$iNW0hNWqCC6lKxX#fD^WE{5u delta 101 zcmdnPx`%Z_3Dsekrd2W+85m;MP?dCU$>b?a8UTjM8=L?D diff --git a/data/labels/traffic light.png b/data/labels/traffic light.png index ef8aa18a5d3d7d40ec9f885df0be46314a18283e..bd1e7c95b6b2f78cc111a40118b260cd5a37a723 100644 GIT binary patch delta 101 zcmX@gdX#lS3D*NQaTXofqY5qj8|yAIdYkDQnCTiBg%}xHnV47^S?U^?TNxPKH+-YS mz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!@8W1d6Q=`X#)V?%^cnU delta 101 zcmX@gdX#lS3Dsekrd2W+85m;M;N5k_a`G%DZ2;x`9J>Gj diff --git a/data/labels/train.png b/data/labels/train.png index ee216d2917321fc33fa9abb1f2cb5eb4b5ac955e..ec6d0dd0e4fddf1d9e870592ca81cc1e940d578c 100644 GIT binary patch delta 100 zcmcb`e2aNP3D*NQaTXobw@Nk>C)U05Hq$jQ(={>*F*39=F|jf>*EKM=GB9vnGW{U~ l1A}UbYeY#(Vo9o1ZhlH;S|x*#fgyGcMnCmqCvRs|1^^Sd9clmo delta 100 zcmcb`e2aNP3DKd7b7#Ufa8dw>a>l#>C85nTemq{=% kFsPQeMwFx^mZVzc=BH$)RWcYE7-H8@m2_^&)!ag8WRNi0dV%FR#7OsixtGBCuhfkQf8Yw|5dWdO*=8+`x( delta 101 zcmey%{Fiw`3DShPpl&C_85nGTz4;RZ l1A}UbYeY#(Vo9o1ZhlH;S|x*#fgyGc$F_0%O%7vJ004wo9%f!2kdN diff --git a/data/labels/tvmonitor.png b/data/labels/tvmonitor.png index ff27a7ab4fc1b2bbe3ec41095dbfe5e211ac0dc8..2250e4127b5ac89660f3ddfeed9f6ee44b0b3255 100644 GIT binary patch delta 101 zcmeBU?PHx#!u5bnoJB|Vt&+{ejdk-Fz0GtD%yf;6LW~TpOiZkd&2zm7AZEnO4bQWMGJ0gV9g@*vaWk>HyLZ99#eZ delta 101 zcmeBU?PHx#!gZfpip_|l;hmD>#=3co-ln>ShPpsekrd2W+85m;M(4)1_cXB$DIsnW698UlM diff --git a/data/labels/umbrella.png b/data/labels/umbrella.png index 05de2d9328085ad60af6363443d494b358f8fb0b..4e32d8b88d6f64df3ed20ab158ed72770a451840 100644 GIT binary patch delta 101 zcmeBU?PHx#!u5bnoJB`2M)T^{jdk-Gz0GtD%yf;6LW~TpOiZkd4Rj66tqcs>m{;aA lFfgc=xJHzuB$lLF<>sekrd2W+85m;M@I6lO^5hIAH2}D|96ta6 delta 101 zcmeBU?PHx#!gZfpip_}iUwqu3jdk-Gy-jru4Rwu7LyU~9Obx6IOmqz_tPBjSuIIEe lFfgc=xJHzuB$lLF<>sekrd2W+85m;M;N5k_a&iWf8UO%*9OD20 diff --git a/data/labels/vase.png b/data/labels/vase.png index a4a3f156f2d9a099dd8854d7242bd1fe1856f111..54cdf074dc567eca5b5cd09777cd608e1ad51359 100644 GIT binary patch delta 101 zcmZ3%vVvto3D*NQaTXnA7RQ-OHrClPdYkDQnCTiBg%}xHnV47^o9Y^vTNxN!v2HuT lz`&qd;u=wsl30>zm7AZEnO4bQWMGJ0!_qXnlF4jLN&uwN8*2an delta 101 zcmZ3%vVvto3D l7#LJbTq8Yi65J!u5bnoJB`oTkomz#yTM;Z!=v3GhHL25FYi65J!gZfpip_}iUwqu3jdemy-ln>ShPpsekrd2W+85m;M@b>Th-pRL_Gyu+u9smFU diff --git a/data/labels/zebra.png b/data/labels/zebra.png index feb1ca0dfa05e309658296e26ac825238065af3c..a05c115d701482184d475bef1479d9b61c5a6cc7 100644 GIT binary patch delta 101 zcmX@Xa)M<-3D*NQaTXo97|p9&H`c{4dYkDQnCTiBg%}xHnV47^8|WICTNxO%F|W*L lU|>)!ag8WRNi0dV%FR#7OsixtGBCuh;d`9m<;ki{$^g#+94G() delta 101 zcmX@Xa)M<-3DShPp thresh) ? prob : 0; - } - if(only_objectness){ - probs[index][0] = scale; - } - } - } -} - void print_cocos(FILE *fp, int image_id, box *boxes, float **probs, int num_boxes, int classes, int w, int h) { int i, j; @@ -235,7 +210,7 @@ void validate_coco(char *cfgfile, char *weightfile) float *predictions = network_predict(net, X); int w = val[t].w; int h = val[t].h; - convert_coco_detections(predictions, classes, l.n, square, side, w, h, thresh, probs, boxes, 0); + convert_detections(predictions, classes, l.n, square, side, w, h, thresh, probs, boxes, 0); if (nms) do_nms_sort(boxes, probs, side*side*l.n, classes, iou_thresh); print_cocos(fp, image_id, boxes, probs, side*side*l.n, classes, w, h); free_image(val[t]); @@ -298,7 +273,7 @@ void validate_coco_recall(char *cfgfile, char *weightfile) image sized = resize_image(orig, net.w, net.h); char *id = basecfg(path); float *predictions = network_predict(net, sized.data); - convert_coco_detections(predictions, classes, l.n, square, side, 1, 1, thresh, probs, boxes, 1); + convert_detections(predictions, classes, l.n, square, side, 1, 1, thresh, probs, boxes, 1); if (nms) do_nms(boxes, probs, side*side*l.n, 1, nms_thresh); char *labelpath = find_replace(path, "images", "labels"); @@ -370,7 +345,7 @@ void test_coco(char *cfgfile, char *weightfile, char *filename, float thresh) time=clock(); float *predictions = network_predict(net, X); printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); - convert_coco_detections(predictions, l.classes, l.n, l.sqrt, l.side, 1, 1, thresh, probs, boxes, 0); + convert_detections(predictions, l.classes, l.n, l.sqrt, l.side, 1, 1, thresh, probs, boxes, 0); if (nms) do_nms_sort(boxes, probs, l.side*l.side*l.n, l.classes, nms); draw_detections(im, l.side*l.side*l.n, thresh, boxes, probs, coco_classes, coco_labels, 80); show_image(im, "predictions"); @@ -386,16 +361,6 @@ void test_coco(char *cfgfile, char *weightfile, char *filename, float thresh) } } -void demo_coco(char *cfgfile, char *weightfile, float thresh, int cam_index, char *filename); -static void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, char* filename) -{ - #if defined(OPENCV) - demo_coco(cfgfile, weightfile, thresh, cam_index, filename); - #else - fprintf(stderr, "Need to compile with OpenCV for demo.\n"); - #endif -} - void run_coco(int argc, char **argv) { int i; @@ -406,7 +371,6 @@ void run_coco(int argc, char **argv) } float thresh = find_float_arg(argc, argv, "-thresh", .2); int cam_index = find_int_arg(argc, argv, "-c", 0); - char *file = find_char_arg(argc, argv, "-file", 0); if(argc < 4){ fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); @@ -420,5 +384,5 @@ void run_coco(int argc, char **argv) else if(0==strcmp(argv[2], "train")) train_coco(cfg, weights); else if(0==strcmp(argv[2], "valid")) validate_coco(cfg, weights); else if(0==strcmp(argv[2], "recall")) validate_coco_recall(cfg, weights); - else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, file); + else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, coco_classes, coco_labels, 80); } diff --git a/src/convolutional_kernels.cu b/src/convolutional_kernels.cu index 2376835e..96398df2 100644 --- a/src/convolutional_kernels.cu +++ b/src/convolutional_kernels.cu @@ -71,8 +71,6 @@ void binarize_filters_gpu(float *filters, int n, int size, float *binary) void forward_convolutional_layer_gpu(convolutional_layer l, network_state state) { - int i; - fill_ongpu(l.outputs*l.batch, 0, l.output_gpu, 1); if(l.binary){ binarize_filters_gpu(l.filters_gpu, l.n, l.c*l.size*l.size, l.binary_filters_gpu); @@ -103,6 +101,7 @@ void forward_convolutional_layer_gpu(convolutional_layer l, network_state state) l.output_gpu); #else + int i; int m = l.n; int k = l.size*l.size*l.c; int n = l.out_w*l.out_h; diff --git a/src/coco_demo.c b/src/demo.c similarity index 57% rename from src/coco_demo.c rename to src/demo.c index e5e90878..bd8f2c2c 100644 --- a/src/coco_demo.c +++ b/src/demo.c @@ -5,6 +5,7 @@ #include "parser.h" #include "box.h" #include "image.h" +#include "demo.h" #include #define FRAMES 1 @@ -12,10 +13,14 @@ #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" #include "opencv2/imgproc/imgproc_c.h" -void convert_coco_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness); +void convert_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness); -extern char *coco_classes[]; -extern image coco_labels[]; +#define DELAY 5 +static int delay = DELAY; + +static char **demo_names; +static image *demo_labels; +static int demo_classes; static float **probs; static box *boxes; @@ -24,7 +29,7 @@ static image in ; static image in_s ; static image det ; static image det_s; -static image disp ; +static image disp = {0}; static CvCapture * cap; static float fps = 0; static float demo_thresh = 0; @@ -34,14 +39,22 @@ static int demo_index = 0; static image images[FRAMES]; static float *avg; -void *fetch_in_thread_coco(void *ptr) +void *fetch_in_thread(void *ptr) { in = get_image_from_stream(cap); - in_s = resize_image(in, net.w, net.h); + if(!in.data){ + in = disp; + if(delay == DELAY) error("Stream closed."); + }else{ + if(disp.data){ + free_image(disp); + } + in_s = resize_image(in, net.w, net.h); + } return 0; } -void *detect_in_thread_coco(void *ptr) +void *detect_in_thread(void *ptr) { float nms = .4; @@ -50,10 +63,12 @@ void *detect_in_thread_coco(void *ptr) float *prediction = network_predict(net, X); memcpy(predictions[demo_index], prediction, l.outputs*sizeof(float)); - mean_arrays(predictions, FRAMES, l.outputs, avg); + if(delay == DELAY){ + mean_arrays(predictions, FRAMES, l.outputs, avg); + } free_image(det_s); - convert_coco_detections(avg, l.classes, l.n, l.sqrt, l.side, 1, 1, demo_thresh, probs, boxes, 0); + convert_detections(avg, l.classes, l.n, l.sqrt, l.side, 1, 1, demo_thresh, probs, boxes, 0); if (nms > 0) do_nms(boxes, probs, l.side*l.side*l.n, l.classes, nms); printf("\033[2J"); printf("\033[1;1H"); @@ -64,14 +79,22 @@ void *detect_in_thread_coco(void *ptr) det = images[(demo_index + FRAMES/2 + 1)%FRAMES]; demo_index = (demo_index + 1)%FRAMES; - draw_detections(det, l.side*l.side*l.n, demo_thresh, boxes, probs, coco_classes, coco_labels, 80); + draw_detections(det, l.side*l.side*l.n, demo_thresh, boxes, probs, demo_names, demo_labels, demo_classes); + if(delay == 0){ + delay = DELAY; + } else { + --delay; + } return 0; } -void demo_coco(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename) +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes) { + demo_names = names; + demo_labels = labels; + demo_classes = classes; demo_thresh = thresh; - printf("COCO demo\n"); + printf("Demo\n"); net = parse_network_cfg(cfgfile); if(weightfile){ load_weights(&net, weightfile); @@ -87,8 +110,8 @@ void demo_coco(char *cfgfile, char *weightfile, float thresh, int cam_index, con } if(!cap) error("Couldn't connect to webcam.\n"); - cvNamedWindow("COCO", CV_WINDOW_NORMAL); - cvResizeWindow("COCO", 512, 512); + //cvNamedWindow("COCO", CV_WINDOW_NORMAL); + //cvResizeWindow("COCO", 512, 512); detection_layer l = net.layers[net.n-1]; int j; @@ -101,22 +124,22 @@ void demo_coco(char *cfgfile, char *weightfile, float thresh, int cam_index, con probs = (float **)calloc(l.side*l.side*l.n, sizeof(float *)); for(j = 0; j < l.side*l.side*l.n; ++j) probs[j] = (float *)calloc(l.classes, sizeof(float *)); - pthread_t fetch_thread; - pthread_t detect_thread; +// pthread_t fetch_thread; + // pthread_t detect_thread; - fetch_in_thread_coco(0); + fetch_in_thread(0); det = in; det_s = in_s; - fetch_in_thread_coco(0); - detect_in_thread_coco(0); + fetch_in_thread(0); + detect_in_thread(0); disp = det; det = in; det_s = in_s; for(j = 0; j < FRAMES/2; ++j){ - fetch_in_thread_coco(0); - detect_in_thread_coco(0); + fetch_in_thread(0); + detect_in_thread(0); disp = det; det = in; det_s = in_s; @@ -127,22 +150,25 @@ void demo_coco(char *cfgfile, char *weightfile, float thresh, int cam_index, con ++count; struct timeval tval_before, tval_after, tval_result; gettimeofday(&tval_before, NULL); - if(pthread_create(&fetch_thread, 0, fetch_in_thread_coco, 0)) error("Thread creation failed"); - if(pthread_create(&detect_thread, 0, detect_in_thread_coco, 0)) error("Thread creation failed"); - //show_image(disp, "COCO"); - char buff[256]; - sprintf(buff, "/home/pjreddie/coco/coco_%05d", count); - save_image(disp, buff); - - free_image(disp); - cvWaitKey(10); - pthread_join(fetch_thread, 0); - pthread_join(detect_thread, 0); + //if(pthread_create(&fetch_thread, 0, fetch_in_thread, 0)) error("Thread creation failed"); + //if(pthread_create(&detect_thread, 0, detect_in_thread, 0)) error("Thread creation failed"); + fetch_in_thread(0); + detect_in_thread(0); disp = det; det = in; det_s = in_s; + //show_image(disp, "COCO"); + char buff[256]; + sprintf(buff, "coco/coco_%05d", count); + save_image(disp, buff); + + //free_image(disp); + //cvWaitKey(10); + //pthread_join(fetch_thread, 0); + //pthread_join(detect_thread, 0); + gettimeofday(&tval_after, NULL); timersub(&tval_after, &tval_before, &tval_result); float curr = 1000000.f/((long int)tval_result.tv_usec); @@ -150,8 +176,9 @@ void demo_coco(char *cfgfile, char *weightfile, float thresh, int cam_index, con } } #else -void demo_coco(char *cfgfile, char *weightfile, float thresh, int cam_index){ - fprintf(stderr, "YOLO-COCO demo needs OpenCV for webcam images.\n"); +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes) +{ + fprintf(stderr, "Demo needs OpenCV for webcam images.\n"); } #endif diff --git a/src/demo.h b/src/demo.h new file mode 100644 index 00000000..1a091cd4 --- /dev/null +++ b/src/demo.h @@ -0,0 +1,7 @@ +#ifndef DEMO +#define DEMO + +#include "image.h" +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes); + +#endif diff --git a/src/detection_layer.c b/src/detection_layer.c index 1b0f1268..8b4045af 100644 --- a/src/detection_layer.c +++ b/src/detection_layer.c @@ -53,8 +53,6 @@ void forward_detection_layer(const detection_layer l, network_state state) softmax_array(l.output + index + offset, l.classes, 1, l.output + index + offset); } - int offset = locations*l.classes; - activate_array(l.output + index + offset, locations*l.n*(1+l.coords), LOGISTIC); } } if(state.train){ @@ -133,11 +131,9 @@ void forward_detection_layer(const detection_layer l, network_state state) best_index = 0; } } - /* - if(1 && *(state.net.seen) < 100000){ + if(l.random && *(state.net.seen) < 64000){ best_index = rand()%l.n; } - */ int box_index = index + locations*(l.classes + l.n) + (i*l.n + best_index) * l.coords; int tbox_index = truth_index + 1 + l.classes; @@ -175,10 +171,6 @@ void forward_detection_layer(const detection_layer l, network_state state) avg_iou += iou; ++count; } - if(l.softmax){ - gradient_array(l.output + index + locations*l.classes, locations*l.n*(1+l.coords), - LOGISTIC, l.delta + index + locations*l.classes); - } } if(0){ @@ -208,6 +200,7 @@ void forward_detection_layer(const detection_layer l, network_state state) } + *(l.cost) = pow(mag_array(l.delta, l.outputs * l.batch), 2); printf("Detection Avg IOU: %f, Pos Cat: %f, All Cat: %f, Pos Obj: %f, Any Obj: %f, count: %d\n", avg_iou/count, avg_cat/count, avg_allcat/(count*l.classes), avg_obj/count, avg_anyobj/(l.batch*locations*l.n), count); diff --git a/src/image.c b/src/image.c index 92833dfb..0309ef1c 100644 --- a/src/image.c +++ b/src/image.c @@ -365,6 +365,7 @@ void show_image_cv(image p, const char *name) image get_image_from_stream(CvCapture *cap) { IplImage* src = cvQueryFrame(cap); + if (!src) return make_empty_image(0,0,0); image im = ipl_to_image(src); rgbgr_image(im); return im; diff --git a/src/layer.h b/src/layer.h index 0c457f7e..18f98c7e 100644 --- a/src/layer.h +++ b/src/layer.h @@ -88,6 +88,7 @@ struct layer{ float object_scale; float noobject_scale; float class_scale; + int random; int dontload; int dontloadscales; diff --git a/src/parser.c b/src/parser.c index 00de059a..1e5be4d9 100644 --- a/src/parser.c +++ b/src/parser.c @@ -264,6 +264,7 @@ detection_layer parse_detection(list *options, size_params params) layer.noobject_scale = option_find_float(options, "noobject_scale", 1); layer.class_scale = option_find_float(options, "class_scale", 1); layer.jitter = option_find_float(options, "jitter", .2); + layer.random = option_find_int_quiet(options, "random", 0); return layer; } diff --git a/src/yolo.c b/src/yolo.c index 2b999356..057abcf9 100644 --- a/src/yolo.c +++ b/src/yolo.c @@ -4,6 +4,7 @@ #include "utils.h" #include "parser.h" #include "box.h" +#include "demo.h" #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" @@ -83,7 +84,7 @@ void train_yolo(char *cfgfile, char *weightfile) save_weights(net, buff); } -void convert_yolo_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness) +void convert_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness) { int i,j,n; //int per_cell = 5*num+classes; @@ -211,7 +212,7 @@ void validate_yolo(char *cfgfile, char *weightfile) float *predictions = network_predict(net, X); int w = val[t].w; int h = val[t].h; - convert_yolo_detections(predictions, classes, l.n, square, side, w, h, thresh, probs, boxes, 0); + convert_detections(predictions, classes, l.n, square, side, w, h, thresh, probs, boxes, 0); if (nms) do_nms_sort(boxes, probs, side*side*l.n, classes, iou_thresh); print_yolo_detections(fps, id, boxes, probs, side*side*l.n, classes, w, h); free(id); @@ -270,7 +271,7 @@ void validate_yolo_recall(char *cfgfile, char *weightfile) image sized = resize_image(orig, net.w, net.h); char *id = basecfg(path); float *predictions = network_predict(net, sized.data); - convert_yolo_detections(predictions, classes, l.n, square, side, 1, 1, thresh, probs, boxes, 1); + convert_detections(predictions, classes, l.n, square, side, 1, 1, thresh, probs, boxes, 1); if (nms) do_nms(boxes, probs, side*side*l.n, 1, nms); char *labelpath = find_replace(path, "images", "labels"); @@ -342,7 +343,7 @@ void test_yolo(char *cfgfile, char *weightfile, char *filename, float thresh) time=clock(); float *predictions = network_predict(net, X); printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); - convert_yolo_detections(predictions, l.classes, l.n, l.sqrt, l.side, 1, 1, thresh, probs, boxes, 0); + convert_detections(predictions, l.classes, l.n, l.sqrt, l.side, 1, 1, thresh, probs, boxes, 0); if (nms) do_nms_sort(boxes, probs, l.side*l.side*l.n, l.classes, nms); //draw_detections(im, l.side*l.side*l.n, thresh, boxes, probs, voc_names, voc_labels, 20); draw_detections(im, l.side*l.side*l.n, thresh, boxes, probs, voc_names, voc_labels, 20); @@ -360,8 +361,6 @@ void test_yolo(char *cfgfile, char *weightfile, char *filename, float thresh) } } -void demo_yolo(char *cfgfile, char *weightfile, float thresh, int cam_index, char *filename); - void run_yolo(int argc, char **argv) { int i; @@ -385,5 +384,5 @@ void run_yolo(int argc, char **argv) else if(0==strcmp(argv[2], "train")) train_yolo(cfg, weights); else if(0==strcmp(argv[2], "valid")) validate_yolo(cfg, weights); else if(0==strcmp(argv[2], "recall")) validate_yolo_recall(cfg, weights); - else if(0==strcmp(argv[2], "demo")) demo_yolo(cfg, weights, thresh, cam_index, filename); + else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, voc_names, voc_labels, 20); } diff --git a/src/yolo_demo.c b/src/yolo_demo.c deleted file mode 100644 index 377218de..00000000 --- a/src/yolo_demo.c +++ /dev/null @@ -1,135 +0,0 @@ -#include "network.h" -#include "detection_layer.h" -#include "cost_layer.h" -#include "utils.h" -#include "parser.h" -#include "box.h" -#include "image.h" -#include - -#ifdef OPENCV -#include "opencv2/highgui/highgui_c.h" -#include "opencv2/imgproc/imgproc_c.h" -image ipl_to_image(IplImage* src); -void convert_yolo_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness); - -extern char *voc_names[]; -extern image voc_labels[]; - -static float **probs; -static box *boxes; -static network net; -static image in ; -static image in_s ; -static image det ; -static image det_s; -static image disp ; -static CvCapture * cap; -static float fps = 0; -static float demo_thresh = 0; - -void *fetch_in_thread(void *ptr) -{ - in = get_image_from_stream(cap); - in_s = resize_image(in, net.w, net.h); - return 0; -} - -void *detect_in_thread(void *ptr) -{ - float nms = .4; - - detection_layer l = net.layers[net.n-1]; - float *X = det_s.data; - float *predictions = network_predict(net, X); - free_image(det_s); - convert_yolo_detections(predictions, l.classes, l.n, l.sqrt, l.side, 1, 1, demo_thresh, probs, boxes, 0); - if (nms > 0) do_nms(boxes, probs, l.side*l.side*l.n, l.classes, nms); - printf("\033[2J"); - printf("\033[1;1H"); - printf("\nFPS:%.0f\n",fps); - printf("Objects:\n\n"); - draw_detections(det, l.side*l.side*l.n, demo_thresh, boxes, probs, voc_names, voc_labels, 20); - return 0; -} - -void demo_yolo(char *cfgfile, char *weightfile, float thresh, int cam_index, char *filename) -{ - demo_thresh = thresh; - printf("YOLO demo\n"); - net = parse_network_cfg(cfgfile); - if(weightfile){ - load_weights(&net, weightfile); - } - set_batch_network(&net, 1); - - srand(2222222); - - if(filename){ - cap = cvCaptureFromFile(filename); - }else{ - cap = cvCaptureFromCAM(cam_index); - } - - if(!cap) error("Couldn't connect to webcam.\n"); - cvNamedWindow("YOLO", CV_WINDOW_NORMAL); - cvResizeWindow("YOLO", 512, 512); - - detection_layer l = net.layers[net.n-1]; - int j; - - boxes = (box *)calloc(l.side*l.side*l.n, sizeof(box)); - probs = (float **)calloc(l.side*l.side*l.n, sizeof(float *)); - for(j = 0; j < l.side*l.side*l.n; ++j) probs[j] = (float *)calloc(l.classes, sizeof(float *)); - - pthread_t fetch_thread; - pthread_t detect_thread; - - fetch_in_thread(0); - det = in; - det_s = in_s; - - fetch_in_thread(0); - detect_in_thread(0); - disp = det; - det = in; - det_s = in_s; - - while(1){ - struct timeval tval_before, tval_after, tval_result; - gettimeofday(&tval_before, NULL); - /* - if(pthread_create(&fetch_thread, 0, fetch_in_thread, 0)) error("Thread creation failed"); - if(pthread_create(&detect_thread, 0, detect_in_thread, 0)) error("Thread creation failed"); - show_image(disp, "YOLO"); - free_image(disp); - cvWaitKey(1); - pthread_join(fetch_thread, 0); - pthread_join(detect_thread, 0); - - disp = det; - det = in; - det_s = in_s; - */ - - fetch_in_thread(0); - det = in; - det_s = in_s; - detect_in_thread(0); - disp = det; - show_image(disp, "YOLO"); - free_image(disp); - cvWaitKey(1); - - gettimeofday(&tval_after, NULL); - timersub(&tval_after, &tval_before, &tval_result); - float curr = 1000000.f/((long int)tval_result.tv_usec); - fps = .9*fps + .1*curr; - } -} -#else -void demo_yolo(char *cfgfile, char *weightfile, float thresh, int cam_index, char *filename){ - fprintf(stderr, "YOLO demo needs OpenCV for webcam images.\n"); -} -#endif -