diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..ba0d002 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,47 @@ +name: Build +run-name: ${{ github.actor }} is upgrade release ๐Ÿš€ +on: [push] +env: + REPOSITORY: ${{ github.repository }} + COMMIT_ID: ${{ github.sha }} +jobs: + Build-Deploy-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "๐ŸŽ‰ The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "๐Ÿง This job is now running on a ${{ runner.os }} server hosted by Gitea!" + - run: echo "๐Ÿ”Ž The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v3 + - + name: Setup Git LFS + run: | + git lfs install + git lfs fetch + git lfs checkout + - name: List files in the repository + run: | + ls ${{ github.workspace }} + - + name: Docker Image Info + id: image-info + run: | + echo "::set-output name=image_name::$(echo $REPOSITORY | tr '[:upper:]' '[:lower:]')" + echo "::set-output name=image_tag::${COMMIT_ID:0:10}" + - + name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: artifacts.iflytek.com + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build and push + run: | + docker version + docker buildx build -t artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} . --file ${{ github.workspace }}/Dockerfile --load + docker push artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} + docker rmi artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} + - run: echo "๐Ÿ This job's status is ${{ job.status }}." diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..102be0c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.8.13 + +WORKDIR /app + +COPY . /app + +RUN pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple +#RUN apt-get update && apt-get install python3.8-dev +#RUN apt-get update && apt-get install python-dev +RUN pip install -r requirements.txt + +CMD ["python", "app.py"] diff --git a/app.py b/app.py new file mode 100644 index 0000000..7c13e22 --- /dev/null +++ b/app.py @@ -0,0 +1,51 @@ +import torch +from PIL import Image +import gradio as gr +from lavis.models import load_model_and_preprocess +from lavis.processors import load_processor +from gradio.themes.utils import sizes + + +theme = gr.themes.Default(radius_size=sizes.radius_none).set( + block_label_text_color = '#4D63FF', + block_title_text_color = '#4D63FF', + button_primary_text_color = '#4D63FF', + button_primary_background_fill='#FFFFFF', + button_primary_border_color='#4D63FF', + button_primary_background_fill_hover='#EDEFFF', +) + + +raw_image = Image.open("./merlion.png").convert("RGB") +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +model, vis_processors, text_processors = load_model_and_preprocess("blip_image_text_matching", "large", device=device, is_eval=True) + +def image_text_match_compute(image, text): + raw_image = Image.open(image).convert("RGB") + img = vis_processors["eval"](raw_image).unsqueeze(0).to(device) + txt = text_processors["eval"](text) + + itm_output = model({"image": img, "text_input": txt}, match_head="itm") + itm_scores = torch.nn.functional.softmax(itm_output, dim=1) + + return f'The image and text are matched with a probability of {itm_scores[:, 1].item():.3%}' + + +with gr.Blocks(theme=theme, css="footer {visibility: hidden}") as demo: + gr.Markdown(""" +
ๅ›พ็‰‡ๆ–‡ๆœฌ็›ธไผผๅบฆ่ฎก็ฎ—
+ """) + with gr.Row(): + with gr.Column(): + image = gr.Image(label="ๅ›พ็‰‡", type="filepath") + text = gr.Textbox(label="้—ฎ้ข˜") + with gr.Row(): + button = gr.Button("ๆไบค", variant="primary") + box2 = gr.Textbox(label="ๆ–‡ๆœฌ") + + button.click(fn=image_text_match_compute, inputs=[image, text], outputs=box2) + examples = gr.Examples(examples=[['merlion.png', 'merlion in Singapore']], inputs=[image, text], label="ไพ‹ๅญ") + + +if __name__ == "__main__": + demo.queue().launch(server_name = "0.0.0.0") diff --git a/merlion.png b/merlion.png new file mode 100644 index 0000000..405b82c Binary files /dev/null and b/merlion.png differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0bf5602 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,30 @@ +contexttimer +decord +einops>=0.4.1 +fairscale==0.4.4 +ftfy +iopath +ipython +omegaconf +opencv-python-headless==4.5.5.64 +opendatasets +packaging +pandas +plotly +pre-commit +pycocoevalcap +pycocotools +python-magic +scikit-image +sentencepiece +spacy +streamlit +timm==0.4.12 +torch>=1.10.0 +torchvision +tqdm +transformers>=4.28.0 +webdataset +wheel +gradio +salesforce-lavis