Epoch = 800
Batch_size = 32
Learning_rate = 0.001
With session(graph = g) as session :
Execution session_data_reset_function())
for i in range (30) :
batch_data, batch_label =
batch(img_list, Batch_size),
l = session.run([train, loss]),
feed_dict = {x: batch_data
y: batch_label })
print(i, 1)
saver.save(session, ‘’, global_step = i + 1)
수형 학습 및 Landmark 추출을 위한 과정은 데이터를 수집하여 이미지 파일을 입력하고 미디어파이프에 이미지 프레임 입력 후 결과를 리턴한다. 그 결과를 이용하여 Landmark와 이미지 프레임에서 손 영역 이미지 추출한다. 추출한 Landmark와 손 영역 이미지를 이용하여 학습용 데이터 셋을 생성한다. 모든 이미지 프레임에 대해서 단계1부터 단계4를 반복하면서 데이터 셋을 생성한다.
# 랜드마크 추출
def detect(self, img):
result= self.detector.process(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
height, width, _ = img.shape
return HandResult((width, height), result)
# 손 영역 추출
def get_box_list(self, bRelative : bool = False):
if self.count() == 0:
return None
box_list = []
landmark_list = self.get_landmark_list(bRelative)
for landmark in landmark_list:
minX = min(landmark, key = lambda x : x[0])[0]
minY = min(landmark, key = lambda x : x[1])[1]
maxX = max(landmark, key = lambda x : x[0])[0]
maxY = max(landmark, key = lambda x : x[1])[1]
box = [minX, minY, maxX – minX, maxY – minY]
box_list.append(box)
return box_list
# 손 영역 위치 및 랜드마크 정보 리턴
def extract(self, img):
result = self.detect(img)
if result.count() == 0:
return None
box_list = result.get_box_list(False)
landmark_list = result.get_box_landmark_list(True)
return [(box, np.asarray(landmark).flatten()) for box, landmark in zip(box_list, landmark_list)]
좋은 글 감사합니다. 자주 올게요 :)