Skip to content

Commit

Permalink
coreml: move vision framework into coreml
Browse files Browse the repository at this point in the history
  • Loading branch information
koush committed Apr 2, 2024
1 parent 2e72366 commit e37295f
Show file tree
Hide file tree
Showing 20 changed files with 37 additions and 259 deletions.
4 changes: 2 additions & 2 deletions plugins/coreml/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion plugins/coreml/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,13 @@
"type": "API",
"interfaces": [
"Settings",
"DeviceProvider",
"ObjectDetection",
"ObjectDetectionPreview"
]
},
"devDependencies": {
"@scrypted/sdk": "file:../../sdk"
},
"version": "0.1.30"
"version": "0.1.31"
}
28 changes: 27 additions & 1 deletion plugins/coreml/src/coreml/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def parse_labels(userDefined):
raise Exception("no classes found in model metadata")
return parse_label_contents(classes)

class CoreMLPlugin(PredictPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.Settings):
class CoreMLPlugin(PredictPlugin, scrypted_sdk.Settings, scrypted_sdk.DeviceProvider):
def __init__(self, nativeId: str | None = None):
super().__init__(nativeId=nativeId)

Expand Down Expand Up @@ -107,6 +107,32 @@ def __init__(self, nativeId: str | None = None):
self.loop = asyncio.get_event_loop()
self.minThreshold = 0.2

asyncio.ensure_future(self.prepareVisionFramework(), loop = self.loop)

async def prepareVisionFramework(self):
try:
from vision import VisionPlugin
if not VisionPlugin:
raise Exception("no vision plugin")
await scrypted_sdk.deviceManager.onDevicesChanged({
"devices": [
{
"nativeId": "vision",
"type": scrypted_sdk.ScryptedDeviceType.Builtin.value,
"interfaces": [
scrypted_sdk.ScryptedInterface.ObjectDetection.value,
],
"name": "Vision Framework",
}
]
})
except:
pass

async def getDevice(self, nativeId: str) -> Any:
from vision import VisionPlugin
return VisionPlugin(nativeId)

async def getSettings(self) -> list[Setting]:
model = self.storage.getItem("model") or "Default"
return [
Expand Down
1 change: 1 addition & 0 deletions plugins/coreml/src/requirements.optional.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pyobjc
6 changes: 1 addition & 5 deletions plugins/coreml/src/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,2 @@
#
coremltools==7.1

# pillow for anything not intel linux, pillow-simd is available on x64 linux
Pillow>=5.4.1; sys_platform != 'linux' or platform_machine != 'x86_64'
pillow-simd; sys_platform == 'linux' and platform_machine == 'x86_64'
Pillow>=5.4.1
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,21 @@

import asyncio
import concurrent.futures
import os
from typing import Any, Tuple

import Quartz
import scrypted_sdk
from Foundation import NSData, NSMakeSize
from PIL import Image
from scrypted_sdk import Setting, SettingValue

import Vision
import Quartz
from Foundation import NSData, NSMakeSize

from predict import Prediction, PredictPlugin, from_bounding_box

predictExecutor = concurrent.futures.ThreadPoolExecutor(8, "Vision-Predict")


class VisionPlugin(PredictPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.Settings):
class VisionPlugin(PredictPlugin):
def __init__(self, nativeId: str | None = None):
super().__init__(nativeId=nativeId)

Expand Down
2 changes: 1 addition & 1 deletion plugins/tensorflow-lite/src/predict/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def __init__(self, id: int, score: float, bbox: Tuple[float, float, float, float
self.score = score
self.bbox = bbox

class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter):
class PredictPlugin(DetectPlugin):
labels: dict

def __init__(self, nativeId: str | None = None):
Expand Down
6 changes: 0 additions & 6 deletions plugins/vision-framework/.gitignore

This file was deleted.

12 changes: 0 additions & 12 deletions plugins/vision-framework/.npmignore

This file was deleted.

30 changes: 0 additions & 30 deletions plugins/vision-framework/.vscode/launch.json

This file was deleted.

19 changes: 0 additions & 19 deletions plugins/vision-framework/.vscode/settings.json

This file was deleted.

20 changes: 0 additions & 20 deletions plugins/vision-framework/.vscode/tasks.json

This file was deleted.

6 changes: 0 additions & 6 deletions plugins/vision-framework/README.md

This file was deleted.

86 changes: 0 additions & 86 deletions plugins/vision-framework/package-lock.json

This file was deleted.

44 changes: 0 additions & 44 deletions plugins/vision-framework/package.json

This file was deleted.

1 change: 0 additions & 1 deletion plugins/vision-framework/src/detect

This file was deleted.

4 changes: 0 additions & 4 deletions plugins/vision-framework/src/main.py

This file was deleted.

1 change: 0 additions & 1 deletion plugins/vision-framework/src/predict

This file was deleted.

2 changes: 0 additions & 2 deletions plugins/vision-framework/src/requirements.txt

This file was deleted.

13 changes: 0 additions & 13 deletions plugins/vision-framework/tsconfig.json

This file was deleted.

0 comments on commit e37295f

Please sign in to comment.