Deep learning - caffe - ssd network data layer

This layer implements the general operation of ssd network training and loading training data through inheritance

class SSDMyDataLayer : public SSDDataLayer{
public:
	SETUP_LAYERFUNC(SSDMyDataLayer);

	SSDMyDataLayer(){
		this->datum_ = createAnnDatum();
		this->label_map_ = loadLabelMap("lable.txt");
		paFindFiles("img", vfs_, "*.png");
		random_shuffle(vfs_.begin(), vfs_.end());
	}

	virtual ~SSDMyDataLayer(){
		releaseAnnDatum(this->datum_);
	}

	virtual int getBatchCacheSize(){
		return 3;
	}

	virtual void* getAnnDatum(){
		if (vfs_.size()==0)
		{
			printf("没有数据.\n");
			exit(-1);
		}
		string path=vfs_[i_].substr(0,vfs_[i_].find("."));
		printf((path + ".png" + "\n").c_str());
		printf((path + ".xml" + "\n").c_str());
		if (!loadAnnDatum((path + ".png").c_str(), (path + ".xml").c_str(), 0, 0, 0, 0, true, "png", "xml", this->label_map_, this->datum_)) {
			printf("无法加载.\n");
			//exit(-1);
		}
		if (i_>= vfs_.size()-1)
		{
			random_shuffle(vfs_.begin(), vfs_.end());
			i_ = 0;
			printf("从0开始");
		}
		else {
			i_++;
		}
		return this->datum_;
	}

	virtual void releaseAnnDatum(void* datum){

	}

private:
	PaVfiles vfs_;
	void* datum_;
	int i_;
	void* label_map_;
};

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324938454&siteId=291194637