edge-impulse-linux 1.18.3 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cli/linux/linux.js +17 -6
- package/build/cli/linux/linux.js.map +1 -1
- package/build/cli/linux/runner-downloader.d.ts +0 -1
- package/build/cli/linux/runner-downloader.js +5 -11
- package/build/cli/linux/runner-downloader.js.map +1 -1
- package/build/cli/linux/runner-profiling.d.ts +6 -4
- package/build/cli/linux/runner-profiling.js +167 -37
- package/build/cli/linux/runner-profiling.js.map +1 -1
- package/build/cli/linux/runner.js +69 -56
- package/build/cli/linux/runner.js.map +1 -1
- package/build/library/sensors/gstreamer.d.ts +10 -3
- package/build/library/sensors/gstreamer.js +219 -52
- package/build/library/sensors/gstreamer.js.map +1 -1
- package/build/library/sensors/icamera.d.ts +21 -1
- package/build/library/sensors/imagesnap.d.ts +3 -2
- package/build/library/sensors/imagesnap.js +18 -1
- package/build/library/sensors/imagesnap.js.map +1 -1
- package/build/library/sensors/prophesee.d.ts +2 -2
- package/build/library/sensors/sensors-helper.d.ts +6 -1
- package/build/library/sensors/sensors-helper.js +32 -9
- package/build/library/sensors/sensors-helper.js.map +1 -1
- package/build/sdk/studio/sdk/api/adminApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/adminApi.js +4782 -4928
- package/build/sdk/studio/sdk/api/adminApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/authApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/authApi.js +88 -56
- package/build/sdk/studio/sdk/api/authApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/cDNApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/cDNApi.js +76 -53
- package/build/sdk/studio/sdk/api/cDNApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/canaryApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/canaryApi.js +79 -53
- package/build/sdk/studio/sdk/api/canaryApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/classifyApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/classifyApi.js +527 -499
- package/build/sdk/studio/sdk/api/classifyApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/dSPApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/dSPApi.js +938 -942
- package/build/sdk/studio/sdk/api/dSPApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/deploymentApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/deploymentApi.js +680 -603
- package/build/sdk/studio/sdk/api/deploymentApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/devicesApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/devicesApi.js +802 -800
- package/build/sdk/studio/sdk/api/devicesApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/emailVerificationApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/emailVerificationApi.js +184 -190
- package/build/sdk/studio/sdk/api/emailVerificationApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/exportApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/exportApi.js +88 -56
- package/build/sdk/studio/sdk/api/exportApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/featureFlagsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/featureFlagsApi.js +76 -52
- package/build/sdk/studio/sdk/api/featureFlagsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/healthApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/healthApi.js +111 -97
- package/build/sdk/studio/sdk/api/healthApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/impulseApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/impulseApi.js +942 -902
- package/build/sdk/studio/sdk/api/impulseApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/integrationsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/integrationsApi.js +136 -106
- package/build/sdk/studio/sdk/api/integrationsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/jobsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/jobsApi.js +2270 -2326
- package/build/sdk/studio/sdk/api/jobsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/learnApi.d.ts +22 -6
- package/build/sdk/studio/sdk/api/learnApi.js +1597 -1424
- package/build/sdk/studio/sdk/api/learnApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/loginApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/loginApi.js +112 -98
- package/build/sdk/studio/sdk/api/loginApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/metricsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/metricsApi.js +148 -144
- package/build/sdk/studio/sdk/api/metricsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/optimizationApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/optimizationApi.js +844 -844
- package/build/sdk/studio/sdk/api/optimizationApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationBlocksApi.d.ts +8 -6
- package/build/sdk/studio/sdk/api/organizationBlocksApi.js +1974 -1548
- package/build/sdk/studio/sdk/api/organizationBlocksApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationCreateProjectApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/organizationCreateProjectApi.js +700 -652
- package/build/sdk/studio/sdk/api/organizationCreateProjectApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationDataApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/organizationDataApi.js +2074 -1985
- package/build/sdk/studio/sdk/api/organizationDataApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationDataCampaignsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/organizationDataCampaignsApi.js +626 -602
- package/build/sdk/studio/sdk/api/organizationDataCampaignsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationJobsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/organizationJobsApi.js +417 -399
- package/build/sdk/studio/sdk/api/organizationJobsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationPipelinesApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/organizationPipelinesApi.js +419 -401
- package/build/sdk/studio/sdk/api/organizationPipelinesApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationPortalsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/organizationPortalsApi.js +372 -352
- package/build/sdk/studio/sdk/api/organizationPortalsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/organizationsApi.js +4024 -4050
- package/build/sdk/studio/sdk/api/organizationsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/performanceCalibrationApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/performanceCalibrationApi.js +586 -560
- package/build/sdk/studio/sdk/api/performanceCalibrationApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/postProcessingApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/postProcessingApi.js +279 -255
- package/build/sdk/studio/sdk/api/postProcessingApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/projectsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/projectsApi.js +2758 -2818
- package/build/sdk/studio/sdk/api/projectsApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/rawDataApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/rawDataApi.js +3055 -3131
- package/build/sdk/studio/sdk/api/rawDataApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/testApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/testApi.js +152 -108
- package/build/sdk/studio/sdk/api/testApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/themesApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/themesApi.js +341 -305
- package/build/sdk/studio/sdk/api/themesApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/thirdPartyAuthApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/thirdPartyAuthApi.js +387 -353
- package/build/sdk/studio/sdk/api/thirdPartyAuthApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/uploadPortalApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/uploadPortalApi.js +375 -355
- package/build/sdk/studio/sdk/api/uploadPortalApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/userApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/userApi.js +2345 -2452
- package/build/sdk/studio/sdk/api/userApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/vlmApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/vlmApi.js +277 -253
- package/build/sdk/studio/sdk/api/vlmApi.js.map +1 -1
- package/build/sdk/studio/sdk/api/whitelabelsApi.d.ts +4 -6
- package/build/sdk/studio/sdk/api/whitelabelsApi.js +408 -398
- package/build/sdk/studio/sdk/api/whitelabelsApi.js.map +1 -1
- package/build/sdk/studio/sdk/model/addOrganizationDeployBlockRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/addOrganizationDeployBlockRequest.js +5 -0
- package/build/sdk/studio/sdk/model/addOrganizationDeployBlockRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/buildOnDeviceModelRequest.d.ts +6 -0
- package/build/sdk/studio/sdk/model/buildOnDeviceModelRequest.js +5 -0
- package/build/sdk/studio/sdk/model/buildOnDeviceModelRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/buildOrganizationOnDeviceModelRequest.d.ts +6 -0
- package/build/sdk/studio/sdk/model/buildOrganizationOnDeviceModelRequest.js +5 -0
- package/build/sdk/studio/sdk/model/buildOrganizationOnDeviceModelRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/deployPretrainedModelRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/deployPretrainedModelRequest.js +5 -0
- package/build/sdk/studio/sdk/model/deployPretrainedModelRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/deploymentTarget.d.ts +2 -0
- package/build/sdk/studio/sdk/model/deploymentTarget.js +5 -0
- package/build/sdk/studio/sdk/model/deploymentTarget.js.map +1 -1
- package/build/sdk/studio/sdk/model/models.d.ts +47 -7
- package/build/sdk/studio/sdk/model/models.js +33 -22
- package/build/sdk/studio/sdk/model/models.js.map +1 -1
- package/build/sdk/studio/sdk/model/organizationDeployBlock.d.ts +9 -0
- package/build/sdk/studio/sdk/model/organizationDeployBlock.js +10 -0
- package/build/sdk/studio/sdk/model/organizationDeployBlock.js.map +1 -1
- package/build/sdk/studio/sdk/model/projectDeploymentTarget.d.ts +2 -0
- package/build/sdk/studio/sdk/model/projectDeploymentTarget.js +5 -0
- package/build/sdk/studio/sdk/model/projectDeploymentTarget.js.map +1 -1
- package/build/sdk/studio/sdk/model/transferLearningModel.d.ts +4 -0
- package/build/sdk/studio/sdk/model/transferLearningModel.js +5 -0
- package/build/sdk/studio/sdk/model/transferLearningModel.js.map +1 -1
- package/build/sdk/studio/sdk/model/updateOrganizationDeployBlockRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/updateOrganizationDeployBlockRequest.js +5 -0
- package/build/sdk/studio/sdk/model/updateOrganizationDeployBlockRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/uploadPretrainedModelByUrlRequest.d.ts +47 -0
- package/build/sdk/studio/sdk/model/uploadPretrainedModelByUrlRequest.js +55 -0
- package/build/sdk/studio/sdk/model/uploadPretrainedModelByUrlRequest.js.map +1 -0
- package/build/sdk/studio/sdk/model/uploadPretrainedModelRequest.d.ts +4 -0
- package/build/sdk/studio/sdk/model/uploadPretrainedModelRequest.js +5 -0
- package/build/sdk/studio/sdk/model/uploadPretrainedModelRequest.js.map +1 -1
- package/package.json +4 -2
- package/test/gstreamer.test.ts +984 -3788
- package/test/imx219-csi-on-arduino-unoq-inspect.txt +564 -0
- package/test/imx219-csi-on-arduino-unoq-monitor.txt +285 -0
- package/test/logitech-c920-on-ubuntu-22-parallells.txt +211 -0
- package/test/logitech-c922-on-rpi-bullseye-2.txt +270 -0
- package/test/logitech-c922-on-rpi-bullseye.txt +331 -0
- package/test/macbook-pro-w-internal-and-external-cam-inspect.txt +1496 -0
- package/test/macbook-pro-w-internal-and-external-cam-monitor.txt +209 -0
- package/test/nvidia-jetson-w-csi-camera.txt +94 -0
- package/test/nvidia-jetson-w-logitech-c922-monitor.txt +204 -0
- package/test/nvidia-orin-w-basler-camera-inspect.txt +859 -0
- package/test/nvidia-orin-w-basler-camera-pylonsrc.txt +806 -0
- package/test/rb1-debian-inspect.txt +568 -0
- package/test/rb1-debian-libcamera-monitor.txt +190 -0
- package/test/rpi-cam-v3-c920-webcam-bookworm-no-libcamerasrc.txt +383 -0
- package/test/rpi4-trixie-csi-gst-device-monitor.txt +1110 -0
- package/test/rpi4-trixie-csi-gst-inspect.txt +1379 -0
- package/test/rpi5-with-csi-imx500-camera-monitor.txt +3617 -0
- package/test/rpi5-with-csi-imx708-monitor.txt +2277 -0
- package/test/usb-camera-on-rpi-w-image-jpg.txt +130 -0
- /package/test/{qualcomm-rb3-inspect-qtiqmmfsrc.txt → qualcomm-rb3-gen-2-qimp-linux-1-2-with-logitech-brio-inspect-qtiqmmfsrc.txt} +0 -0
- /package/test/{qualcomm-rb3-inspect.txt → qualcomm-rb3-gen-2-qimp-linux-1-2-with-logitech-brio-inspect.txt} +0 -0
- /package/test/{qualcomm-rb3-monitor-brio.txt → qualcomm-rb3-gen-2-qimp-linux-1-2-with-logitech-brio-monitor.txt} +0 -0
- /package/test/{triple-vision-camera-inspect.txt → triple-vision-ai-industrial-camera-inspect.txt} +0 -0
- /package/test/{triple-vision-camera-monitor.txt → triple-vision-ai-industrial-camera-monitor.txt} +0 -0
package/build/cli/linux/linux.js
CHANGED
|
@@ -33,6 +33,8 @@ commander_1.default
|
|
|
33
33
|
'If this argument is omitted, and multiple cameras are found, a CLI selector is shown.')
|
|
34
34
|
.option('--microphone <microphone>', 'Which microphone to use (either the name, or the device address). ' +
|
|
35
35
|
'If this argument is omitted, and multiple microphones are found, a CLI selector is shown.')
|
|
36
|
+
.option('--camera-color-format <format>', 'Set camera color format according to GStreamer caps format, e.g. "RGB", "BGR", "GRAY8", "NV12", "I420"' +
|
|
37
|
+
' Used only on Raspberry Pi 5 with GStreamer libcamera backend. Default format on RPi 5 is "YUY2".')
|
|
36
38
|
.option('--verbose', 'Enable debug logs')
|
|
37
39
|
.option('--greengrass', 'Enable AWS IoT greengrass integration mode')
|
|
38
40
|
.allowUnknownOption(true)
|
|
@@ -53,6 +55,7 @@ const widthArgv = commander_1.default.width;
|
|
|
53
55
|
const heightArgv = commander_1.default.height;
|
|
54
56
|
const cameraArgv = commander_1.default.camera;
|
|
55
57
|
const microphoneArgv = commander_1.default.microphone;
|
|
58
|
+
const cameraColorFormatArgv = commander_1.default.cameraColorFormat;
|
|
56
59
|
if ((commander_1.default.width && !commander_1.default.height) || (!commander_1.default.width && commander_1.default.height)) {
|
|
57
60
|
console.error('--width and --height need to either be both specified or both omitted');
|
|
58
61
|
process.exit(1);
|
|
@@ -91,12 +94,10 @@ const cliOptions = {
|
|
|
91
94
|
let camera;
|
|
92
95
|
let configFactory;
|
|
93
96
|
let isExiting = false;
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
94
98
|
(async () => {
|
|
95
99
|
try {
|
|
96
|
-
const cameraType =
|
|
97
|
-
process.platform === 'darwin' ? sensors_helper_1.CameraType.ImagesnapCamera :
|
|
98
|
-
process.platform === 'linux' ? sensors_helper_1.CameraType.GStreamerCamera :
|
|
99
|
-
sensors_helper_1.CameraType.UnknownCamera;
|
|
100
|
+
const cameraType = (0, sensors_helper_1.getCameraType)();
|
|
100
101
|
const init = await (0, init_cli_app_1.initCliApp)(cliOptions);
|
|
101
102
|
const config = init.config;
|
|
102
103
|
configFactory = init.configFactory;
|
|
@@ -160,16 +161,23 @@ let isExiting = false;
|
|
|
160
161
|
console.log(SERIAL_PREFIX, 'Using microphone', audioDeviceName);
|
|
161
162
|
}
|
|
162
163
|
if (!noCamera) {
|
|
163
|
-
|
|
164
|
+
const initedCamera = await (0, sensors_helper_1.initCamera)({
|
|
164
165
|
cameraType: cameraType,
|
|
165
|
-
cameraDeviceNameInConfig: await configFactory.getCamera(),
|
|
166
|
+
cameraDeviceNameInConfig: cleanArgv ? undefined : await configFactory.getCamera(),
|
|
166
167
|
cameraNameArgv: cameraArgv,
|
|
167
168
|
dimensions: cameraDimensions,
|
|
168
169
|
gstLaunchArgs: gstLaunchArgsArgv,
|
|
169
170
|
verboseOutput: verboseArgv,
|
|
171
|
+
cameraColorFormat: cameraColorFormatArgv,
|
|
170
172
|
inferenceDimensions: undefined,
|
|
171
173
|
profiling: false,
|
|
172
174
|
});
|
|
175
|
+
camera = await initedCamera.start();
|
|
176
|
+
const cameraOpts = camera.getLastOptions();
|
|
177
|
+
if (cameraOpts) {
|
|
178
|
+
await configFactory.storeCamera(cameraOpts.device);
|
|
179
|
+
console.log(SERIAL_PREFIX, 'Connected to camera ' + cameraOpts.device);
|
|
180
|
+
}
|
|
173
181
|
camera.on('error', error => {
|
|
174
182
|
if (isExiting)
|
|
175
183
|
return;
|
|
@@ -195,6 +203,9 @@ let isExiting = false;
|
|
|
195
203
|
}
|
|
196
204
|
catch (ex) {
|
|
197
205
|
console.error('Failed to initialize linux tool', ex);
|
|
206
|
+
if (verboseArgv === false) {
|
|
207
|
+
console.error('Re-run this command with --verbose to enable debug logs');
|
|
208
|
+
}
|
|
198
209
|
if (camera) {
|
|
199
210
|
await camera.stop();
|
|
200
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":";;;;;;AAEA,wDAAgC;AAChC,gEAAwE;AACxE,8EAAkE;AAGlE,0DAAgC;AAChC,gDAAwB;AACxB,4CAAoB;AACpB,4CAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,6 @@ export declare class RunnerDownloader extends EventEmitter<{
|
|
|
24
24
|
getLastDeploymentVersion(): Promise<number | null>;
|
|
25
25
|
downloadDeployment(): Promise<Buffer>;
|
|
26
26
|
private buildModel;
|
|
27
|
-
private static isGpuDelegateAvailable;
|
|
28
27
|
}
|
|
29
28
|
export declare class RunnerModelPath {
|
|
30
29
|
private _projectId;
|
|
@@ -30,14 +30,18 @@ class RunnerDownloader extends tsee_1.EventEmitter {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
else if (process.platform === 'linux') {
|
|
33
|
+
// 32-bit ARM
|
|
33
34
|
if (process.arch === 'arm') {
|
|
34
35
|
let uname = (await (0, spawn_helper_1.spawnHelper)('uname', ['-m'])).trim();
|
|
35
|
-
|
|
36
|
+
// e.g. Rpi4 with 32-bit OS version has uname "aarch64" but process.arch "arm" -
|
|
37
|
+
// so both should be valid here
|
|
38
|
+
if (uname !== 'armv7l' && uname !== 'aarch64') {
|
|
36
39
|
throw new Error('Unsupported architecture "' + uname + '", only ' +
|
|
37
40
|
'armv7l or aarch64 supported for now');
|
|
38
41
|
}
|
|
39
42
|
downloadType = 'runner-linux-armv7';
|
|
40
43
|
}
|
|
44
|
+
// 64-bit ARM
|
|
41
45
|
else if (process.arch === 'arm64') {
|
|
42
46
|
let uname = (await (0, spawn_helper_1.spawnHelper)('uname', ['-m'])).trim();
|
|
43
47
|
if (uname !== 'aarch64') {
|
|
@@ -76,9 +80,6 @@ class RunnerDownloader extends tsee_1.EventEmitter {
|
|
|
76
80
|
else if (await checkFileExists('/usr/lib/libQnnTFLiteDelegate.so')) {
|
|
77
81
|
downloadType = 'runner-linux-aarch64-qnn';
|
|
78
82
|
}
|
|
79
|
-
else if (await this.isGpuDelegateAvailable()) {
|
|
80
|
-
downloadType = 'runner-linux-aarch64-gpu';
|
|
81
|
-
}
|
|
82
83
|
else {
|
|
83
84
|
downloadType = 'runner-linux-aarch64';
|
|
84
85
|
}
|
|
@@ -171,13 +172,6 @@ class RunnerDownloader extends tsee_1.EventEmitter {
|
|
|
171
172
|
console.log(BUILD_PREFIX, d.trim());
|
|
172
173
|
});
|
|
173
174
|
}
|
|
174
|
-
static async isGpuDelegateAvailable() {
|
|
175
|
-
const gpuDelegatePath = await (0, spawn_helper_1.spawnHelper)('find', ['/usr/lib', '-type', 'f', '-name', 'libtensorflowlite_gpu_delegate.so']);
|
|
176
|
-
if (gpuDelegatePath.trim() !== '') {
|
|
177
|
-
return true;
|
|
178
|
-
}
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
175
|
}
|
|
182
176
|
exports.RunnerDownloader = RunnerDownloader;
|
|
183
177
|
class RunnerModelPath {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-downloader.js","sourceRoot":"","sources":["../../../cli/linux/runner-downloader.ts"],"names":[],"mappings":";;;;;;AACA,+BAAoC;AACpC,qEAAiE;AACjE,4CAAoB;AAEpB,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAC5C,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C,MAAa,gBAAiB,SAAQ,mBAEpC;IACE,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAA+B;QAC1D,IAAI,WAAW,EAAE;YACb,OAAO,WAAW,CAAC;SACtB;QAED,IAAI,YAAoB,CAAC;QACzB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;gBACxB,YAAY,GAAG,mBAAmB,CAAC;aACtC;iBACI,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC/B,YAAY,GAAG,kBAAkB,CAAC;aACrC;iBACI;gBACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,OAAO,CAAC,IAAI,GAAG,UAAU;oBACpE,gCAAgC,CAAC,CAAC;aACzC;SACJ;aACI,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;YACnC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;gBACxB,IAAI,KAAK,GAAG,CAAC,MAAM,IAAA,0BAAW,EAAC,OAAO,EAAE,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,IAAI,KAAK,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"runner-downloader.js","sourceRoot":"","sources":["../../../cli/linux/runner-downloader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ICamera, ImageClassifier } from "../../library";
|
|
2
2
|
export declare class RunnerProfiling {
|
|
3
3
|
private _startupTime;
|
|
4
|
-
private
|
|
5
|
-
private
|
|
6
|
-
private
|
|
7
|
-
private
|
|
4
|
+
private _ptsFirstEv;
|
|
5
|
+
private _ptsLastEv;
|
|
6
|
+
private _eventsByPts;
|
|
7
|
+
private _filenameToPts;
|
|
8
8
|
constructor(camera: ICamera, imgClassifier: ImageClassifier);
|
|
9
|
+
printSummary(): void;
|
|
9
10
|
private logWithFilename;
|
|
11
|
+
private getEventByPtsForFilename;
|
|
10
12
|
}
|
|
@@ -5,67 +5,197 @@ const PROFILING_PREFIX = '\x1b[35m[PRF]\x1b[0m';
|
|
|
5
5
|
class RunnerProfiling {
|
|
6
6
|
constructor(camera, imgClassifier) {
|
|
7
7
|
this._startupTime = Date.now();
|
|
8
|
-
this.
|
|
9
|
-
this.
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
12
|
-
camera.on('profilingInfo', (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
this._ptsFirstEv = new Map();
|
|
9
|
+
this._ptsLastEv = new Map();
|
|
10
|
+
this._eventsByPts = new Map();
|
|
11
|
+
this._filenameToPts = new Map();
|
|
12
|
+
camera.on('profilingInfo', (ev) => {
|
|
13
|
+
if (ev.type === 'frame_ready' || ev.type === 'event-without-filename') {
|
|
14
|
+
const key = ev.type === 'frame_ready' ? 'frame_ready' : ev.name;
|
|
15
|
+
const pts = ev.pts;
|
|
16
|
+
const date = ev.ts;
|
|
17
|
+
let eventByPts;
|
|
18
|
+
if (ev.type === 'frame_ready') {
|
|
19
|
+
this._ptsFirstEv.set(pts, Date.now());
|
|
20
|
+
this._ptsLastEv.set(pts, Date.now());
|
|
21
|
+
eventByPts = { offset: ev.offset, events: [] };
|
|
22
|
+
this._eventsByPts.set(pts, eventByPts);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (!this._eventsByPts.has(pts)) {
|
|
26
|
+
console.log(PROFILING_PREFIX, `received camera profilingInfo, but cannot find pts: ${JSON.stringify(ev)}`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
eventByPts = this._eventsByPts.get(pts);
|
|
30
|
+
}
|
|
31
|
+
const msSinceStart = `${(+date - this._startupTime).toString().padStart(8, ' ')}ms.`;
|
|
32
|
+
const msSinceBeginEv = `${(Date.now() - this._ptsFirstEv.get(pts)).toString().padStart(4, ' ')}ms.`;
|
|
33
|
+
const msSinceLastEv = `${(Date.now() - this._ptsLastEv.get(pts)).toString().padStart(4, ' ')}ms.`;
|
|
34
|
+
console.log(PROFILING_PREFIX, `ts=${msSinceStart} frame=${eventByPts.offset} ts_ev=${msSinceBeginEv} since_last=${msSinceLastEv} ` +
|
|
35
|
+
`module=camera ev=${key}`);
|
|
36
|
+
this._ptsLastEv.set(pts, Date.now());
|
|
37
|
+
eventByPts.events.push({
|
|
38
|
+
timestampMs: Date.now() - this._ptsFirstEv.get(pts),
|
|
39
|
+
eventName: key,
|
|
40
|
+
});
|
|
18
41
|
}
|
|
19
|
-
else {
|
|
20
|
-
|
|
42
|
+
else if (ev.type === 'pts-to-filename') {
|
|
43
|
+
if (this._filenameToPts.has(ev.filename)) {
|
|
44
|
+
const currPts = this._filenameToPts.get(ev.filename);
|
|
45
|
+
if (currPts !== ev.pts) {
|
|
46
|
+
console.log(PROFILING_PREFIX, `[WARN] pts changed for "${ev.filename} (curr=${currPts}, new=${ev.pts})`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
this._filenameToPts.set(ev.filename, ev.pts);
|
|
50
|
+
}
|
|
51
|
+
else if (ev.type === 'event-with-filename') {
|
|
52
|
+
const evByPts = this.getEventByPtsForFilename(ev.filename);
|
|
53
|
+
if (!evByPts)
|
|
54
|
+
return;
|
|
55
|
+
evByPts.eventByPts.events.push({
|
|
56
|
+
timestampMs: Date.now() - evByPts.firstEventMs,
|
|
57
|
+
eventName: ev.name,
|
|
58
|
+
});
|
|
59
|
+
this.logWithFilename(ev.ts, ev.filename, `module=camera ev=${ev.name}`);
|
|
21
60
|
}
|
|
22
|
-
const msSinceStart = `${(+date - this._startupTime).toString().padStart(8, ' ')}ms.`;
|
|
23
|
-
const msSinceBeginEv = `${(Date.now() - this._frameIxFirstEv.get(id)).toString().padStart(4, ' ')}ms.`;
|
|
24
|
-
const msSinceLastEv = `${(Date.now() - this._frameIxLastEv.get(id)).toString().padStart(4, ' ')}ms.`;
|
|
25
|
-
console.log(PROFILING_PREFIX, `ts=${msSinceStart} frame_id=${id} ts_ev=${msSinceBeginEv} since_last=${msSinceLastEv} ` +
|
|
26
|
-
`module=camera ev=${key}`);
|
|
27
|
-
this._frameIxLastEv.set(id, Date.now());
|
|
28
61
|
});
|
|
29
62
|
camera.on('snapshot', (buffer, filename) => {
|
|
30
|
-
this.
|
|
31
|
-
this.logWithFilename(filename, `module=camera ev=snapshot`);
|
|
63
|
+
this.logWithFilename(new Date(), filename, `module=camera ev=snapshot`);
|
|
32
64
|
});
|
|
65
|
+
const handleImgClassifierEvent = (filename, key) => {
|
|
66
|
+
const evByPts = this.getEventByPtsForFilename(filename);
|
|
67
|
+
if (!evByPts)
|
|
68
|
+
return;
|
|
69
|
+
evByPts.eventByPts.events.push({
|
|
70
|
+
timestampMs: Date.now() - evByPts.firstEventMs,
|
|
71
|
+
eventName: key,
|
|
72
|
+
});
|
|
73
|
+
this.logWithFilename(new Date(), filename, `module=img_classifier ev=${key}`);
|
|
74
|
+
};
|
|
33
75
|
imgClassifier.on('profileSnapshotHandlerBegin', filename => {
|
|
34
|
-
|
|
76
|
+
handleImgClassifierEvent(filename, `snapshot_handler_begin`);
|
|
35
77
|
});
|
|
36
78
|
imgClassifier.on('profileSnapshotHandlerEnd', filename => {
|
|
37
|
-
|
|
79
|
+
handleImgClassifierEvent(filename, `snapshot_handler_end`);
|
|
38
80
|
});
|
|
39
81
|
imgClassifier.on('profileFeaturesBegin', filename => {
|
|
40
|
-
|
|
82
|
+
handleImgClassifierEvent(filename, `features_begin`);
|
|
41
83
|
});
|
|
42
84
|
imgClassifier.on('profileFeaturesEnd', filename => {
|
|
43
|
-
|
|
85
|
+
handleImgClassifierEvent(filename, `features_end`);
|
|
44
86
|
});
|
|
45
87
|
imgClassifier.on('profileClassifyBegin', filename => {
|
|
46
|
-
|
|
88
|
+
handleImgClassifierEvent(filename, `classify_begin`);
|
|
47
89
|
});
|
|
48
90
|
imgClassifier.on('profileClassifyEnd', (filename, timingCppMs) => {
|
|
49
|
-
|
|
91
|
+
handleImgClassifierEvent(filename, `classify_end inference_time_cpp=${JSON.stringify(timingCppMs)}`);
|
|
50
92
|
});
|
|
51
93
|
imgClassifier.on('profileEmitResultBegin', filename => {
|
|
52
|
-
|
|
94
|
+
handleImgClassifierEvent(filename, `emit_result_begin`);
|
|
53
95
|
});
|
|
54
96
|
imgClassifier.on('profileEmitResultEnd', filename => {
|
|
55
|
-
|
|
97
|
+
handleImgClassifierEvent(filename, `emit_result_end`);
|
|
56
98
|
});
|
|
57
99
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
100
|
+
printSummary() {
|
|
101
|
+
let frameReadyToEmitResultEnd = { sum: 0, count: 0 };
|
|
102
|
+
let frameReadyToClassifyBegin = { sum: 0, count: 0 };
|
|
103
|
+
let eventMap = {};
|
|
104
|
+
for (const frameId of this._eventsByPts.keys()) {
|
|
105
|
+
const val = this._eventsByPts.get(frameId);
|
|
106
|
+
for (let ix = 1; ix < val.events.length; ix++) {
|
|
107
|
+
const prev = val.events[ix - 1];
|
|
108
|
+
const curr = val.events[ix];
|
|
109
|
+
const prevEvName = prev.eventName.startsWith('classify_end') ?
|
|
110
|
+
'classify_end' :
|
|
111
|
+
prev.eventName;
|
|
112
|
+
const currEvName = curr.eventName.startsWith('classify_end') ?
|
|
113
|
+
'classify_end' :
|
|
114
|
+
curr.eventName;
|
|
115
|
+
const eventMapKey = `${prevEvName}:${currEvName}`;
|
|
116
|
+
if (!eventMap[eventMapKey]) {
|
|
117
|
+
eventMap[eventMapKey] = { count: 0, sum: 0 };
|
|
118
|
+
}
|
|
119
|
+
eventMap[eventMapKey].count++;
|
|
120
|
+
eventMap[eventMapKey].sum += (curr.timestampMs - prev.timestampMs);
|
|
121
|
+
}
|
|
122
|
+
let frameReady;
|
|
123
|
+
let classifyBegin;
|
|
124
|
+
let resultEnd;
|
|
125
|
+
for (const event of val.events) {
|
|
126
|
+
if (event.eventName === 'frame_ready') {
|
|
127
|
+
frameReady = event.timestampMs;
|
|
128
|
+
}
|
|
129
|
+
else if (event.eventName === 'classify_begin') {
|
|
130
|
+
classifyBegin = event.timestampMs;
|
|
131
|
+
}
|
|
132
|
+
else if (event.eventName === 'emit_result_end') {
|
|
133
|
+
resultEnd = event.timestampMs;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// only allow events that have both frame_ready and emit_result_end
|
|
137
|
+
if (typeof frameReady !== 'number' || typeof resultEnd !== 'number')
|
|
138
|
+
continue;
|
|
139
|
+
if (typeof classifyBegin === 'number') {
|
|
140
|
+
frameReadyToClassifyBegin.sum += classifyBegin;
|
|
141
|
+
frameReadyToClassifyBegin.count++;
|
|
142
|
+
}
|
|
143
|
+
frameReadyToEmitResultEnd.sum += (resultEnd - frameReady);
|
|
144
|
+
frameReadyToEmitResultEnd.count++;
|
|
145
|
+
}
|
|
146
|
+
console.log('');
|
|
147
|
+
console.log(PROFILING_PREFIX, `Profiling summary:`);
|
|
148
|
+
if (frameReadyToEmitResultEnd.count > 0) {
|
|
149
|
+
console.log(PROFILING_PREFIX, ` Full inference (frame_ready → emit_result_end): avg=` +
|
|
150
|
+
(frameReadyToEmitResultEnd.sum / frameReadyToEmitResultEnd.count).toFixed(1) + 'ms.', `(${frameReadyToEmitResultEnd.count} frames)`);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
console.log(PROFILING_PREFIX, ` Full inference (frame_ready → emit_result_end): N/A`);
|
|
154
|
+
}
|
|
155
|
+
console.log(PROFILING_PREFIX);
|
|
156
|
+
console.log(PROFILING_PREFIX, `Per-event summary:`);
|
|
157
|
+
if (frameReadyToClassifyBegin.count > 0) {
|
|
158
|
+
console.log(PROFILING_PREFIX, ` frame_ready → classify_begin: avg=` +
|
|
159
|
+
(frameReadyToClassifyBegin.sum / frameReadyToClassifyBegin.count).toFixed(1) + 'ms.', `(${frameReadyToClassifyBegin.count} frames)`);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
console.log(PROFILING_PREFIX, ` frame_ready → classify_begin: N/A`);
|
|
163
|
+
}
|
|
164
|
+
for (const key of Object.keys(eventMap)) {
|
|
165
|
+
const [ev1, ev2] = key.split(':');
|
|
166
|
+
const val = eventMap[key];
|
|
167
|
+
console.log(PROFILING_PREFIX, ` ${ev1} → ${ev2}: avg=` +
|
|
168
|
+
(val.sum / val.count).toFixed(1) + 'ms.', `(${val.count} frames)`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
logWithFilename(ts, filename, msg) {
|
|
172
|
+
const evByPts = this.getEventByPtsForFilename(filename);
|
|
173
|
+
if (!evByPts)
|
|
62
174
|
return;
|
|
175
|
+
const msSinceStart = `${(+ts - this._startupTime).toString().padStart(8, ' ')}ms.`;
|
|
176
|
+
const msSinceBeginEv = `${(+ts - evByPts.firstEventMs).toString().padStart(4, ' ')}ms.`;
|
|
177
|
+
const msSinceLastEv = `${(+ts - evByPts.lastEventMs).toString().padStart(4, ' ')}ms.`;
|
|
178
|
+
console.log(PROFILING_PREFIX, `ts=${msSinceStart} frame=${evByPts.eventByPts.offset} ts_ev=${msSinceBeginEv} since_last=${msSinceLastEv} filename=${filename} ${msg}`);
|
|
179
|
+
this._ptsLastEv.set(evByPts.pts, +ts);
|
|
180
|
+
}
|
|
181
|
+
getEventByPtsForFilename(filename) {
|
|
182
|
+
const pts = this._filenameToPts.get(filename);
|
|
183
|
+
if (!pts) {
|
|
184
|
+
console.log(PROFILING_PREFIX, `[WARN] filename "${filename}" does not have pts attached`);
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
const eventByPts = this._eventsByPts.get(pts);
|
|
188
|
+
if (!eventByPts) {
|
|
189
|
+
return null;
|
|
63
190
|
}
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
191
|
+
const firstEventMs = this._ptsFirstEv.get(pts) || 0;
|
|
192
|
+
const lastEventMs = this._ptsLastEv.get(pts) || 0;
|
|
193
|
+
return {
|
|
194
|
+
pts,
|
|
195
|
+
firstEventMs,
|
|
196
|
+
lastEventMs,
|
|
197
|
+
eventByPts,
|
|
198
|
+
};
|
|
69
199
|
}
|
|
70
200
|
}
|
|
71
201
|
exports.RunnerProfiling = RunnerProfiling;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-profiling.js","sourceRoot":"","sources":["../../../cli/linux/runner-profiling.ts"],"names":[],"mappings":";;;AACA,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-profiling.js","sourceRoot":"","sources":["../../../cli/linux/runner-profiling.ts"],"names":[],"mappings":"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"}
|