make sure everything works even when the image isn't a dlib::array2d. So test with funny_image.
| 949 | // make sure everything works even when the image isn't a dlib::array2d. |
| 950 | // So test with funny_image. |
| 951 | void test_3_boxes ( |
| 952 | ) |
| 953 | { |
| 954 | print_spinner(); |
| 955 | dlog << LINFO << "test_3_boxes()"; |
| 956 | |
| 957 | |
| 958 | typedef dlib::array<array2d<unsigned char> > grayscale_image_array_type; |
| 959 | typedef dlib::array<funny_image> funny_image_array_type; |
| 960 | grayscale_image_array_type images_temp; |
| 961 | funny_image_array_type images; |
| 962 | std::vector<std::vector<rectangle> > object_locations; |
| 963 | make_simple_test_data(images_temp, object_locations); |
| 964 | images.resize(images_temp.size()); |
| 965 | for (unsigned long i = 0; i < images_temp.size(); ++i) |
| 966 | { |
| 967 | images[i].img.swap(images_temp[i]); |
| 968 | } |
| 969 | |
| 970 | typedef scan_image_boxes<very_simple_feature_extractor, funny_box_generator> image_scanner_type; |
| 971 | image_scanner_type scanner; |
| 972 | structural_object_detection_trainer<image_scanner_type> trainer(scanner); |
| 973 | trainer.set_num_threads(4); |
| 974 | object_detector<image_scanner_type> detector = trainer.train(images, object_locations); |
| 975 | |
| 976 | matrix<double> res = test_object_detection_function(detector, images, object_locations); |
| 977 | dlog << LINFO << "Test detector (precision,recall): " << res; |
| 978 | DLIB_TEST(sum(res) == 3); |
| 979 | |
| 980 | res = cross_validate_object_detection_trainer(trainer, images, object_locations, 3); |
| 981 | dlog << LINFO << "3-fold cross validation (precision,recall): " << res; |
| 982 | DLIB_TEST(sum(res) == 3); |
| 983 | |
| 984 | { |
| 985 | ostringstream sout; |
| 986 | serialize(detector, sout); |
| 987 | istringstream sin(sout.str()); |
| 988 | object_detector<image_scanner_type> d2; |
| 989 | deserialize(d2, sin); |
| 990 | matrix<double> res = test_object_detection_function(d2, images, object_locations); |
| 991 | dlog << LINFO << "Test detector (precision,recall): " << res; |
| 992 | DLIB_TEST(sum(res) == 3); |
| 993 | } |
| 994 | } |
| 995 | |
| 996 | // ---------------------------------------------------------------------------------------- |
| 997 |
no test coverage detected