728x90
작성한 코드이다.
모델을 돌려 추출한 임베딩 값을 json형태로 insert하는 코드이다.
그러나 에러가 발생하였다.
그런데 evaluation_embs를 몇개만 잘라서 넣으면 DB에 잘 들어간다.
그렇다면 문제는 임베딩값이 너무 많다는 것이다.
그래서 학생들의 임베딩값 추출을 출석체크 할 때 하는 것으로 구조를 변경하려고한다.
임베딩값을 제외하고 선택된 사진의 파일명과 인덱스만 DB에 추가되도록 코드를 변경하였다.
# student 추가
@app.route("/students",methods=['POST']) # 라우팅경로
def CreateStduentEmbedding() :
if request.method =='POST' :
Img_students_addr = AddStduentImg() # 학생들의 사진 폴더를 선택
evaluation_embs, evaluation_labels = Embedding.Create_Embedding(Img_students_addr)
for i in range(len(evaluation_labels)) :
Student.insert_one(
{
"studentIdx" : getNextSequence(),
"name": evaluation_labels[i]
}
)
return make_response(jsonify(SUCCESS=True),200)
이러게 코드를 수정하니 여기서 굳이 코드를 수정할 필요가 없다.
Embedding.Create_Embedding을 os.listdir으로 변경하면 쉽게 파일명을 리스트로 반환받을 수 있다.
# student 추가
@app.route("/students",methods=['POST']) # 라우팅경로
def CreateStduentEmbedding() :
if request.method =='POST' :
Img_students_addr = AddStduentImg() # 학생들의 사진 폴더를 선택
evaluation_labels = os.listdir(Img_students_addr)
for i in range(len(evaluation_labels)) :
Student.insert_one(
{
"studentIdx" : getNextSequence(),
"name": evaluation_labels[i]
}
)
return make_response(jsonify(SUCCESS=True),200)
DB에 잘 들어가는 것을 확인할 수 있다.
다만 뒤에 확장자까지 함께 저장되는 것이 문제이다.
# student 추가
@app.route("/students",methods=['POST']) # 라우팅경로
def CreateStduentEmbedding() :
if request.method =='POST' :
label = []
Img_students_addr = AddStduentImg() # 학생들의 사진 폴더를 선택
evaluation_labels = os.listdir(Img_students_addr) # 사진들의 이름을 추출
for evaluation_label in evaluation_labels : # 확장자 제거
label.append(evaluation_label.rsplit('_')[0])
for i in range(len(label)) :
Student.insert_one(
{
"studentIdx" : getNextSequence(),
"name": label[i]
}
)
return make_response(jsonify(SUCCESS=True),200)
rsplit()을 이용해 이름만을 추출하여 DB에 넣었다.
이름뒤에 _를 넣은 이유는 우리가 사용하는 모델자체에서 _를 기준으로 나누기때문이다.
나중에 혹시라도 문제가 생길수도있기에 동일하게 코드를 만들어주었다.
참고 블로그 :
https://koos808.tistory.com/61
https://seong6496.tistory.com/100
반응형