///
Search

Decision fusion

Diffusion-Decision Model은 여러 개의 선택 옵션 중에서 하나를 선택하는 결정 과정을 모델링하는 수학적 모델입니다. 이 모델은 각 선택 옵션에 대한 확률 값과 노이즈 값을 입력으로 받아 최종 결정을 내립니다.
따라서, 2개의 모델에서 나온 확률 값을 입력으로 받아 Diffusion-Decision Model을 활용하여 최종 결정을 내리는 것은 가능합니다. 이 경우, 각 모델에서 나온 확률 값이 서로 독립적인 경우에는 두 모델의 확률 값을 곱하여 입력으로 넣어주어야 합니다. 하지만, 두 모델의 확률 값이 상호 의존적인 경우에는 이러한 곱셈 연산이 적절하지 않을 수 있습니다.
또한, Diffusion-Decision Model은 모델링하려는 결정 문제에 따라 다양한 변형 모델이 존재하며, 이러한 모델링 과정에서 적절한 모델 선택과 매개변수 조정이 필요합니다. 따라서, 최종 결정을 내리기 전에 모델의 적합성과 성능을 검증하는 과정이 필요합니다.
따라서, 두 모델의 확률 값이 서로 독립적이고, 적절한 Diffusion-Decision Model이 선택되고 매개변수가 조정된 경우에는 두 모델의 확률 값을 활용하여 최종 결정을 내리는 것이 가능합니다. 하지만, 이는 상황에 따라 달라질 수 있으므로, 신중한 판단이 필요합니다.
음성 스펙트로그램을 분류하는 Resnet과 음성에서 추출된 텍스트를 분류하는 KoBERT는 서로 다른 입력 데이터에 대한 분류 모델입니다. 따라서, 이 두 모델이 독립적으로 수행하는 작업의 결과를 조합하여 최종 결정을 내리는 것은 의미가 없을 수 있습니다.
만약 이러한 조합이 필요하다면, Resnet과 KoBERT를 함께 학습시켜 입력 데이터와 텍스트 정보를 모두 활용하여 분류 모델을 구성하는 것이 더 적절할 것입니다. 또한, 이러한 모델의 적합성과 성능을 검증하는 과정이 필요합니다.
Diffusion-Decision 모델은 여러 선택 옵션 중에서 하나를 선택하는 결정 과정을 모델링하는 것이며, Resnet과 KoBERT의 경우 이러한 결정 과정과 직접적인 연관성이 없습니다. 따라서, Diffusion-Decision 모델을 이용하여 Resnet과 KoBERT의 결과를 조합하여 최종 결정을 내리는 것은 적절하지 않을 것입니다.
따라서, 각각의 모델의 분류 결과를 따로따로 고려하여 최종 결정을 내리는 것이 더 적절합니다. 이는 최종 결정에 대한 신뢰도와 이해력을 높일 수 있습니다.
main.py
@app.post("/predict") async def predict(audio_file: UploadFile = File(...), text_input: str = Form(...)): start = time.time() # Save the uploaded file to the static folder file_location = f"static/{audio_file.filename}" with open(file_location, "wb+") as file_object: file_object.write(audio_file.file.read()) print(audio_file.filename) # Load the audio data in the static and resample it to the desired sampling rate audio_data, sr = librosa.load(file_location, sr=44100, duration=5) # Predict the label and probabilities for the loaded audio audio_label, a_probabilities = audio_predict(audio_data, sr) scaled_a_probabilities = scale_to_range(a_probabilities) if audio_label not in ['help', 'robbery', 'sexual', 'theft', 'violence']: end = time.time() - start print(f'{end} seconds') return { "result": "success", "audio_label": audio_label, "audio_probabilities": scaled_a_probabilities.tolist(), "text_label": "regular", "text_probabilities": [20, 0, 0, 0, 0, 0], "combined_label": "regular", "combined_probabilities": [20, 0, 0, 0, 0, 0] } else: # youtube-help.wav text # text = '다희야. 다희야. 어떡해. 여기 좀 도와주세요. 사람이 쓰러졌어요.' # text input text = text_input # print(text) from kobert_model import text_predict # import pickle text_label, t_probabilities = text_predict(text) scaled_t_probabilities = scale_to_range(t_probabilities) diffusion_model = pd.read_pickle('./Diffusion/DT_model.pkl') # diffusion_model = pickle.load(open('./Diffusion/DT_model.pkl', 'rb')) combined_prob = a_probabilities.tolist() combined_prob.extend(t_probabilities.tolist()) # combined_prob = np.array(combined_prob).reshape(1, -1) combined_prob_2 = [combined_prob] print(combined_prob_2) concate_label = diffusion_model.predict(combined_prob_2) result_label = label_encoder[concate_label[0]] print(result_label) end = time.time() - start print(f'{end} seconds') # Return the label and probabilities return { "result": "success", "audio_label": audio_label, "audio_probabilities": a_probabilities.tolist(), "text_label": text_label, "text_probabilities": t_probabilities.tolist(), "combined_label": result_label, "combined_probabilities": combined_prob }
Python
복사
음성 파일 용량은 1mb을 넘어가면 안되나?