]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blobdiff - src/kcf.cpp
Simplify other ComplexMat CUDA methods
[hercules2020/kcf.git] / src / kcf.cpp
index 39a72ae62c2a9233b2688ca225fd61104c116a99..961bb14e78598e2c4ef2eb9ebe4d5c887b34608d 100644 (file)
@@ -184,15 +184,6 @@ void KCF_Tracker::init(cv::Mat &img, const cv::Rect &bbox, int fit_size_x, int f
         p_scales.push_back(std::pow(p_scale_step, i));
 
 #ifdef CUFFT
-    if (Fft::freq_size(feature_size).area() > 1024) {
-        std::cerr << "Window after forward FFT is too big for CUDA kernels. Plese use -f to set "
-                     "the window dimensions so its size is less or equal to "
-                  << 1024 * p_cell_size * p_cell_size * 2 + 1
-                  << " pixels. Currently the size of the window is: " << fit_size
-                  << " which is  " << fit_size.area() << " pixels. " << std::endl;
-        std::exit(EXIT_FAILURE);
-    }
-
     if (m_use_linearkernel) {
         std::cerr << "cuFFT supports only Gaussian kernel." << std::endl;
         std::exit(EXIT_FAILURE);
@@ -208,7 +199,7 @@ void KCF_Tracker::init(cv::Mat &img, const cv::Rect &bbox, int fit_size_x, int f
     d.threadctxs.emplace_back(feature_size, p_num_of_feats, p_num_scales);
 #endif
 
-    gaussian_correlation.reset(new GaussianCorrelation(1, feature_size));
+    gaussian_correlation.reset(new GaussianCorrelation(1, p_num_of_feats, feature_size));
 
     p_current_center = p_init_pose.center();
     p_current_scale = 1.;
@@ -680,11 +671,13 @@ void KCF_Tracker::GaussianCorrelation::operator()(ComplexMat &result, const Comp
 {
     TRACE("");
     xf.sqr_norm(xf_sqr_norm);
+    DEBUG_PRINTM(xf_sqr_norm[0]);
     if (auto_correlation) {
         yf_sqr_norm = xf_sqr_norm;
     } else {
         yf.sqr_norm(yf_sqr_norm);
     }
+    DEBUG_PRINTM(yf_sqr_norm[0]);
     xyf = auto_correlation ? xf.sqr_mag() : xf * yf.conj(); // xf.muln(yf.conj());
     DEBUG_PRINTM(xyf);
 
@@ -693,7 +686,7 @@ void KCF_Tracker::GaussianCorrelation::operator()(ComplexMat &result, const Comp
     DEBUG_PRINTM(xyf_sum);
     kcf.fft.inverse(xyf_sum, ifft_res);
     DEBUG_PRINTM(ifft_res);
-#ifdef CUFFT
+#if 0 && defined(CUFFT)
     // FIXME
     cuda_gaussian_correlation(ifft_res.deviceMem(), k.deviceMem(), xf_sqr_norm.deviceMem(),
                               auto_correlation ? xf_sqr_norm.deviceMem() : yf_sqr_norm.deviceMem(), sigma,