TaskMatrix conecta ChatGPT e uma série de modelos de base visual para permitir o envio e recebimento de imagens durante o bate-papo.
Veja nosso artigo: Visual ChatGPT: Conversando, Desenhando e Editando com Modelos Visual Foundation
Agora TaskMatrix suporta GroundingDINO e segmenta qualquer coisa! Obrigado @jordddan por seus esforços. Para o caso de edição de imagem, GroundingDINO
é usado primeiro para localizar caixas delimitadoras guiadas por um determinado texto, depois segment-anything
é usado para gerar a máscara relacionada e, finalmente, pintura de difusão estável é usada para editar a imagem com base na máscara.
python visual_chatgpt.py --load "Text2Box_cuda:0,Segmenting_cuda:0,Inpainting_cuda:0,ImageCaptioning_cuda:0"
find xxx in the image
ou segment xxx in the image
. xxx
é um objeto. TaskMatrix retornará o resultado da detecção ou segmentação!Agora o TaskMatrix pode oferecer suporte ao chinês! Obrigado a @Wang-Xiaodong1899 por seus esforços.
Propomos a ideia do template no TaskMatrix!
template_model = True
Obrigado a @ShengmingYin e @thebestannie por fornecerem um exemplo de modelo na classe InfinityOutPainting
(veja o gif a seguir)
python visual_chatgpt.py --load "Inpainting_cuda:0,ImageCaptioning_cuda:0,VisualQuestionAnswering_cuda:0"
extend the image to 2048x1024
para TaskMatrix!InfinityOutPainting
, o TaskMatrix pode estender imagens perfeitamente para qualquer tamanho por meio da colaboração com modelos básicos existentes de ImageCaptioning
, Inpainting
e VisualQuestionAnswering
, sem a necessidade de treinamento adicional .TaskMatrix precisa do esforço da comunidade! Desejamos sua contribuição para adicionar recursos novos e interessantes!
Por um lado, ChatGPT (ou LLMs) serve como uma interface geral que fornece uma compreensão ampla e diversificada de uma ampla gama de tópicos. Por outro lado, os Modelos Fundamentais atuam como especialistas em domínios , fornecendo conhecimento profundo em domínios específicos. Ao aproveitar o conhecimento geral e profundo , pretendemos construir uma IA que seja capaz de lidar com diversas tarefas.
# clone the repo
git clone https://github.com/microsoft/TaskMatrix.git
# Go to directory
cd visual-chatgpt
# create a new environment
conda create -n visgpt python=3.8
# activate the new environment
conda activate visgpt
# prepare the basic environments
pip install -r requirements.txt
pip install git+https://github.com/IDEA-Research/GroundingDINO.git
pip install git+https://github.com/facebookresearch/segment-anything.git
# prepare your private OpenAI key (for Linux)
export OPENAI_API_KEY={Your_Private_Openai_Key}
# prepare your private OpenAI key (for Windows)
set OPENAI_API_KEY={Your_Private_Openai_Key}
# Start TaskMatrix !
# You can specify the GPU/CPU assignment by "--load", the parameter indicates which
# Visual Foundation Model to use and where it will be loaded to
# The model and device are separated by underline '_', the different models are separated by comma ','
# The available Visual Foundation Models can be found in the following table
# For example, if you want to load ImageCaptioning to cpu and Text2Image to cuda:0
# You can use: "ImageCaptioning_cpu,Text2Image_cuda:0"
# Advice for CPU Users
python visual_chatgpt.py --load ImageCaptioning_cpu,Text2Image_cpu
# Advice for 1 Tesla T4 15GB (Google Colab)
python visual_chatgpt.py --load "ImageCaptioning_cuda:0,Text2Image_cuda:0"
# Advice for 4 Tesla V100 32GB
python visual_chatgpt.py --load "Text2Box_cuda:0,Segmenting_cuda:0,
Inpainting_cuda:0,ImageCaptioning_cuda:0,
Text2Image_cuda:1,Image2Canny_cpu,CannyText2Image_cuda:1,
Image2Depth_cpu,DepthText2Image_cuda:1,VisualQuestionAnswering_cuda:2,
InstructPix2Pix_cuda:2,Image2Scribble_cpu,ScribbleText2Image_cuda:2,
SegText2Image_cuda:2,Image2Pose_cpu,PoseText2Image_cuda:2,
Image2Hed_cpu,HedText2Image_cuda:3,Image2Normal_cpu,
NormalText2Image_cuda:3,Image2Line_cpu,LineText2Image_cuda:3"
Aqui listamos o uso de memória GPU de cada modelo de base visual, você pode especificar qual deles você gosta:
Modelo de Fundação | Memória GPU (MB) |
---|---|
Edição de imagem | 3981 |
InstructPix2Pix | 2827 |
Texto2Imagem | 3385 |
Legendagem de imagens | 1209 |
Imagem2Canny | 0 |
CannyText2Image | 3531 |
Imagem2Linha | 0 |
LinhaText2Image | 3529 |
Imagem2Hed | 0 |
HedText2Image | 3529 |
Imagem2Scribble | 0 |
ScribbleText2Image | 3531 |
Imagem2Pose | 0 |
PoseText2Image | 3529 |
Imagem2Seg | 919 |
SegText2Image | 3529 |
Imagem2Profundidade | 0 |
ProfundidadeText2Image | 3531 |
Imagem2Normal | 0 |
NormalText2Image | 3529 |
Resposta VisualQuestion | 1495 |
Agradecemos o código aberto dos seguintes projetos:
Abraçando o rosto LangChain Difusão estável ControlNet InstructPix2Pix CLIPSeg BLIP
Para obter ajuda ou problemas ao usar o TaskMatrix, envie um problema do GitHub.
Para outras comunicações, entre em contato com Chenfei WU ([email protected]) ou Nan DUAN ([email protected]).
Marcas registradas Este projeto pode conter marcas registradas ou logotipos de projetos, produtos ou serviços. O uso autorizado de marcas registradas ou logotipos da Microsoft está sujeito e deve seguir as Diretrizes de Marcas Registradas e Marcas da Microsoft. O uso de marcas registradas ou logotipos da Microsoft em versões modificadas deste projeto não deve causar confusão nem implicar patrocínio da Microsoft. Qualquer uso de marcas registradas ou logotipos de terceiros está sujeito às políticas desses terceiros.
Os modelos recomendados neste Repo são apenas exemplos, utilizados para pesquisas científicas explorando o conceito de automação de tarefas e benchmarking com o artigo publicado no Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models. Os usuários podem substituir os modelos deste Repo de acordo com suas necessidades de pesquisa. Ao usar os modelos recomendados neste Repo, você precisa cumprir as licenças desses modelos respectivamente. A Microsoft não será responsabilizada por qualquer violação de direitos de terceiros resultante do uso deste repositório. Os usuários concordam em defender, indenizar e isentar a Microsoft de e contra todos os danos, custos e honorários advocatícios relacionados a quaisquer reivindicações decorrentes deste Repo. Se alguém acreditar que este Repo infringe seus direitos, notifique o e-mail do proprietário do projeto.