Commit 0addb9c7 authored by ldemarcosm's avatar ldemarcosm
Browse files

Modified ML model to ONNX format

parent 50c33646
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -6,3 +6,4 @@ pytest
pytest-benchmark
numpy
scikit-learn
onnxruntime
+11 −9
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ from datetime import datetime
import os
import grpc
import numpy as np
import pickle as pkl
import onnxruntime as rt
import logging
from l3_centralizedattackdetector.proto.l3_centralizedattackdetector_pb2 import (
    Empty,
@@ -21,20 +21,21 @@ from l3_centralizedattackdetector.proto.l3_attackmitigator_pb2_grpc import (

LOGGER = logging.getLogger(__name__)
here = os.path.dirname(os.path.abspath(__file__))
MODEL_FILE = os.path.join(here, "ml_model/RF_Netflow_TF")
MODEL_FILE = os.path.join(here, "ml_model/teraflow_rf.onnx")

class l3_centralizedattackdetectorServiceServicerImpl(L3CentralizedattackdetectorServicer):

    def __init__(self):
        LOGGER.debug("Creating Servicer...")
        self.inference_values = []
        with open(MODEL_FILE, "rb") as f:
            self.ml_model = pkl.load(f)
        self.model = rt.InferenceSession(MODEL_FILE)
        self.input_name = self.model.get_inputs()[0].name
        self.label_name = self.model.get_outputs()[0].name
        

    def make_inference(self, request):
        # ML MODEL
        predictions = self.ml_model.predict_proba(
            [
        x_data = np.array([
                [
                    request.n_packets_server_seconds,
                    request.n_packets_client_seconds,
@@ -45,8 +46,9 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
                    request.n_packets_server_n_packets_client,
                    request.n_bits_server_n_bits_client,
                ]
            ]
        )
            ])

        predictions = self.model.run([self.label_name], {self.input_name: x_data.astype(np.float32)})[0]
        # Output format
        output_message = {
            "confidence": None,
@@ -61,7 +63,7 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
            "time_start": request.time_start,
            "time_end": request.time_end,
        }
        if predictions[0][1] >= 0.5:
        if predictions[0] >= 0.5:
            output_message["confidence"] = predictions[0][1]
            output_message["tag_name"] = "Crypto"
            output_message["tag"] = 1
−4.84 MiB

File deleted.

+143 KiB

File added.

No diff preview for this file type.

Loading