Segment Anything中将生成的多个mask结果拼接在一起,可视化(批量处理)

Masked array掩膜数组操作:建立、合并与分割(Numpy) 目录 建立masked array 横向合并masked array 纵向合并masked array 分割masked array 官方网站参考 阅读详情

使用提供的amg.py生成测试图片mask
在这里插入图片描述
将多个mask拼接到一起,并改变每个png中白色区域像素值颜色

import numpy as np
from PIL import Image
import os
import matplotlib.pyplot as plt
from PIL import ImageColor
def compose_images(img_path):

    masks_file_list = os.listdir(img_path)

    for mask_file in masks_file_list:
        mask_path = os.path.join(img_path, mask_file)
        png_num = len(os.listdir(mask_path))-1
        # print(png_num)
        img_list = [] 
        color_list = []
        img = np.array(Image.open("./0.png"))  #需要更改,随便一张生成的mask图
        img_list.append(img)
        image_name = mask_file + ".png"
        save_path_ = os.path.join(img_path,"compose")
        os.makedirs(save_path_, exist_ok=True)
        save_path = os.path.join(save_path_, image_name)
        new_img = np.zeros_like(img_list[0])
        Image.fromarray(new_img).save(save_path)
        image_pil = Image.open(save_path)
        image_pil = image_pil.convert("RGB")
        
        for root,dirs,files in os.walk(mask_path):
            for image in files:
                
                # 存储图片的列表
                # color_list = [[255,0,0], [0,255,0], [0,0,255]] # 颜色列表
                
                color = list(np.random.choice(range(256),size=3))
                # for i in range(png_num):   
                if image.endswith(".png"): 
                    image_path =  os.path.join(mask_path, image)
                    # img = np.array(Image.open(image_path))  
                    img = Image.open(image_path)
                    img_rgb = img.convert("RGB")
                    for i in range(img.size[0]):
                        for j in range(img.size[1]):
                            # print(img_rgb.getpixel((i,j)))
                            if img_rgb.getpixel((i,j)) == (255,255,255):
                                image_pil.putpixel((i,j),tuple(color)) 
        # for i in range(x):
        #     for k in range(y):
        #         color = img.getpixel((i, k))
        #         color = color[:-1] + (100, )
        #         img.putpixel((i, k), color)
        # img.save("tologo.png")

        image_pil.convert("RGB")
        image_pil.save(save_path)


img_path = "/segment-anything/out_mask"  #需要更改,mask图的上一级,如下图

compose_images(img_path)

在这里插入图片描述

输出:
在这里插入图片描述

【计算机视觉】Segment Anything 模型部署与实战:从零到一的自动掩码生成 本文详细介绍了Meta AI推出的Segment Anything模型(SAM)的部署与实战应用,包括环境配置、模型下载与加载、自动掩码生成及提示式分割等核心功能。通过实战案例展示了SAM在计算机视觉领域的强大能力,特别是在零样本迁移和自动分割方面的卓越表现,为开发者提供了从零到一的完整指南。 阅读详情

相关推荐

Flightmare实战:从零搭建强化学习无人机控制环境

本文详细介绍了从零开始搭建Flightmare强化学习无人机控制环境的完整流程。内容包括环境准备、核心库安装、依赖冲突解决,以及如何运行PPO算法示例进行训练与可视化测试。文章还提供了环境配置、自定义任务修改及常见问题的避坑指南,帮助开发者快速上手这一模块化的无人机RL仿真平台。

weixin_29081101的博客 356

生成随机mask以及根据mask对两幅图片进行合并

对图像处理的一些操作还是需要掌握的嘿嘿。

andy dennis的博客 2237

阿里巴巴达摩院人工智能训练师(高级)

阿里巴巴达摩院人工智能训练师(高级)

huang0612123的博客 1万+

Segment Anything(2)

本期的内容将分为以下几个方面 1. SAM自动化生成mask 2. 压缩保存mask 3. 超像素分割算法改进SAM(目前效果不佳,但可能以后能做出来)

m0_46246301的博客 1487

STM32F4驱动ES8388音频芯片的I²S时钟与DMA流设计

I²S(Inter-IC Sound)是一种广泛应用于嵌入式音频系统的同步串行总线协议,其核心在于精确的时钟同步与稳定的数据流传输。理解I²S时钟树结构(含MCLK、SCLK、WS生成逻辑)和分频机制,是保障CD级音质(如44.1kHz/16bit)的基础;而DMA双缓冲技术则解决了实时音频播放中数据供给连续性的关键工程问题。在STM32F4等Cortex-M4平台中,需协同配置PLLI2S锁相环、I²S预分频寄存器(I2SxPR)及DMA循环模式,同时兼顾ES8388等Codec芯片的I²C初始化时序与寄

weixin_35390379的博客 244

Stata实战:用双向固定效应模型分析房价,从数据清洗到结果解读(附完整代码)

