add
Build-Deploy-Actions Details

This commit is contained in:
songw 2023-04-23 13:42:31 +08:00
parent 43743e9da7
commit fb5d53d755
6 changed files with 159 additions and 0 deletions

View File

@ -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 }}."

BIN
1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

BIN
2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

21
Dockerfile Normal file
View File

@ -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"]

79
app.py Normal file
View File

@ -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 MaskFormerFeatureExtractor, MaskFormerForInstanceSegmentation
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',
)
feature_extractor = MaskFormerFeatureExtractor.from_pretrained("facebook/maskformer-swin-base-coco")
model = MaskFormerForInstanceSegmentation.from_pretrained("facebook/maskformer-swin-base-coco")
def detect_objects(image_input):
inputs = feature_extractor(images=image_input, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
result = feature_extractor.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("""
<div align='center' ><font size='60'>全景分割</font></div>
""")
with gr.Row():
with gr.Column():
image = gr.Image(label="图片", type="pil")
with gr.Row():
button = gr.Button("提交", variant="primary")
box2 = gr.Image(label="图片")
button.click(fn=detect_objects, inputs=[image], outputs=box2)
examples = gr.Examples(examples=[['1.jpg'], ['2.jpg']], inputs=[image], label="例子")
if __name__ == '__main__':
demo.queue().launch(server_name = "0.0.0.0")

12
requirements.txt Normal file
View File

@ -0,0 +1,12 @@
gradio
huggingface
torch
transformers
seaborn
matplotlib
pillow
requests
torchvision
numpy
scipy
timm