void GAB::MiningNeg(int n,DataSet& neg){ const Options& opt = Options::GetInstance(); int pool_size = opt.numThreads; vector<Mat> region_pool(pool_size); int st = neg.imgs.size(); int all = 0; int need = n - st; double rate; while(st<n){ #pragma omp parallel for for(int i = 0;i<pool_size;i++){ region_pool[i] = neg.NextImage(i); } #pragma omp parallel for for (int i = 0; i < pool_size; i++) { float score = 0; if(NPDClassify(region_pool[i].clone(),score)){ #pragma omp critical { neg.imgs.push_back(region_pool[i].clone()); neg.Fx[st]=score; if(opt.generate_hd){ char di[256]; sprintf(di,"../data/hd/%d.jpg",st); imwrite(di,region_pool[i].clone()); } st++; } } all++; } } neg.size = n; rate = ((double)(need))/(double)all; printf("mining success rate %lf\n",rate); }