本文详细介绍了如何使用Stata实现房价数据的双向固定效应模型分析,从数据清洗到结果解读的全流程。通过具体代码示例,帮助读者掌握面板模型的应用技巧,特别适合经济学和金融学研究者进行房价影响因素分析。

weixin_31528001的博客 277

Segment Anything(SAM)全图分割做mask

然后右键点击【Run 'segment-everyting'】运行segment-everyting.py文件,运行过程可能需要几分钟,请耐心等待。感觉效果不是我想要的那种,一只完整的小猫咪都被分得四分五裂了......可能还需要添加一些提示还是啥的,我还没搞懂。项目的源码和模型下载以及环境配置等可参考我的上一篇文章,这里不再赘述。我的输入图片是我养的加菲猫(顺便夸一句我的小猪咪真可爱!下面这个是在segment anything的demo()中呈现的效果,这才是我想要的。

m0_63604019的博客 5508

详细Ubuntu 22.04 配置最新UR机械臂仿真环境(ros2-humble, ur-sim, ur-ros2-driver)

使用ubuntu22.04.01和ur-sim, ur-driver进行ur机械臂的仿真

verloge的博客 1万+

python mask_Python-Opencv mask合并图片--Apple的学习笔记

步骤1.先创建了抠图区域2.转为灰度图片3.通过灰度设置阈值对比,建立mask区域4.抠图区进行掩膜保护,留下需要的图片5.对贴图进行掩膜保护,留下需要的图片6.抠图区和贴图合并7.合并后再合并替换掉原来的大图区域8.显示最后的效果图代码importcv2importnumpyasnp#加载图像img1=cv2.imread('san.jpg')img2=cv2....

weixin_39715348的博客 752

大规模SoC芯片Hierarchical Flow Calibre LVS教程

大规模SoC芯片Hierarchical Flow Calibre物理验证LVS实现教程

weixin_37584728的博客 1200

UDF学习(四)FLUENT UDF-DEFINE_PROFILE宏

利用DEFINE_PROFLILE可以指定以下边界或计算域信息:DEFINE_PROFILE(name,t,i)//既可以用。

weixin_44386973的博客 1806

Segment-anything代码细节

Segment Anything(SAM)是Meta(原Facebook)于2023年发布的突破性图像分割模型,被誉为计算机视觉领域的“分割基础模型”。它通过海量数据训练(超10亿张图像),具备强大的零样本分割能力,无需针对特定任务微调,即可泛化至几乎所有图像场景。SAM的核心优势在于支持灵活的交互方式,用户可通过点选、绘制边界框或自由文本等提示,精准定位目标并生成高质量掩码;也能自动识别图像中的所有显著区域,实现无提示的全自动分割。

zhuangyuan7838的博客 1679

YOLOv12中的A2C2f模块详解,涉及区域注意力模块(A2)和 R-ELAN 结构详解

区域注意力模块(Area Attention, A2)的设计出发点是为了解决传统注意力机制在计算复杂度和内存访问效率上的问题。传统的自注意力机制(Self-Attention)具有二次方的计算复杂度(O(n²)),尤其是在处理高分辨率图像时,计算成本非常高。此外,注意力机制的内存访问模式不如卷积神经网络高效,导致在实际应用中难以满足实时性要求。区域注意力模块通过将特征图划分为多个区域,并在每个区域内进行注意力计算,从而显著降低了计算复杂度。

Limiiiing的博客 5516

Segment Anything监控工具:训练与推理过程的实时监控

你还在为Segment Anything模型(SAM)的训练和推理过程缺乏可视化监控而烦恼吗?当模型处理高分辨率图像时,无法实时了解内存使用情况、推理速度和mask质量指标,导致调试困难、性能优化无从下手? 本文将为你提供一套完整的Segment Anything监控解决方案,通过实时监控工具让你对模型的训练和推理过程了如指掌。 ## 读完你能得到 - ✅ SAM模型训练与推理的完整监控指标...

gitblog_00981的博客 1080

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Segment Anything Model (SAM)

本质是一个带prompt的图像大模型。

北落师门XY的博客 1507

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Segment Anything:如何导出完整的ONNX模型?

在本文中,我将讨论 Segment Anything - 例如分割的神经网络,可用于从图像中分割任何对象而无需知道其类型。但是,这不是关于如何使用它的教程,因为它已经在和其他类似文章中进行了描述。在这里,我将解释如何使用它来解决一个问题,这个问题没有在任何地方描述 - 导出到 ONNX 函数的问题。

新缸中之脑 1521

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Segment Anything自动掩码生成器:一键分割图像中所有对象

你是否曾经需要从一张复杂的图像中精确分割出所有对象,却苦于手动标注的繁琐?或者想要批量处理大量图像,但传统分割工具效率低下?Segment Anything Model(SAM)的自动掩码生成器正是为解决这些痛点而生。 读完本文,你将掌握: - SAM自动掩码生成器的核心原理与工作机制 - 三种不同方式使用自动掩码生成器 - 关键参数调优技巧与最佳实践 - 实际应用场景与性能优化策略 ## ?...

gitblog_00248的博客 949

在 PiscTrace 中使用Segment Anything Model (SAM) 进行图像分割

在 PiscTrace 中,生成的图像分割结果将通过插件接口展示在应用的面板中。用户可以选择查看每个目标的掩码、修改分割结果、或对其进行进一步的分析。PiscTrace 强大的数据可视化和分析功能使得图像分割的结果可以被实时调整和分析,提供更加精准的反馈。

weixin_43607107的博客 1095

Segment-Anything本地部署后,如何用5行代码快速实现图像分割并可视化结果?

本文详细介绍了如何在本地部署Segment-Anything模型后,仅用5行Python代码快速实现图像分割并可视化结果。通过精简的代码示例和实用技巧,帮助开发者高效应用SAM模型,提升图像处理效率,特别适合计算机视觉领域的快速开发需求。

weixin_30512043的博客 377

告别手动标注:Segment Anything自动掩码生成器让图像分割效率提升10倍

你还在为图像中逐个标注对象而烦恼吗?还在为复杂场景下的物体分割耗费数小时吗?本文将带你掌握Segment Anything Model(SAM)中最实用的自动掩码生成器(Automatic Mask Generator),无需手动点击,一键分割图像中所有对象。读完本文,你将能够: - 用3行代码实现全图像自动分割 - 理解关键参数调优技巧提升分割质量 - 掌握从安装到批量处理的完整流程 ## 为...

gitblog_00049的博客 572

终极指南:如何高效融合Segment Anything模型的多个预测结果

Segment Anything Model (SAM) 是一个强大的图像分割工具,能够根据用户提示生成精确的物体掩码。在实际应用中,我们常常需要整合多个模型预测结果来提升分割质量。本文将介绍如何通过科学的方法融合SAM的多个预测结果,帮助你轻松获得更精准、更稳定的图像分割效果。 ## 🧩 SAM模型预测融合的核心价值 多个模型预测结果的融合是提升分割质量的关键技术。通过结合不同参数设置、不

gitblog_01154的博客 486

Segment Anything掩码优化终极指南:从粗糙分割到精准边缘的完整后处理方案

Segment Anything模型(SAM)作为Meta推出的革命性图像分割工具,能够根据简单的提示(如点、框或文本)生成高质量的掩码。然而,原始生成的掩码往往存在边缘粗糙、小区域噪声等问题。本文将深入解析Segment Anything后处理技术,帮助您实现从粗糙分割到精准边缘的完整优化流程。 ## 🔍 为什么需要掩码后处理? 原始Segment Anything模型生成的掩码虽然功能强

gitblog_00354的博客 363

Segment Anything —— SAM使用ONNX模型从提示中生成掩码

介绍了SAM是怎么使用ONXX模型从提升中生成掩码

weixin_50946965的博客 1083

Segment Anything (SAM) 实战:从点提示到全图自动掩码,装完到跑通的路

Segment Anything(SAM)是 Meta AI 推出的提示驱动图像分割模型:给一个点、一个框,甚至不给提示,它都直接返回对象掩码。模型在 1100 万张图像、11 亿个掩码上训练,零样本泛化扎实。本文走一遍安装、最小示例和常见坑。 ## 效果先声夺人 🎯 [![SAM Segment Anything 点与框提示的掩码输出示例](https://raw.gitcode.com/

gitblog_00251的博客 1107

如何快速掌握Segment Anything模型:面向新手的终极指南

Segment Anything模型(SAM)是一款革命性的图像分割工具,能够让任何人轻松实现精准的图像分割任务。本文将为你提供一个简单易懂的入门指南,帮助你快速掌握这个强大工具的核心功能和使用方法。 ## 🚀 什么是Segment Anything模型? Segment Anything模型(SAM)是一个先进的图像分割系统,它能够根据用户的提示(如点击、框选或文本描述)精确分割图像中的任

gitblog_00147的博客 788

Grounded-Segment-Anything 的 3D 扩展:结合 VoxelNeXt 实现基于点提示的可交互 3D 目标检测

本文将介绍当前仓库中 `voxelnext_3d_box` 子模块的核心技术:如何把 Segment Anything(SAM)的 2D 图像分割能力,通过 VoxelNeXt 这一全稀疏 3D 检测器延伸到三维空间,实现"在 2D 图像上点击一个点,即可同时得到分割掩码与对应目标的 3D 边界框"。读完本文,你将掌握该方案的安装步骤、数据准备流程、模型调用链、核心配置参数含义,以及从"点云体素化

gitblog_00143的博客 966
上一篇: ubuntu linux中vim vi 删除多行
下一篇: C++使用OpenCV绘制直线、正方形、椭圆、圆形、方形填充、随机生成直线
YL_python_C++_java
博客等级 码龄7年 1392粉丝 142原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值