AlexeyAB
2018-01-09 ea09a6e0b38e1ddf43ffcd81d27f0506411eb8e4
src/yolo_v2_class.cpp
@@ -34,8 +34,9 @@
};
YOLODLL_API Detector::Detector(std::string cfg_filename, std::string weight_filename, int gpu_id)
YOLODLL_API Detector::Detector(std::string cfg_filename, std::string weight_filename, int gpu_id) : cur_gpu_id(gpu_id)
{
   wait_stream = 0;
   int old_gpu_index;
#ifdef GPU
   cudaGetDevice(&old_gpu_index);
@@ -54,7 +55,7 @@
   char *cfgfile = const_cast<char *>(cfg_filename.data());
   char *weightfile = const_cast<char *>(weight_filename.data());
   net = parse_network_cfg(cfgfile);
   net = parse_network_cfg_custom(cfgfile, 1);
   if (weightfile) {
      load_weights(&net, weightfile);
   }
@@ -109,11 +110,11 @@
#endif
}
YOLODLL_API int Detector::get_net_width() {
YOLODLL_API int Detector::get_net_width() const {
   detector_gpu_t &detector_gpu = *reinterpret_cast<detector_gpu_t *>(detector_gpu_ptr.get());
   return detector_gpu.net.w;
}
YOLODLL_API int Detector::get_net_height() {
YOLODLL_API int Detector::get_net_height() const {
   detector_gpu_t &detector_gpu = *reinterpret_cast<detector_gpu_t *>(detector_gpu_ptr.get());
   return detector_gpu.net.h;
}
@@ -172,17 +173,18 @@
YOLODLL_API std::vector<bbox_t> Detector::detect(image_t img, float thresh, bool use_mean)
{
   detector_gpu_t &detector_gpu = *reinterpret_cast<detector_gpu_t *>(detector_gpu_ptr.get());
   network &net = detector_gpu.net;
   int old_gpu_index;
#ifdef GPU
   cudaGetDevice(&old_gpu_index);
   cudaSetDevice(net.gpu_index);
   if(cur_gpu_id != old_gpu_index)
      cudaSetDevice(net.gpu_index);
#endif
   //std::cout << "net.gpu_index = " << net.gpu_index << std::endl;
   //float nms = .4;
   net.wait_stream = wait_stream;   // 1 - wait CUDA-stream, 0 - not to wait
   image im;
   im.c = img.c;
@@ -242,7 +244,8 @@
      free(sized.data);
#ifdef GPU
   cudaSetDevice(old_gpu_index);
   if (cur_gpu_id != old_gpu_index)
      cudaSetDevice(old_gpu_index);
#endif
   return bbox_vec;