Intel Neural Compute Stick + ASI Biont: Edge AI Integration Without a Vendor Lock-In
Intel's Neural Compute Stick 2 (NCS2) changed the way engineers think about edge inference. It is a USB 3.0 device with a dedicated Movidius Myriad X VPU. It can run deep neural networks on a standard x86 or ARM host without a GPU or a cloud connection. But there has always been a hidden cost: using it means installing OpenVINO, writing a Python script, converting a model, and then manually connecting the outputs to your automation system. That is exactly the kind of repetitive work ASI Biont eliminates.
ASI Biont is an AI agent that runs inside your terminal or chat window. It connects to a wide range of industrial protocols — COM ports, MQTT, Modbus, OPC-UA, SSH, HTTP, CAN, EtherNet/IP, and others. But unlike a traditional integration platform, it also has a universal tool: execute_python. When you describe a device or a task in natural language, ASI Biont writes a Python script and executes it in a sandbox. This is how we can integrate an Intel NCS2 in minutes without waiting for a vendor plugin.
In this article, I will show you the exact integration flow, a working example for hard-hat detection, and twelve practical scenarios you can copy into your own chat prompt.
Under the Hood: Why the NCS Needs execute_python
The Intel NCS2 is a host-attached peripheral. It has no network address, no Modbus registers, and no MQTT topics. The only way for software to use it is through the OpenVINO runtime on the host, which in turn talks to the USB driver. ASI Biont can therefore not 'dial into' the stick over Ethernet. Instead, it uses execute_python to run a script on the host where the stick is plugged in. In that script, we use the OpenVINO Python API to load a model, point the NCS2 at the model, and infer on live images or stored files.
Which protocol should you use in ASI Biont? For NCS integration, the answer is always execute_python. If you want the results to be consumed by a PLC or a SCADA system, ASI Biont can simultaneously open an MQTT or Modbus connection. But the VPU itself is reached through Python.
Architecture
User chat -> ASI Biont -> execute_python -> OpenVINO -> NCS2 via USB -> result -> chat / MQTT / HTTP
This is the same pattern ASI Biont uses for Arduino via COM ports, but here there is no serial Bridge. The code runs directly on the PC.
Real Example: Hard-Hat Detection at a Factory Gate
Let's walk through a realistic case. A factory wants to detect workers entering a restricted area without hard hats. The hardware: a USB camera, an Intel NCS2, and a PC running ASI Biont. The user opens the chat and types: 'Use the NCS2 on this PC to run the person-attributes-recognition-crossroad-0038 model from Open Model Zoo. Take frames from camera 0. If a person is detected without a hard hat, print ALERT.'
ASI Biont will ask for the model path or use a default from Open Model Zoo. It then generates a script similar to this:
import cv2
from openvino.inference_engine import IECore
model_xml = 'person-attributes-recognition-crossroad-0038.xml'
model_bin = 'person-attributes-recognition-crossroad-0038.bin'
ie = IECore()
net = ie.read_network(model=model_xml, weights=model_bin)
exec_net = ie.load_network(network=net, device_name='MYRIAD')
cap = cv2.VideoCapture(0)
for _ in range(5):
ok, frame = cap.read()
if not ok:
break
# Resize to the model input shape: 1x3x34x26
input_data = cv2.resize(frame, (26, 34)).transpose((2, 0, 1))
input_data = input_data[None]
result = exec_net.infer(inputs={'input': input_data})
if result['attributes'][0][2] > 0.5:
print('ALERT: no hard hat')
else:
print('OK')
cap.release()
For brevity, the script runs five frames and then exits. That is important because ASI Biont's execute_python has a 30-second timeout. Long-running inference should be handled by generating a separate daemon or by using ASI Biont's MQTT bridge. The result is printed to chat; ASI Biont can also send it to a Webhook.
Twelve Practical Integration Patterns
1. Product Defect Sorting on a Conveyor
Prompt: 'Use NCS2 to run a MobileNet-V2 classifier on frames from camera 1. If object class is defect, send an HTTP POST to the reject station.'
import requests
from openvino.inference_engine import IECore
# model loading and inference ...
if class_id == 7:
requests.post('http://reject-station.local/reject', json={'defect': 1})
ASI Biont fills in model paths and I/O names automatically.
2. Continuous Webcam Monitoring via MQTT
Since execute_python cannot contain an infinite loop, ASI Biont creates a short test script, then a complete standalone Python service. That service connects to your MQTT broker using paho-mqtt and publishes inference results.
import paho.mqtt.publish as publish
publish.single('edge/ncs/result', 'person_detected', hostname='10.0.0.12')
3. Face Recognition for Access Control
Prompt: 'Compare a face from camera with five enrolled employees using cosine similarity. If match, send open to MQTT.' ASI Biont uses an OpenVINO face recognition model on MYRIAD and publishes a boolean to the door controller.
4. OCR for Logistics Labels
Prompt: 'Use NCS2 to run an OCR model on images from a camera facing incoming boxes. Parse the tracking number and send it to the warehouse HTTP endpoint.' The generated script uses the same OpenVINO pipeline and sends a JSON POST.
5. Parking Occupancy Detection
Prompt: 'Detect empty parking spaces in an outdoor lot. Publish the free-space count via MQTT every minute.' ASI Biont creates a short test, then a daemon that publishes to a city parking dashboard.
6. Plant Disease Classification
A user in agriculture asks: 'Classify a leaf image with the NCS2. If disease confidence is above 0.8, send an alert to Telegram.' ASI Biont uses requests.post to api.telegram.org, not a custom plugin.
7. Fall Detection in a Care Room
Prompt: 'Run pose estimation on a care-room camera. If a fall is detected, call the nurses webhook.' The agent writes a script that emits bounding boxes and fall confidence to HTTP.
8. Retail Shelf Monitoring
Prompt: 'Use an object detector to find empty spaces on a retail shelf. If more than three empty zones, send an HTTP request to the store management system.' ASI Biont generates both the inference script and the trigger logic.
9. Industrial Barcode Reading
In a factory, standard barcode readers fail on dirty labels. Prompt: 'Train a CNN-based barcode decoder on NCS2 and return decoded strings over Modbus/TCP.' ASI Biont uses pymodbus in the same execute_python script.
10. Wildlife Camera Trap Detection
Prompt: 'Analyze images from a trail camera. If an animal appears, send a message to the research dashboard.' The agent uses OpenVINO's object detection models and writes the result to a REST API.
11. Predictive Maintenance from Vibration Spectrograms
Prompt: 'Take accelerometer data, compute STFT, and classify the spectrogram on NCS2. Output healthy or faulty flag to the SCADA via OPC-UA.' ASI Biont can use opcua-asyncio and execute_python together.
12. Drone Obstacle Avoidance
Prompt: 'Run object detection on a drone camera and send bounding box coordinates to the flight controller over serial.' ASI Biont uses pyserial to write data to the COM port, while the OpenVINO part runs on NCS2.
Why This Approach Beats a Hard-Coded Plugin
Traditional edge AI platforms require a vendor SDK, a plugin, or a custom compiled binary. With ASI Biont, the integration layer is written for your exact topology. Need to change from camera 0 to camera 2? Say it in chat. Need to add a confidence threshold? Say it in chat. The agent edits the script in real time.
There is no management panel. You don't click 'Add Device'. You describe the device. This is what makes execute_python such a powerful universal adapter for devices like the NCS2.
Limitations and the Right Workaround
ASI Biont's execute_python runs in a sandbox with a 30-second timeout and no indefinite while True loops. For continuous inference, generate a service and run it outside the sandbox; let it publish via MQTT. For direct serial communication, use the Hardware Bridge for COM ports. For the NCS2, the VPU itself stays on USB; the script doesn't need a bridge.
This limitation is actually a feature: it prevents runaway code and forces a clean, event-driven pipeline.
Try It Yourself
You don't need to wait for a custom connector. If a device can be reached from Python, ASI Biont can integrate it. The Intel NCS2 is a perfect example because it exposes no network protocol — only a Python API. Go to asibiont.com, ask ASI Biont to connect your NCS2, and watch it write the code live.
References
- Intel OpenVINO documentation: https://docs.openvino.ai
- Open Model Zoo: https://github.com/openvinotoolkit/open_model_zoo
- Intel Neural Compute Stick 2 developer resources: https://www.intel.com/content/www/us/en/developer/articles/tool/neural-compute-stick.html
Comments