diff --git a/.github/workflows/ci_edge_model_serving.yml b/.github/workflows/ci_edge_model_serving.yml index e6a742a5..cb8bae58 100644 --- a/.github/workflows/ci_edge_model_serving.yml +++ b/.github/workflows/ci_edge_model_serving.yml @@ -55,12 +55,6 @@ jobs: - dockerfile: ./edge_model_serving/tflite_serving/Dockerfile image: ghcr.io/${{ github.repository }}/edge_tflite_serving context: ./edge_model_serving - - dockerfile: ./edge_model_serving/tf_serving/Dockerfile - image: ghcr.io/${{ github.repository }}/edge_model_serving - context: ./edge_model_serving - - dockerfile: ./edge_model_serving/torch_serving/Dockerfile - image: ghcr.io/${{ github.repository }}/edge_torch_serving - context: ./edge_model_serving uses: ./.github/workflows/template_build_and_push_docker_images.yml with: context: ${{ matrix.context }} diff --git a/edge_model_serving/models/tf/inception/1/saved_model.pb b/edge_model_serving/models/tf/inception/1/saved_model.pb deleted file mode 100644 index 1e6ddbf8..00000000 Binary files a/edge_model_serving/models/tf/inception/1/saved_model.pb and /dev/null differ diff --git a/edge_model_serving/models/tf/inception/1/variables/variables.data-00000-of-00001 b/edge_model_serving/models/tf/inception/1/variables/variables.data-00000-of-00001 deleted file mode 100644 index 04cf63bb..00000000 Binary files a/edge_model_serving/models/tf/inception/1/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/edge_model_serving/models/tf/inception/1/variables/variables.index b/edge_model_serving/models/tf/inception/1/variables/variables.index deleted file mode 100644 index 9678ed6b..00000000 Binary files a/edge_model_serving/models/tf/inception/1/variables/variables.index and /dev/null differ diff --git a/edge_model_serving/models/tf/marker_quality_control/1/saved_model.pb b/edge_model_serving/models/tf/marker_quality_control/1/saved_model.pb deleted file mode 100644 index 20a28a5d..00000000 Binary files a/edge_model_serving/models/tf/marker_quality_control/1/saved_model.pb and /dev/null differ diff --git a/edge_model_serving/models/tf/marker_quality_control/1/variables/variables.data-00000-of-00001 b/edge_model_serving/models/tf/marker_quality_control/1/variables/variables.data-00000-of-00001 deleted file mode 100644 index ae9fbb9b..00000000 Binary files a/edge_model_serving/models/tf/marker_quality_control/1/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/edge_model_serving/models/tf/marker_quality_control/1/variables/variables.index b/edge_model_serving/models/tf/marker_quality_control/1/variables/variables.index deleted file mode 100644 index cb61a1f9..00000000 Binary files a/edge_model_serving/models/tf/marker_quality_control/1/variables/variables.index and /dev/null differ diff --git a/edge_model_serving/models/tf/mask_classification_model/1/saved_model.pb b/edge_model_serving/models/tf/mask_classification_model/1/saved_model.pb deleted file mode 100644 index 80f99197..00000000 Binary files a/edge_model_serving/models/tf/mask_classification_model/1/saved_model.pb and /dev/null differ diff --git a/edge_model_serving/models/tf/mask_classification_model/1/variables/variables.data-00000-of-00001 b/edge_model_serving/models/tf/mask_classification_model/1/variables/variables.data-00000-of-00001 deleted file mode 100644 index 69827129..00000000 Binary files a/edge_model_serving/models/tf/mask_classification_model/1/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/edge_model_serving/models/tf/mask_classification_model/1/variables/variables.index b/edge_model_serving/models/tf/mask_classification_model/1/variables/variables.index deleted file mode 100644 index 53977fae..00000000 Binary files a/edge_model_serving/models/tf/mask_classification_model/1/variables/variables.index and /dev/null differ diff --git a/edge_model_serving/models/tf/mobilenet_v1_640x640/1/saved_model.pb b/edge_model_serving/models/tf/mobilenet_v1_640x640/1/saved_model.pb deleted file mode 100644 index 90b3b405..00000000 Binary files a/edge_model_serving/models/tf/mobilenet_v1_640x640/1/saved_model.pb and /dev/null differ diff --git a/edge_model_serving/models/tf/mobilenet_v1_640x640/1/variables/variables.data-00000-of-00001 b/edge_model_serving/models/tf/mobilenet_v1_640x640/1/variables/variables.data-00000-of-00001 deleted file mode 100644 index dc25b289..00000000 Binary files a/edge_model_serving/models/tf/mobilenet_v1_640x640/1/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/edge_model_serving/models/tf/mobilenet_v1_640x640/1/variables/variables.index b/edge_model_serving/models/tf/mobilenet_v1_640x640/1/variables/variables.index deleted file mode 100644 index d659cf17..00000000 Binary files a/edge_model_serving/models/tf/mobilenet_v1_640x640/1/variables/variables.index and /dev/null differ diff --git a/edge_model_serving/models/torch/index_to_name.json b/edge_model_serving/models/torch/index_to_name.json deleted file mode 100644 index 3c40e51d..00000000 --- a/edge_model_serving/models/torch/index_to_name.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "0": "__background__", - "1": "person", - "2": "bicycle", - "3": "car", - "4": "motorcycle", - "5": "airplane", - "6": "bus", - "7": "train", - "8": "truck", - "9": "boat", - "10": "traffic light", - "11": "fire hydrant", - "12": "N/A", - "13": "stop sign", - "14": "parking meter", - "15": "bench", - "16": "bird", - "17": "cat", - "18": "dog", - "19": "horse", - "20": "sheep", - "21": "cow", - "22": "elephant", - "23": "bear", - "24": "zebra", - "25": "giraffe", - "26": "N/A", - "27": "backpack", - "28": "umbrella", - "29": "N/A", - "30": "N/A", - "31": "handbag", - "32": "tie", - "33": "suitcase", - "34": "frisbee", - "35": "skis", - "36": "snowboard", - "37": "sports ball", - "38": "kite", - "39": "baseball bat", - "40": "baseball glove", - "41": "skateboard", - "42": "surfboard", - "43": "tennis racket", - "44": "bottle", - "45": "N/A", - "46": "wine glass", - "47": "cup", - "48": "fork", - "49": "knife", - "50": "spoon", - "51": "bowl", - "52": "banana", - "53": "apple", - "54": "sandwich", - "55": "orange", - "56": "broccoli", - "57": "carrot", - "58": "hot dog", - "59": "pizza", - "60": "donut", - "61": "cake", - "62": "chair", - "63": "couch", - "64": "potted plant", - "65": "bed", - "66": "N/A", - "67": "dining table", - "68": "N/A", - "69": "N/A", - "70": "toilet", - "71": "N/A", - "72": "tv", - "73": "laptop", - "74": "mouse", - "75": "remote", - "76": "keyboard", - "77": "cell phone", - "78": "microwave", - "79": "oven", - "80": "toaster", - "81": "sink", - "82": "refrigerator", - "83": "N/A", - "84": "book", - "85": "clock", - "86": "vase", - "87": "scissors", - "88": "teddy bear", - "89": "hair drier", - "90": "toothbrush" -} diff --git a/edge_model_serving/tf_serving/Dockerfile b/edge_model_serving/tf_serving/Dockerfile deleted file mode 100644 index 27c4635d..00000000 --- a/edge_model_serving/tf_serving/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM --platform=$TARGETPLATFORM tensorflow/serving:latest -FROM --platform=$TARGETPLATFORM emacski/tensorflow-serving - -WORKDIR /models - -COPY models/tf/ /models/tf/ -COPY tf_serving/models.config /models/models.config - -EXPOSE 8501 -ENTRYPOINT ["tensorflow_model_server", "--port=8500", "--rest_api_port=8501", "--model_config_file=/models/models.config"] diff --git a/edge_model_serving/tf_serving/README.md b/edge_model_serving/tf_serving/README.md deleted file mode 100644 index c9235ac0..00000000 --- a/edge_model_serving/tf_serving/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Model Forward / Serving Instance - -## Pull the tensorflow serving docker image - - docker pull tensorflow/serving - -## Run the tensorflow-serving docker with the following command: - -Define env variables - - MODELNAME="yolo3_harnais" - - MODELPATH="$(pwd)/modelforward/$MODELNAME" - -Execute the docker run cmd from the repo roots - - docker run -p 8501:8501 -v "$MODELPATH:/models/$MODELNAME" -e MODEL_NAME=$MODELNAME -t tensorflow/serving diff --git a/edge_model_serving/tf_serving/models.config b/edge_model_serving/tf_serving/models.config deleted file mode 100644 index 68573c16..00000000 --- a/edge_model_serving/tf_serving/models.config +++ /dev/null @@ -1,27 +0,0 @@ -model_config_list { - config { - name: 'inception' - base_path: '/models/tf/inception' - model_platform: 'tensorflow' - } - config { - name: 'marker_quality_control' - base_path: '/models/tf/marker_quality_control' - model_platform: 'tensorflow' - } - config { - name: 'mobilenet_v1_640x640' - base_path: '/models/tf/mobilenet_v1_640x640' - model_platform: 'tensorflow' - } - config { - name: 'mobilenet_v1_640x640_detect_classif' - base_path: '/models/tf/mobilenet_v1_640x640' - model_platform: 'tensorflow' - } - config { - name: 'mask_classification_model' - base_path: '/models/tf/mask_classification_model' - model_platform: 'tensorflow' - } -} diff --git a/edge_model_serving/torch_serving/Dockerfile b/edge_model_serving/torch_serving/Dockerfile deleted file mode 100644 index 386de069..00000000 --- a/edge_model_serving/torch_serving/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM pytorch/torchserve:0.12.0-cpu - -WORKDIR /torch_serving - -COPY torch_serving/requirements.txt . -COPY torch_serving/model.py model.py -COPY models/torch ./models - -USER root -RUN apt-get update \ - && apt-get install -y wget \ - && apt clean; -RUN wget -o ./models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth -RUN chown -R model-server:model-server /torch_serving -USER model-server - -RUN pip install --upgrade pip -RUN pip install -r requirements.txt - -RUN torch-model-archiver \ - --model-name fastrcnn \ - --version 1.0 \ - --model-file model.py \ - --serialized-file ./models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth \ - --handler object_detector \ - --extra-files ./models/index_to_name.json -f - -CMD ["torchserve", "--start", "--model-store", "./models", "--models", "fastrcnn=fastrcnn.mar"] diff --git a/edge_model_serving/torch_serving/Makefile b/edge_model_serving/torch_serving/Makefile deleted file mode 100644 index 5c04bc93..00000000 --- a/edge_model_serving/torch_serving/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -SHELL := /bin/bash -.SHELLFLAGS = -ec -.ONESHELL: -.SILENT: - -# brew install openjdk - -.PHONY: help -help: - echo "❓ Use \`make '" - grep -E '^\.PHONY: [a-zA-Z0-9_-]+ .*?## .*$$' $(MAKEFILE_LIST) | \ - awk 'BEGIN {FS = "(: |##)"}; {printf "\033[36m%-30s\033[0m %s\n", $$2, $$3}' - -.PHONY: install -install: - conda create --name pytorch python=3.9 -y - conda activate pytorch - conda install -c pytorch torchvision torchserve torch-model-archiver - - -.PHONY: download-models -download-models: - wget https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth - mv fasterrcnn_resnet50_fpn_coco-258fb6c6.pth ../models/torch/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth - - -.PHONY: build-mar-file -build-mar-file: - torch-model-archiver \ - --model-name fastrcnn \ - --version 1.0 \ - --model-file model.py \ - --serialized-file ../models/torch/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth \ - --handler object_detector \ - --extra-files ../models/torch/index_to_name.json -f - -.PHONY: serve -serve: - torchserve --start --model-store ../models/torch --models fastrcnn=fastrcnn.mar - -.PHONY: test -test: - curl http://127.0.0.1:8080/predictions/fastrcnn -T ..tests/data/persons.jpg diff --git a/edge_model_serving/torch_serving/README.md b/edge_model_serving/torch_serving/README.md deleted file mode 100644 index d1a7df2e..00000000 --- a/edge_model_serving/torch_serving/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# Object Detection using torchvision's pretrained fast-rcnn model. - -* Download the pre-trained fast-rcnn object detection model's state_dict from the following URL : - -https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth - -```bash -wget https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth -``` - -* Create a model archive file and serve the fastrcnn model in TorchServe using below commands - - ```bash - torch-model-archiver --model-name fastrcnn --version 1.0 --model-file examples/object_detector/fast-rcnn/model.py --serialized-file fasterrcnn_resnet50_fpn_coco-258fb6c6.pth --handler object_detector --extra-files examples/object_detector/index_to_name.json - mkdir model_store - mv fastrcnn.mar model_store/ - torchserve --start --model-store model_store --models fastrcnn=fastrcnn.mar - curl http://127.0.0.1:8080/predictions/fastrcnn -T examples/object_detector/persons.jpg - ``` -* Note : The objects detected have scores greater than "0.5". This threshold value is set in object_detector handler. - -* Output - -```json -[ - { - "person": [ - 167.4222869873047, - 57.03825378417969, - 301.305419921875, - 436.68682861328125 - ], - "score": 0.9995299577713013 - }, - { - "person": [ - 89.61490631103516, - 64.8980484008789, - 191.40206909179688, - 446.6605224609375 - ], - "score": 0.9995074272155762 - }, - { - "person": [ - 362.34539794921875, - 161.9876251220703, - 515.53662109375, - 385.2342834472656 - ], - "score": 0.9977679252624512 - }, - { - "handbag": [ - 67.37423706054688, - 277.63787841796875, - 111.6810073852539, - 400.26470947265625 - ], - "score": 0.9925485253334045 - }, - { - "handbag": [ - 228.7159423828125, - 145.87753295898438, - 303.5065612792969, - 231.10513305664062 - ], - "score": 0.9921919703483582 - }, - { - "handbag": [ - 379.4246826171875, - 259.97760009765625, - 419.0148620605469, - 317.9510498046875 - ], - "score": 0.9896279573440552 - }, - { - "person": [ - 517.9014282226562, - 149.55001831054688, - 636.5952758789062, - 365.5250549316406 - ], - "score": 0.9828333854675293 - }, - { - "bench": [ - 268.9991760253906, - 217.24330139160156, - 423.9517822265625, - 390.4784851074219 - ], - "score": 0.9581767916679382 - }, - { - "person": [ - 539.6831665039062, - 157.81715393066406, - 616.1688842773438, - 253.09609985351562 - ], - "score": 0.8993930816650391 - }, - { - "person": [ - 477.1377868652344, - 147.9254913330078, - 611.0255126953125, - 297.9276428222656 - ], - "score": 0.8726601600646973 - }, - { - "bench": [ - 286.6688537597656, - 216.35751342773438, - 550.4537353515625, - 383.19561767578125 - ], - "score": 0.8438199162483215 - }, - { - "person": [ - 627.44677734375, - 177.19900512695312, - 640.0, - 247.35137939453125 - ], - "score": 0.8364201188087463 - }, - { - "bench": [ - 88.39929962158203, - 226.47962951660156, - 560.918701171875, - 421.661865234375 - ], - "score": 0.7469933032989502 - }, - { - "handbag": [ - 406.9602355957031, - 261.8284606933594, - 453.7619934082031, - 357.5364990234375 - ], - "score": 0.7322059273719788 - }, - { - "chair": [ - 451.3659973144531, - 207.49049377441406, - 504.656982421875, - 287.66192626953125 - ], - "score": 0.6674202084541321 - }, - { - "chair": [ - 454.3897399902344, - 207.96115112304688, - 487.7691955566406, - 270.31329345703125 - ], - "score": 0.5939609408378601 - } -] -``` diff --git a/edge_model_serving/torch_serving/__init__.py b/edge_model_serving/torch_serving/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/edge_model_serving/torch_serving/model.py b/edge_model_serving/torch_serving/model.py deleted file mode 100644 index 249e1d26..00000000 --- a/edge_model_serving/torch_serving/model.py +++ /dev/null @@ -1,8 +0,0 @@ -from torchvision.models.detection.backbone_utils import resnet_fpn_backbone -from torchvision.models.detection.faster_rcnn import FasterRCNN - - -class FRCNNObjectDetector(FasterRCNN): - def __init__(self, num_classes=91, **kwargs): - backbone = resnet_fpn_backbone("resnet50", True) - super(FRCNNObjectDetector, self).__init__(backbone, num_classes, **kwargs) diff --git a/edge_model_serving/torch_serving/requirements.txt b/edge_model_serving/torch_serving/requirements.txt deleted file mode 100644 index 7fe758f6..00000000 --- a/edge_model_serving/torch_serving/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -torch==2.6.0 -torch-model-archiver==0.12.0 -torchserve==0.12.0 -torchvision==0.21.0 \ No newline at end of file