如何解决如何使用经过训练的 AWS 模型执行实时对象检测
使用 AWS SageMaker 成功训练对象检测模型后,如何使用此模型对 RTSP 视频执行实时对象检测?
解决方法
实时物体检测的一种解决方案如下。
训练模型后,将模型上传到 S3。您可以使用
检查这个$aws sagemaker list-training-jobs --region us-east-1
然后,您需要在 Amazon SageMaker 终端节点上使用经过训练的模型。你可以使用这个来做到这一点:
object_detector = estimator.deploy(initial_instance_count = 1,instance_type = 'ml.g4dn.xlarge')
在您的模型附加到端点后,您需要创建一个 API,以允许用户将输入传递给您的训练模型以进行推理。您可以使用 Serverless 执行此操作。使用 Serverless,您可以创建一个模板,该模板将创建一个 Lambda 函数作为 handler.py
和 serverless.yml,它需要根据您的应用程序的运行方式进行配置。确保在 serverless.yml
中指定端点名称 SAGEMAKER_ENDPOINT_NAME
以及 Resource: ${ssm:sagemakerarn}
。这是一个需要传入的允许策略资源(AWS Systems Manager 代理)参数。在您的 lambda 函数中,确保您调用了您的 SageMaker 终端节点。
您现在可以在此处部署 API 以进行实时检测:
serverless deploy -v
最后,您可以使用 curl 来调用您的 API。
请参阅 here 了解详细的演练。
,您尚未指定将在何处托管模型:在 AWS、移动设备或其他设备上。但是,一般的方法是您的模型(假设 CNN 处理图像)将一次消耗一帧。您尚未指定编程语言或库,因此这里是伪代码中的一般过程:
while True:
video_frame = get_next_rtsp_frame()
detections = model.predict(video_frame)
# There might be multiple objects detected,handle each one:
for detected_object in detections:
(x1,y1,x2,y2,score) = detected_object # bounding box
# use the bounding box information,say to draw a box on the image
实时视频流要求的一个挑战是避免延迟,具体取决于您的平台以及您在循环中进行的处理类型。您可以跳过帧或不缓冲丢失的帧来解决此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。