Exemple #1
0
	def __init__(self, directory):
		subject_mapping = {}
		with open(configs.MAPPING_FILE) as mappping_file:
			mappping_file = mappping_file.read().strip().split('\n')
			for line in mappping_file:
				id = re.findall(r'^(\d+)\s', line)[0]
				name = line[len(id) + 1:]
				subject_mapping[name] = id

		def getSubject(name):
			return int(subject_mapping[name])

		#
		self.dataset = SingleDataset()

		subject_dirs = fileutils.listdir(directory)
		ann = Annotation()


		prev_subject_id = None
		sjList = None
		for dir in subject_dirs:
			subject_name = fileutils.dirname(dir)
			subject_id = getSubject(subject_name)

			duplicate = None
			for sj in self.dataset.subjects:
				if sj.id == subject_id and sj.name == subject_name:
					duplicate = sj

			##
			if duplicate == None:
				subject = Subject(subject_id, subject_name)
			else:
				subject = duplicate

			if prev_subject_id != subject_id:
				sjList = ann.getSubjectList(subject_id)
			prev_subject_id = subject_id

			for file in fileutils.recursive_walk(dir):
				if fileutils.fileextension(file) == configs.LAYER:
					###
					filename = fileutils.filename(file)
					rc = Record()
					rc.data = blob.load_np_array(file)
					rc.label = int(Annotation.getClass(sjList, filename))
					rc.frame = filename

					subject.records.append(rc)
					print('Loading', subject_id, filename, rc.label)

			if(duplicate == None):
				self.dataset.subjects.append(subject)