python目录下提供了Python例程,具体情况如下:
序号 | Python例程 | 说明 |
---|---|---|
1 | sam2_opencv.py | 使用OpenCV解码、SAIL 图像编码(encoder)、SAIL图像解码(decoder) |
算能的SoC平台(如SE、SM系列边缘设备)在/opt/sophon/
下已经预装了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包。但除此之外您还需要交叉编译安装sophon-sail,具体可参考交叉编译安装sophon-sail。
在运行之前您需要先安装一些Python依赖, 可以通过pip直接安装
pip3 install opencv-python pympler tqdm
如果您需要测试精度,您还需要安装pycocotools:
pip3 install pycocotools
sam_opencv.py的参数说明如下:
usage: sam2_opencv.py [-h] [--mode MODE] [--img_path IMG_PATH] [--points POINTS] [--label LABEL] [--dataset_type DATASET_TYPE] [--gt_path GT_PATH]
[--detect_num DETECT_NUM] [--output_dir OUTPUT_DIR] [--encoder_bmodel ENCODER_BMODEL] [--decoder_bmodel DECODER_BMODEL]
[--select_best SELECT_BEST]
optional arguments:
-h, --help show this help message and exit
--mode 指定分割模式。可选值为 'img' 或 'dataset'。在 'img' 模式下,需要提供图片路径(img_path)、坐标点 (points) 和标签 (label);在 'dataset' 模式下,需要提供图片路径 (img_path)、数据集类型 (dataset_type) 和真值路径 (gt_path)。
--img_path 输入图片或数据集的路径
--points 输入点的坐标。可以是单个点的格式 [[x, y]], 多点的格式[[x1, y1], [x2, y2]] 或者矩形框的格式 [[x1, y1, w, h]](类似于COCO数据集的边界框格式)
--label 输入点的标签
--dataset_type 数据集类型。目前支持的选项包括 'COCODataset'
--gt_path 真值文件的路径
--detect_num 在数据集模式下,用于分割的图像数量
--output_dir 用于保存模型输出结果的目录
--encoder_bmodel 编码器模型文件的路径
--decoder_bmodel 解码器模型文件的路径
--select_best 是否选择最佳掩模进行分割
运行sam2_opencv.py进行例程测试,此处以datasets/truck.jpg
为例进行测试,输入一个point坐标,并指定其标签
原始图像:
python3 python/sam2_opencv.py --img_path datasets/truck.jpg --points '[[500, 375]]' --label 1 --encoder_bmodel models/BM1688/image_encoder/sam2_encoder_f16_1b_2core.bmodel --decoder_bmodel models/BM1688/image_decoder/sam2_decoder_f16_1b_2core.bmodel
输出结果为:
输入两个个point坐标,并指定其标签
python3 python/sam2_opencv.py --img_path datasets/truck.jpg --points '[[500, 375], [345, 300]]' --label 1 --encoder_bmodel models/BM1688/image_encoder/sam2_encoder_f16_1b_2core.bmodel --decoder_bmodel models/BM1688/image_decoder/sam2_decoder_f16_1b_2core.bmodel
输出结果为:
输入一个框,并指定其标签
python3 python/sam2_opencv.py --img_path datasets/truck.jpg --points '[[900, 300, 350, 350]]' --label 1 --encoder_bmodel models/BM1688/image_encoder/sam2_encoder_f16_1b_2core.bmodel --decoder_bmodel models/BM1688/image_decoder/sam2_decoder_f16_1b_2core.bmodel
输出结果为:
sam2_opencv中的处理流程,遵循以下流程图: