恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Segment Anything使用
首页
资讯中心
/
Segment Anything使用
Segment Anything使用
发布时间:2026/8/3 19:49:01
Segment Anything使用记录科研要用总是忘了怎么用记录一下文章目录Segment Anything使用记录一、Segment Anything介绍二、SAM安装三、利用代码进行介绍一、Segment Anything介绍一个分割大模型可以分割anything二、SAM安装参考官网很简单三、利用代码进行介绍按照官网的安装方法针对该conda环境下的python可以任意使用SAM通过引入fromsegment_anythingimportSamPredictor,sam_model_registry即可。SAM的作用是通过一张图片分割成为多个mask所以我们需要构建绘制mask的函数defshow_mask(mask,ax,color_input):colorcolor_input h,wmask.shape[-2:]mask_imagemask.reshape(h,w,1)*color.reshape(1,1,-1)ax.imshow(mask_image)**而SAM可以指定prompt这里介绍使用点的promptdefappend_point(record_point_list,record_label_list,input_point):input_labelnp.arange(1,len(input_point)1)record_point_list.append(input_point)record_label_list.append(input_label)那么分割函数就可以写为defprediction_with_point(points,labels,results):foriinrange(len(points)):masks,scores,logitspredictor.predict(point_coordspoints[i],point_labelslabels[i],multimask_outputFalse,)results.append(masks)主函数需要先初始化sam_checkpointsxxx.pthmodel_typevit_hdevicecudasamsam_model_registry[model_type](checkpointsam_checkpoints)sam.to(devicedevice)predictorSamPredictor(sam)接着就可以进行图片读取并分割展示imgcv2.imread(xxx.png)imgimg[:,:,::-1]predictor.set_image(img)points[]labels[]# 自主指定二位点这里的示例为点(ab)和(c,d)具体自己给定# prompt可以指定多个多次分割后统一上色append_point(points,labels,np.array([[a,b],[c,d]]))append_point(points,labels,np.array([[e,f]]))masks[]prediction_with_point(points,labels,masks)# 指定mask的颜色colornp.array([144/255,30/255,255/255,0.6])# 画图plt.figure(figsize(10,10))plt.imshow(img)foriinrange(len(masks)):masksmasks[i]show_mask(masks,plt.gca(),color)plt.axis(off)plt.show()