diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..1966567 --- /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/1.jpg b/1.jpg new file mode 100644 index 0000000..ba333ca Binary files /dev/null and b/1.jpg differ diff --git a/2.jpg b/2.jpg new file mode 100644 index 0000000..1785a72 Binary files /dev/null and b/2.jpg differ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..07ee0a4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM python:3.7.4-slim + +WORKDIR /app + +COPY requirements.txt /app + +RUN pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/ + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y git + +RUN apt-get install -y tk + +RUN python -m pip install git+https://ghproxy.com/https://github.com/cocodataset/panopticapi.git + +RUN pip3 install --trusted-host pypi.python.org -r requirements.txt + +COPY . /app + +CMD ["python", "app.py"] diff --git a/app.py b/app.py new file mode 100644 index 0000000..8b5e0da --- /dev/null +++ b/app.py @@ -0,0 +1,79 @@ +#ε ¨ζ―εε² +from PIL import Image +import io +import matplotlib.pyplot as plt +import torch +import torchvision.transforms as T +import numpy +import gradio as gr +import itertools +import seaborn as sns +from panopticapi.utils import rgb2id +from gradio.themes.utils import sizes +from transformers import AutoImageProcessor, Mask2FormerForUniversalSegmentation +from torch import nn +import numpy as np + + +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', +) + + +processor = AutoImageProcessor.from_pretrained("facebook/mask2former-swin-base-coco-panoptic") +model = Mask2FormerForUniversalSegmentation.from_pretrained("facebook/mask2former-swin-base-coco-panoptic") + + +def detect_objects(image_input): + inputs = processor(images=image_input, return_tensors="pt") + + with torch.no_grad(): + outputs = model(**inputs) + + result = processor.post_process_panoptic_segmentation(outputs, target_sizes=[image_input.size[::-1]])[0] + + #Visualize prediction + viz_img = visualize_prediction(result["segmentation"], image_input) + + return viz_img + + +def visualize_prediction(result, image): + color_palette = [list(np.random.choice(range(256), size=3)) for _ in range(len(model.config.id2label))] + seg = result + color_seg = np.zeros((seg.shape[0], seg.shape[1], 3), dtype=np.uint8) # height, width, 3 + palette = np.array(color_palette) + for label, color in enumerate(palette): + color_seg[seg == label, :] = color + # Convert to BGR + color_seg = color_seg[..., ::-1] + + # Show image + mask + img = np.array(image) * 0.5 + color_seg * 0.5 + img = img.astype(np.uint8) + + return img + + +with gr.Blocks(theme=theme, css="footer {visibility: hidden}") as demo: + gr.Markdown(""" +