Commit 0d97cc8c authored by Sugon_ldc's avatar Sugon_ldc
Browse files

add new model

parents
Pipeline #316 failed with stages
in 0 seconds
GDAL>=3.3.0
rasterio>=1.2.4
vtk
\ No newline at end of file
pyqt5
qtpy
opencv-python
scipy
paddleseg
albumentations
cython
pyyaml
wget
requests
easydict
scikit-image
protobuf==3.20.0
import pathlib
from setuptools import setup, find_packages, Extension
import numpy as np
from eiseg import __APPNAME__, __VERSION__
# from Cython.Build import cythonize
HERE = pathlib.Path(__file__).parent
README = (HERE / "README.md").read_text(encoding="utf-8")
with open("requirements.txt") as fin:
REQUIRED_PACKAGES = fin.read()
ext_modules = [
Extension(
"pycocotools._mask",
sources=[
"./eiseg/util/coco/common/maskApi.c",
"./eiseg/util/coco/pycocotools/_mask.pyx",
],
include_dirs=[np.get_include(), "./eiseg/util/coco/common"],
extra_compile_args=["-Wno-cpp", "-Wno-unused-function", "-std=c99"], )
]
packages = find_packages(exclude=("test", ))
setup(
name=__APPNAME__,
version=__VERSION__,
description="交互式标注软件",
long_description=README,
long_description_content_type="text/markdown",
url="https://github.com/PaddlePaddle/PaddleSeg",
author="PaddleSeg & PaddleCV-SIG",
author_email="haoyuying@baidu.com",
license="Apache Software License",
classifiers=[
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
],
packages=find_packages(exclude=("test", )),
# packages=["EISeg"],
include_package_data=True,
install_requires=REQUIRED_PACKAGES,
entry_points={"console_scripts": ["eiseg=eiseg.run:main", ]}, )
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
import random
import hashlib
from urllib import parse
import http.client
from tqdm import tqdm
from collections import defaultdict
from bs4 import BeautifulSoup as bs
class BaiduTranslate:
def __init__(self, fromLang, toLang):
self.url = "/api/trans/vip/translate"
self.appid = "20200311000396156"
self.secretKey = "s6c3ZeYTI9lhrwQVugnM"
self.fromLang = fromLang
self.toLang = toLang
self.salt = random.randint(32768, 65536)
def trans(self, text):
sign = self.appid + text + str(self.salt) + self.secretKey
md = hashlib.md5()
md.update(sign.encode(encoding="utf-8"))
sign = md.hexdigest()
myurl = (self.url + "?appid=" + self.appid + "&q=" + parse.quote(text) +
"&from=" + self.fromLang + "&to=" + self.toLang + "&salt=" +
str(self.salt) + "&sign=" + sign)
try:
httpClient = http.client.HTTPConnection("api.fanyi.baidu.com")
httpClient.request("GET", myurl)
response = httpClient.getresponse()
html = response.read().decode("utf-8")
html = json.loads(html)
dst = html["trans_result"][0]["dst"]
return True, dst
except Exception as e:
return False, e
def read_ts(ts_path):
xml = open(ts_path, "r", encoding="utf-8").read()
xml = bs(xml, "xml")
return xml
pre_ts_path = "tool/ts/English.ts" # Russia
ts_path = "tool/ts/out.ts"
pre_xml = read_ts(pre_ts_path)
xml = read_ts(ts_path)
pre_messages = pre_xml.find_all("message")
messages = xml.find_all("message")
bd_trans = BaiduTranslate("auto", "en") # ru
trans = bd_trans.trans
translated = 0
failed = 0
for msg in messages:
type = msg.translation.get("type", None)
source = msg.source.string
trans = msg.translation.string
if type == "unfinished" and trans is None and source is not None:
in_pre = False
for pmsg in pre_messages:
if pmsg.source.string == source:
try:
msg.translation.string = pmsg.translation.string
translated += 1
print(
f"{translated + failed} / {len(messages)}:{source} \t {msg.translation.string}"
)
in_pre = True
except:
pass
break
if in_pre is False:
res = bd_trans.trans(source)
if res[0]:
msg.translation.string = res[1]
translated += 1
else:
failed += 1
print(
f"{translated + failed} / {len(messages)}:{source} \t {msg.translation.string}"
)
for name in xml.find_all("name"):
name.string = "APP_EISeg"
print(f"Totally {len(messages)} , translated {translated}, failed {failed}")
open(ts_path, "w", encoding="utf-8").write(str(xml))
import os
import cv2
def video_cut(video_path, save_path, cut_length):
video_capture = cv2.VideoCapture(video_path)
# FPS
fps = video_capture.get(5)
print(video_capture.isOpened())
print("fps", video_capture.get(5))
print("COUNT", video_capture.get(7))
size = (int(video_capture.get(3)), int(video_capture.get(4)))
frame_index = 0
flag = 0
success, bgr_image = video_capture.read()
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
final_path = os.path.join(save_path,
str(frame_index // cut_length) + '.mp4')
v = cv2.VideoWriter(final_path, fourcc, fps, size)
while success:
if v.isOpened():
v.write(bgr_image)
if frame_index == cut_length * flag + cut_length:
if v.isOpened():
v.release()
if frame_index == cut_length * flag:
final_path = os.path.join(save_path,
str(frame_index // cut_length) + '.mp4')
v = cv2.VideoWriter(final_path, fourcc, fps, size)
flag += 1
success, bgr_image = video_capture.read()
frame_index = frame_index + 1
video_capture.release()
v.release()
if __name__ == "__main__":
video_path = '/PATH/TO/VIDEO'
save_path = "/PATH/TO/SAVE"
cut_length = 50
video_cut(video_path, save_path, cut_length)
import os.path as osp
import SimpleITK as sitk
import cv2
from cv2 import VideoWriter_fourcc
import numpy as np
from tqdm import tqdm
def load_medical_data(f):
"""
load data of different format into numpy array, return data is in xyz
f: the complete path to the file that you want to load
"""
filename = osp.basename(f).lower()
if filename.endswith((".nii", ".nii.gz", ".dcm")):
itkimage = sitk.ReadImage(f)
if itkimage.GetDimension() == 4:
slicer = sitk.ExtractImageFilter()
s = list(itkimage.GetSize())
s[-1] = 0
slicer.SetSize(s)
images = []
for slice_idx in range(itkimage.GetSize()[-1]):
slicer.SetIndex([0, 0, 0, slice_idx])
sitk_volume = slicer.Execute(itkimage)
images.append(sitk_volume)
images = [sitk.DICOMOrient(img, "SLP") for img in images]
f_nps = [sitk.GetArrayFromImage(img) for img in images]
else:
image = sitk.DICOMOrient(itkimage, "SLP")
f_np = sitk.GetArrayFromImage(image)
f_nps = [f_np]
elif filename.endswith((".mha", ".mhd", "nrrd")):
itkimage = sitk.DICOMOrient(sitk.ReadImage(f), "SLP")
f_np = sitk.GetArrayFromImage(itkimage)
if f_np.ndim == 4:
f_nps = [f_np[:, :, :, idx] for idx in range(f_np.shape[3])]
else:
f_nps = [f_np]
elif filename.endswith(".raw"):
raise RuntimeError(
f"Received {f}. Please only provide path to .mhd file, not to .raw file"
)
else:
raise NotImplementedError
return f_nps
def normalize(frame, ww=400, wc=0):
wl = wc - ww / 2
wh = wc + ww / 2
frame = frame.astype("float16")
np.clip(frame, wl, wh, out=frame)
frame = (frame - wl) / ww * 255
frame = frame.astype(np.uint8)
frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
return frame
def array_to_video(array_data, video_path, fps=15):
h, w, s = array_data.shape
fourcc = VideoWriter_fourcc(*"mp4v")
videoWriter = cv2.VideoWriter(video_path, fourcc, fps, (w, h))
for idx in tqdm(range(s)):
frame = array_data[:, :, idx]
frame = normalize(frame)
videoWriter.write(frame)
videoWriter.release()
cv2.destroyAllWindows()
print("转视频结束!")
if __name__ == "__main__":
path = "/home/lin/Desktop/data/coronacases_org_001.nii.gz"
video_path = "/home/lin/Desktop/temp.mp4"
total_data = load_medical_data(path)
for data in total_data:
array_to_video(data, video_path)
rm dist/*
python setup.py sdist bdist_wheel
twine upload --repository-url https://test.pypi.org/legacy/ dist/* --verbose
# https://upload.pypi.org/legacy/
conda create -n test python=3.9
conda activate test
pip install --upgrade eiseg
pip install paddlepaddle
eiseg
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import os.path as osp
import argparse
from tqdm import tqdm
import numpy as np
import cv2
from PIL import Image
def _savePalette(label, save_path):
bin_colormap = np.random.randint(0, 255, (256, 3)) # 可视化的颜色
bin_colormap[0, :] = [0, 0, 0]
bin_colormap = bin_colormap.astype(np.uint8)
visualimg = Image.fromarray(label, "P")
palette = bin_colormap # long palette of 768 items
visualimg.putpalette(palette)
visualimg.save(save_path, format='PNG')
def _segMaskB2I(mask_path, save_path):
img = np.asarray(Image.open(mask_path))
mask = np.zeros_like(img)
results = cv2.findContours(img, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)
cv2_v = cv2.__version__.split(".")[0]
contours = results[1] if cv2_v == "3" else results[0] # 边界
hierarchys = results[2] if cv2_v == "3" else results[1] # 隶属信息
areas = {} # 面积
for i in range(len(contours)):
areas[i] = cv2.contourArea(contours[i])
sorted(areas.items(), key=lambda kv: (kv[1], kv[0]), reverse=True) # 面积升序
# 开始填充
color = 1
for idx in areas.keys():
contour = contours[idx]
hierarchy = hierarchys[0][idx]
# print(hierarchy)
if hierarchy[-1] == -1: # 输入子轮廓
cv2.fillPoly(mask, [contour], color)
color += 1
else:
cv2.fillPoly(mask, [contour], 0)
# 显示
# cv2.drawContours(mask, contours, -1, (125,125,125), 1)
# cv2.imshow('src',mask)
# cv2.waitKey()
_savePalette(mask, save_path)
parser = argparse.ArgumentParser(description='Label path and save path')
parser.add_argument(
'--label_path', '-o', help='读取语义分割标签文件夹路径,必要参数', required=True)
parser.add_argument(
'--save_path', '-d', help='实例分割标签保存文件夹路径,必要参数', required=True)
args = parser.parse_args()
if __name__ == "__main__":
label_path = args.label_path
save_path = args.save_path
names = os.listdir(label_path)
for name in tqdm(names):
label = osp.join(label_path, name)
saver = osp.join(save_path, name)
_segMaskB2I(label, saver)
CODECFORTR = UTF-8
SOURCES = ../eiseg/app.py ../eiseg/ui.py ../eiseg/widget/shortcut.py
TRANSLATIONS = ./ts/out.ts
import os
import os.path as osp
import json
import random
import hashlib
from urllib import parse
import http.client
from tqdm import tqdm
from collections import defaultdict
class BaiduTranslate:
def __init__(self, fromLang, toLang):
self.url = "/api/trans/vip/translate"
self.appid = "20200311000396156"
self.secretKey = "s6c3ZeYTI9lhrwQVugnM"
self.fromLang = fromLang
self.toLang = toLang
self.salt = random.randint(32768, 65536)
def BdTrans(self, text):
sign = self.appid + text + str(self.salt) + self.secretKey
md = hashlib.md5()
md.update(sign.encode(encoding="utf-8"))
sign = md.hexdigest()
myurl = self.url + \
"?appid=" + self.appid + \
"&q=" + parse.quote(text) + \
"&from=" + self.fromLang + \
"&to=" + self.toLang + \
"&salt=" + str(self.salt) + \
"&sign=" + sign
try:
httpClient = http.client.HTTPConnection("api.fanyi.baidu.com")
httpClient.request("GET", myurl)
response = httpClient.getresponse()
html = response.read().decode("utf-8")
html = json.loads(html)
dst = html["trans_result"][0]["dst"]
return True, dst
except Exception as e:
return False, e
# 获取所有可能带有ui的py文件
ui_files = []
widget_path = "eiseg/widget"
widget_names = os.listdir(widget_path)
for widget_name in widget_names:
if widget_name != "__init__.py" and widget_name != "__pycache__":
ui_files.append(osp.join(widget_path, widget_name))
ui_files.append("eiseg/ui.py")
ui_files.append("eiseg/app.py")
# 查找
chinese = []
keys = "trans.put(\""
for ui_file in ui_files:
with open(ui_file, "r", encoding="utf-8") as f:
codes = f.read()
sp_codes = codes.split(keys)
if len(sp_codes) == 1:
continue
else:
sp_codes.pop(0)
for sp_code in sp_codes:
chinese.append(sp_code.split("\")")[0])
chinese = list(set(chinese))
# print(len(chinese))
# print(chinese)
# 比对(以前有的不重新机翻)
save_path = "eiseg/config/zh_CN.EN"
now_words = defaultdict(dict)
with open(save_path, "r", encoding="utf-8") as f:
datas = f.readlines()
for data in datas:
words = data.strip().split("@")
now_words[words[0]] = words[1]
# 翻译
def firstCharUpper(s):
return s[:1].upper() + s[1:]
translate = []
baidu_trans = BaiduTranslate("zh", "en")
for cn in tqdm(chinese):
if cn not in now_words.keys():
en = baidu_trans.BdTrans(cn)
tr = cn + "@" + firstCharUpper(en[-1]) # 首字母大写
else:
tr = cn + "@" + now_words[cn]
translate.append(tr)
# 保存翻译内容
with open(save_path, "w", encoding="utf-8") as f:
for language in translate:
f.write(language + "\n")
print("trans OK!")
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ar" sourcelanguage="zh">
<context>
<name>APP_EISeg</name>
<message>
<location filename="../../eiseg/app.py" line="298"/>
<source>&amp;打开图像</source>
<translation>&amp;فتح الصورة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="298"/>
<source>打开一张图像进行标注</source>
<translation>فتح صورة الشرح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="305"/>
<source>&amp;打开文件夹</source>
<translation>&amp;فتح مجلد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="305"/>
<source>打开一个文件夹下所有的图像进行标注</source>
<translation>فتح مجلد تحت كل صورة الشرح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="312"/>
<source>&amp;改变标签保存路径</source>
<translation>&amp;تغيير مسار حفظ التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="312"/>
<source>改变标签保存的文件夹路径</source>
<translation>تغيير مسار المجلد حفظ التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="319"/>
<source>&amp;加载模型参数</source>
<translation>&amp;تحميل معالم النموذج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="319"/>
<source>加载一个模型参数</source>
<translation>تحميل نموذج المعلمة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="326"/>
<source>&amp;保存</source>
<translation>&amp;حفظ</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="326"/>
<source>保存图像标签</source>
<translation>حفظ صورة العلامة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="333"/>
<source>&amp;另存为</source>
<translation>&amp;حفظ باسم</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="333"/>
<source>在指定位置另存为标签</source>
<translation>حفظ التسمية في الموقع المحدد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="340"/>
<source>&amp;自动保存</source>
<translation>&amp;حفظ السيارات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="340"/>
<source>翻页同时自动保存</source>
<translation>حفظ الصفحة تلقائيا في نفس الوقت</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="351"/>
<source>&amp;上一张</source>
<translation>&amp;آخر واحد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="351"/>
<source>翻到上一张图片</source>
<translation>انتقل إلى الصورة السابقة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="358"/>
<source>&amp;下一张</source>
<translation>&amp;الصورة التالية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="358"/>
<source>翻到下一张图片</source>
<translation>انتقل إلى الصورة التالية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="365"/>
<source>&amp;完成当前目标</source>
<translation>&amp;تحقيق الهدف الحالي</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="365"/>
<source>完成当前目标的标注</source>
<translation>الانتهاء من وضع العلامات على الهدف الحالي</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="372"/>
<source>&amp;清除所有标注</source>
<translation>&amp;مسح جميع الشروح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="372"/>
<source>清除所有标注信息</source>
<translation>مسح جميع معلومات الشرح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="379"/>
<source>&amp;撤销</source>
<translation>&amp;إلغاء</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="379"/>
<source>撤销一次点击</source>
<translation>إلغاء بنقرة واحدة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="386"/>
<source>&amp;重做</source>
<translation>&amp;و إعادة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="386"/>
<source>重做一次点击</source>
<translation>انقر فوق إعادة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="393"/>
<source>&amp;删除多边形</source>
<translation>&amp;حذف المضلعات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="393"/>
<source>删除当前选中的多边形</source>
<translation>حذف المضلع المحدد حاليا</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="400"/>
<source>&amp;删除所有多边形</source>
<translation>&amp;حذف جميع المضلعات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="400"/>
<source>删除所有的多边形</source>
<translation>حذف جميع المضلعات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="407"/>
<source>&amp;保留最大连通块</source>
<translation>&amp;الحفاظ على معظم كتل داليان تونغ</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="407"/>
<source>保留最大的连通块</source>
<translation>الحفاظ على أقصى قدر من كتلة متصلة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="415"/>
<source>&amp;标签和图像使用相同拓展名</source>
<translation>&amp;العلامات والصور باستخدام نفس التمديد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="415"/>
<source>标签和图像使用相同拓展名用于图像中有文件名相同但拓展名不同的情况防止标签覆盖</source>
<translation>التسمية والصورة استخدام نفس اسم التمديد ، في صورة لها نفس اسم الملف ولكن تمديد اسم مختلف ، ومنع التسمية من الكتابة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="423"/>
<source>&amp;伪彩色保存</source>
<translation>&amp;حفظ الألوان الزائفة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="423"/>
<source>保存为伪彩色图像</source>
<translation>حفظ الصورة الملونة الزائفة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="432"/>
<source>&amp;灰度保存</source>
<translation>&amp;حفظ رمادي</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="432"/>
<source>保存为灰度图像像素的灰度为对应类型的标签</source>
<translation>حفظ الصورة الرمادية ، رمادي بكسل هو نوع من التسمية المقابلة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="441"/>
<source>&amp;JSON保存</source>
<translation>&amp;جسون حفظ</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="441"/>
<source>保存为JSON格式</source>
<translation>حفظ جسون</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="450"/>
<source>&amp;COCO保存</source>
<translation>&amp;حفظ كوكو</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="450"/>
<source>保存为COCO格式</source>
<translation>حفظ كوكو</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="460"/>
<source>&amp;显示遥感多边形</source>
<translation>&amp;عرض مضلع الاستشعار عن بعد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="460"/>
<source>显示遥感大图的多边形结果</source>
<translation>عرض الاستشعار عن بعد مضلع كبير</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="469"/>
<source>&amp;启用宫格检测</source>
<translation>&amp;بدء الكشف عن قصر</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="469"/>
<source>针对每张图片启用宫格检测</source>
<translation>تمكين الكشف عن قصر لكل صورة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="478"/>
<source>&amp;抠图保存</source>
<translation>&amp;حفظ حصيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="478"/>
<source>只保留前景背景设置为背景色</source>
<translation>الحفاظ على الصدارة فقط ، تعيين الخلفية إلى لون الخلفية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="487"/>
<source>&amp;设置抠图背景色</source>
<translation>&amp;تعيين لون الخلفية حصيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="487"/>
<source>抠图后背景像素的颜色</source>
<translation>لون الخلفية بكسل بعد حصيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="494"/>
<source>&amp;关闭</source>
<translation>&amp;إغلاق</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="494"/>
<source>关闭当前图像</source>
<translation>إغلاق الصورة الحالية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="501"/>
<source>&amp;退出</source>
<translation>&amp;خروج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="501"/>
<source>退出软件</source>
<translation>الخروج من البرنامج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="508"/>
<source>&amp;导出标签列表</source>
<translation>&amp;تصدير قائمة العلامات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="508"/>
<source>将标签列表导出成标签配置文件</source>
<translation>تصدير قائمة التسمية إلى تسمية ملف التكوين</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="515"/>
<source>&amp;载入标签列表</source>
<translation>&amp;تحميل قائمة العلامات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="515"/>
<source>从标签配置文件载入标签列表</source>
<translation>تحميل قائمة من العلامات العلامات من ملف التكوين</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="522"/>
<source>&amp;清空标签列表</source>
<translation>&amp;مسح قائمة التبويب</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="522"/>
<source>清空所有的标签</source>
<translation>مسح جميع العلامات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="529"/>
<source>&amp;清除近期文件记录</source>
<translation>&amp;مسح الملفات الأخيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="529"/>
<source>清除近期标注文件记录</source>
<translation>مسح سجل ملف الشرح الأخيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="536"/>
<source>&amp;模型选择</source>
<translation>&amp;اختيار النموذج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="536"/>
<source>隐藏/展示模型选择面板</source>
<translation>إخفاء / عرض نموذج اختيار الفريق</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="544"/>
<source>&amp;数据列表</source>
<translation>&amp;قائمة البيانات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="544"/>
<source>隐藏/展示数据列表面板</source>
<translation>إخفاء / عرض لوحة قائمة البيانات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="552"/>
<source>&amp;标签列表</source>
<translation>&amp;قائمة العلامات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="552"/>
<source>隐藏/展示标签列表面板</source>
<translation>إخفاء / عرض قائمة التبويب لوحة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="560"/>
<source>&amp;分割设置</source>
<translation>&amp;إعدادات التقسيم</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="560"/>
<source>隐藏/展示分割设置面板</source>
<translation>إخفاء / عرض تقسيم لوحة إعدادات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="568"/>
<source>&amp;遥感设置</source>
<translation>&amp;إعدادات الاستشعار عن بعد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="568"/>
<source>隐藏/展示遥感设置面板</source>
<translation>إخفاء / عرض إعدادات الاستشعار عن بعد لوحة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="576"/>
<source>&amp;医疗设置</source>
<translation>&amp;إعدادات طبية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="576"/>
<source>隐藏/展示医疗设置面板</source>
<translation>إخفاء / عرض لوحة الإعدادات الطبية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="584"/>
<source>&amp;N2宫格标注</source>
<translation>&amp;و N2</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="584"/>
<source>隐藏/展示N^2宫格细粒度标注面板</source>
<translation>إخفاء / عرض ن ^ 2 غرامة الحبيبات لوحة الشرح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="592"/>
<source>&amp;视频播放</source>
<translation>&amp;مشغل فيديو</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="592"/>
<source>隐藏/展示视频播放面板</source>
<translation>إخفاء / عرض لوحة مشغل الفيديو</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="600"/>
<source>&amp;视频标注</source>
<translation>&amp;فيديو الشرح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="600"/>
<source>隐藏/展示视频标注面板</source>
<translation>إخفاء / عرض الفيديو لوحة الشرح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="608"/>
<source>&amp;3D显示</source>
<translation>&amp;عرض ثلاثي الأبعاد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="608"/>
<source>隐藏/展示3D显示面板</source>
<translation>إخفاء / عرض لوحة عرض ثلاثية الأبعاد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="616"/>
<source>&amp;快速入门</source>
<translation>&amp;بداية سريعة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="616"/>
<source>主要功能使用介绍</source>
<translation>الوظيفة الرئيسية مقدمة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="623"/>
<source>&amp;反馈问题</source>
<translation>&amp;أسئلة التغذية المرتدة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="623"/>
<source>通过Github Issue反馈使用过程中遇到的问题我们会尽快进行修复</source>
<translation>المشاكل التي واجهتها في استخدام ردود الفعل من خلال github issue ونحن سوف إصلاح ذلك في أقرب وقت ممكن</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="630"/>
<source>&amp;编辑快捷键</source>
<translation>&amp;تحرير اختصارات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="630"/>
<source>编辑软件快捷键</source>
<translation>تحرير اختصارات البرامج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="637"/>
<source>&amp;调试日志</source>
<translation>&amp;سجل التصحيح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="637"/>
<source>用于观察软件执行过程和进行debug我们不会自动收集任何日志可能会希望您在反馈问题时间打开此功能帮助我们定位问题</source>
<translation>تستخدم لمراقبة تنفيذ البرامج وإجراء التصحيحات . نحن لا تلقائيا جمع أي سجلات ، قد ترغب في فتح هذه الميزة في الوقت المناسب للحصول على التغذية المرتدة من الأسئلة لمساعدتنا في تحديد المشكلة.</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="646"/>
<source>&amp;使用QT文件窗口</source>
<translation>&amp;كيو تي ملف ويندوز</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="646"/>
<source>如果使用文件选择窗口时遇到问题可以选择使用Qt窗口</source>
<translation>إذا كان لديك مشكلة في استخدام ملف اختيار النافذة ، يمكنك اختيار استخدام نافذة كيو تي</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="770"/>
<source>文件</source>
<translation>الوثائق</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="771"/>
<source>标注</source>
<translation>الشرح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="772"/>
<source>功能</source>
<translation>وظيفة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="773"/>
<source>显示</source>
<translation>عرض</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="774"/>
<source>帮助</source>
<translation>ساعد</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="671"/>
<source>近期文件</source>
<translation>الوثائق الأخيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="672"/>
<source>近期模型及参数</source>
<translation>نموذج المعلمة الأخيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="673"/>
<source>近期视频传播模型及参数</source>
<translation>فيديو نشر النماذج والمعايير الأخيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="674"/>
<source>语言</source>
<translation>لغة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="825"/>
<source>切换语言</source>
<translation>تبديل اللغة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="825"/>
<source>切换语言需要重启软件才能生效</source>
<translation>لغة التبديل يتطلب إعادة تشغيل البرنامج قبل أن يصبح نافذا</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="841"/>
<source>无近期文件</source>
<translation>لا توجد وثائق حديثة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="857"/>
<source>已清除最近打开文件</source>
<translation>تم مسح الملفات المفتوحة مؤخرا</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="877"/>
<source>无近期模型记录</source>
<translation>لا يوجد سجل النموذج الحالي</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="897"/>
<source>无近期视频传播模型记录</source>
<translation>لا يوجد نموذج تسجيل الفيديو الأخيرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="947"/>
<source>Paddle静态模型权重文件(*.pdiparams)</source>
<translation>بادل نموذج ثابت الوزن الملف (*.pdiparams)</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="924"/>
<source>选择传播模型参数</source>
<translation>اختيار نموذج نشر المعلمات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="966"/>
<source>参数路径存在中文</source>
<translation>المعلمة المسار موجود في الصينية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="966"/>
<source>请修改参数路径为非中文路径</source>
<translation>يرجى تعديل مسار المعلمة غير الصينية المسار !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="953"/>
<source>选择模型参数</source>
<translation>اختيار نموذج المعلمة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="981"/>
<source>视频传播模型加载成功</source>
<translation>فيديو نشر نموذج تم تحميلها بنجاح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1003"/>
<source> 模型加载成功</source>
<translation> تحميل النموذج بنجاح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1017"/>
<source>掩膜已启用</source>
<translation>قناع تمكين</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1019"/>
<source>掩膜已关闭</source>
<translation>قناع مغلق</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1023"/>
<source>没有最近使用模型信息请加载模型</source>
<translation>ا يوجد نموذج المعلومات المستخدمة مؤخرا ، يرجى تحميل النموذج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1031"/>
<source>没有最近使用的视频传播模型信息请加载模型</source>
<translation>لا توجد معلومات عن أحدث نموذج نشر الفيديو ، يرجى تحميل النموذج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1064"/>
<source>标签配置文件</source>
<translation>تسمية ملف التكوين</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1045"/>
<source>选择标签配置文件路径</source>
<translation>حدد مسار ملف التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1061"/>
<source>没有需要保存的标签</source>
<translation>لا تحتاج إلى حفظ العلامات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1061"/>
<source>请先添加标签之后再进行保存</source>
<translation>يرجى إضافة علامة قبل حفظ !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1065"/>
<source>保存标签配置文件</source>
<translation>حفظ العلامة الشخصية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1078"/>
<source>选择保存标签配置文件路径</source>
<translation>حدد مسار حفظ العلامة الشخصية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1125"/>
<source>清空标签列表?</source>
<translation>مسح قائمة العلامات ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1125"/>
<source>请确认是否要清空标签列表</source>
<translation>تأكد من أن كنت تريد إفراغ قائمة العلامات</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1197"/>
<source>无法删除</source>
<translation>غير قادر على حذف</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1198"/>
<source>当前多边形中存在此标签</source>
<translation>هذه العلامة موجودة في المضلع الحالي</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1205"/>
<source>交互式标注模式无法删除标签</source>
<translation>طريقة التعليق التفاعلي لا يمكن حذف التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1241"/>
<source>确认删除</source>
<translation>تأكيد حذف ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1241"/>
<source>确认要删除当前选中多边形标注</source>
<translation>هل أنت متأكد أنك تريد حذف المضلع المحدد حاليا الشرح ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1310"/>
<source>选择待标注图片</source>
<translation>حدد الصورة إلى علامة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1321"/>
<source>请在gpu电脑上进行视频标注</source>
<translation>يرجى وضع علامة الفيديو على جهاز الكمبيوتر العمومي</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1321"/>
<source>准备进行视频标注由于视频标注需要一定计算请尽量确保在gpu的电脑上进行操作!</source>
<translation>إعداد الفيديو الشرح ، لأن الفيديو الشرح يحتاج إلى بعض الحسابات ، يرجى التأكد من أن تعمل على جهاز الكمبيوتر العمومي !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1348"/>
<source>选择待标注图片文件夹</source>
<translation>حدد مجلد الصور إلى علامة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1435"/>
<source>未启用医疗组件</source>
<translation>العنصر الطبي لا يمكن</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1435"/>
<source>加载医疗影像需启用医疗组件是否立即启用</source>
<translation>المكونات الطبية اللازمة لتحميل الصور الطبية . هل تريد تمكين الآن ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1471"/>
<source>未打开遥感组件</source>
<translation>الاستشعار عن بعد عنصر لم تفتح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1471"/>
<source>打开遥感图像需启用遥感组件是否立即启用</source>
<translation>فتح صور الاستشعار عن بعد يتطلب تمكين الاستشعار عن بعد عنصر . هل تريد تمكين الآن ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 波段数</source>
<translation> عدد العصابات :</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 数据类型</source>
<translation> أنواع البيانات :</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 行数</source>
<translation> عدد الصفوف :</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 列数</source>
<translation> عدد الأعمدة :</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1510"/>
<source></source>
<translation>لا</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1515"/>
<source>未启用视频组件</source>
<translation>عنصر الفيديو لا يمكن</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1515"/>
<source>加载视频需启用视频组件是否立即启用</source>
<translation>تحميل الفيديو يتطلب تمكين مكونات الفيديو هل تريد تمكين الآن ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1654"/>
<source>没有后一张图片</source>
<translation>لا صورة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1656"/>
<source>没有前一张图片</source>
<translation>لا الصورة السابقة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1671"/>
<source>模型未加载</source>
<translation>نموذج لا تحميل</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1671"/>
<source>尚未加载模型请先加载模型</source>
<translation>لم يتم تحميل النموذج ، يرجى تحميل النموذج الأول !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1714"/>
<source>完成最后一个目标</source>
<translation>تحقيق الهدف النهائي ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1714"/>
<source>是否完成最后一个目标的标注不完成不会进行保存</source>
<translation>إذا كان الهدف النهائي هو الانتهاء من الشرح ، لا يتم حفظها .</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1735"/>
<source>保存标签</source>
<translation>حفظ العلامات ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1735"/>
<source>标签尚未保存是否保存标签</source>
<translation>التسمية لم يتم حفظها ، حفظ التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2745"/>
<source>播放</source>
<translation>بلاي </translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1801"/>
<source>文件夹已经存在</source>
<translation>مجلد موجود بالفعل</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1801"/>
<source>该文件夹下不为空您确定继续保存在此路径下吗</source>
<translation>هذا المجلد ليست فارغة ، هل أنت متأكد من أنك تريد الاستمرار في حفظ هذا المسار ؟</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1848"/>
<source>视频帧成功保存至</source>
<translation>إطار الفيديو تم حفظها بنجاح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1952"/>
<source>标签成功保存至</source>
<translation>حفظ التسمية بنجاح</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1960"/>
<source>保存标签文件路径</source>
<translation>حفظ مسار ملف التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1979"/>
<source>选择标签文件保存路径</source>
<translation>حدد مسار حفظ ملف التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2005"/>
<source>选择标签保存路径</source>
<translation>حدد مسار ملف التسمية</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2108"/>
<source>未选择模型</source>
<translation>لا اختيار النموذج</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2108"/>
<source>尚未选择模型请先在右上角选择模型</source>
<translation>لم يتم اختيار النموذج ، حدد النموذج الأول في الزاوية اليمنى العليا</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2115"/>
<source>未选择当前标签</source>
<translation>التسمية الحالية لم يتم اختياره</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2115"/>
<source>请先在标签列表中单击点选标签</source>
<translation>انقر فوق علامة التبويب في قائمة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2228"/>
<source>无法导入GDAL或rasterio</source>
<translation>غير قادر على استيراد GDAL أو rasterio</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2228"/>
<source>使用遥感工具需要安装GDAL和rasterio</source>
<translation>استخدام أدوات الاستشعار عن بعد تحتاج إلى تثبيت GDAL و rasterio !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2233"/>
<source>打开遥感工具失败请安装GDAL和rasterio</source>
<translation>فشل في فتح أداة الاستشعار عن بعد ، الرجاء تثبيت GDAL و rasterio</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2239"/>
<source>无法导入SimpleITK</source>
<translation>لا يمكن استيراد SimpleITK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2239"/>
<source>使用医疗工具需要安装SimpleITK</source>
<translation>استخدام الأدوات الطبية تحتاج إلى تثبيت SimpleITK !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2244"/>
<source>打开医疗工具失败请安装SimpleITK</source>
<translation>فشل في فتح الأداة الطبية ، الرجاء تثبيت SimpleITK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2250"/>
<source>无法导入VTK</source>
<translation>لا يمكن استيراد VTK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2251"/>
<source>使用3D显示工具需要安装VTK</source>
<translation>استخدام الأدوات عرض تحتاج إلى تثبيت VTK !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2254"/>
<source>打开3D显示工具失败请安装VTK</source>
<translation>فشل في فتح الأداة عرض ، الرجاء تثبيت VTK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2493"/>
<source>图像过大已显示缩略图</source>
<translation>الصورة كبيرة جدا ، وقد تم عرض الصور المصغرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2578"/>
<source>图像过大</source>
<translation>صورة كبيرة جدا</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2578"/>
<source>图像过大将启用宫格功能</source>
<translation>الصورة هي كبيرة جدا ، وسوف تمكين وظيفة الشبكة !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2629"/>
<source>功能尚在开发</source>
<translation>وظيفة لا تزال قيد التطوير</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2741"/>
<source>图片格式无法播放</source>
<translation>شكل الصورة لا يمكن أن تلعب</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2741"/>
<source>请先加载视频</source>
<translation>يرجى تحميل الفيديو أولا</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2750"/>
<source>暂停</source>
<translation>وقفة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2762"/>
<source>未加载视频</source>
<translation>لا تحميل الفيديو</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2762"/>
<source>请先在加载图像按钮中加载视频</source>
<translation>يرجى تحميل الفيديو في صورة زر التحميل</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2765"/>
<source>传播模型未加载</source>
<translation>نشر نموذج غير محملة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2765"/>
<source>尚未加载视频传播模型请先加载模型!</source>
<translation>نشر الفيديو لم يتم تحميل النموذج ، يرجى تحميل النموذج الأول !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2768"/>
<source>融合模型未加载</source>
<translation>نموذج الانصهار لا تحميل</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2768"/>
<source>尚未加载视频融合模型请先加载模型!</source>
<translation>فيديو الانصهار نموذج لم يتم تحميلها ، يرجى تحميل النموذج الأول !</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2773"/>
<source>未提供传播参考帧</source>
<translation>نشر الإطار المرجعي غير متوفرة</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2773"/>
<source>请先在标注传播参考帧再进行传播</source>
<translation>يرجى وضع علامة على نشر الإطار المرجعي قبل نشر</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2780"/>
<source>开始传播</source>
<translation>بدء نشر</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2796"/>
<source>传播完成!</source>
<translation>نشر كاملة !</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="57"/>
<source>编辑快捷键</source>
<translation>تحرير اختصارات</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="90"/>
<source>-</source>
<translation>-</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="114"/>
<source>快捷键冲突</source>
<translation>اختصارات الصراع</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="115"/>
<source>快捷键已被</source>
<translation>اختصارات تم</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="115"/>
<source>使用请设置其他快捷键或先修改</source>
<translation>استخدام مجموعة أخرى من مفاتيح الاختصار أو تعديل</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="115"/>
<source>的快捷键</source>
<translation>مفاتيح الاختصار</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="380"/>
<source>时间轴</source>
<translation>محور الزمن</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="399"/>
<source>帧数</source>
<translation>رقم الإطار:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="130"/>
<source>模型选择</source>
<translation>اختيار النموذج</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="141"/>
<source>加载网络参数</source>
<translation>تحميل معلمات الشبكة</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="149"/>
<source>使用掩膜</source>
<translation>استخدام قناع</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="168"/>
<source>数据列表</source>
<translation>قائمة البيانات</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="192"/>
<source>添加标签</source>
<translation>إضافة علامة</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="197"/>
<source>标签列表</source>
<translation>قائمة العلامات</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="206"/>
<source>分割阈值</source>
<translation>تجزئة العتبة:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="212"/>
<source>标签透明度</source>
<translation>علامة الشفافية:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="218"/>
<source>点击可视化半径</source>
<translation>انقر فوق دائرة نصف قطرها البصرية:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="224"/>
<source>保存</source>
<translation>أنقذ</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="232"/>
<source>分割设置</source>
<translation>تقسيم إعدادات</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="238"/>
<source>遥感设置</source>
<translation>إعدادات الاستشعار عن بعد</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="241"/>
<source>波段设置</source>
<translation>وضع الفرقة</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="254"/>
<source>保存设置</source>
<translation>حفظ الإعدادات</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="255"/>
<source>建筑边界规范化</source>
<translation>تبسيط استخدام الحدود المعمارية</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="258"/>
<source>另存为shapefile</source>
<translation>حفظ إضافية كما shapefile</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="262"/>
<source>地理信息</source>
<translation>معلومات جغرافية</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="281"/>
<source>窗宽</source>
<translation>عرض النافذة:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="286"/>
<source>窗位</source>
<translation>مستوى النافذة:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="292"/>
<source>医疗设置</source>
<translation>الإعداد الطبي</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="297"/>
<source>宫格切换</source>
<translation>قصر التبديل</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="306"/>
<source>完成宫格</source>
<translation>الانتهاء من قصر شعرية</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="318"/>
<source>保存每个宫格的标签</source>
<translation>حفظ علامات التبويب في كل قصر</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="341"/>
<source>视频分割设置</source>
<translation>إعدادات تجزئة الفيديو</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="344"/>
<source>加载传播网络参数</source>
<translation>تحميل شبكة نشر المعلمات</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="351"/>
<source>传播</source>
<translation>نشر</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="362"/>
<source>进度</source>
<translation>تقدم:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="370"/>
<source>3D显示</source>
<translation>عرض</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="401"/>
<source>上一帧</source>
<translation>الإطار السابق</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="405"/>
<source>下一帧</source>
<translation>الإطار التالي</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="415"/>
<source>倍速: </source>
<translation>سرعة: </translation>
</message>
</context>
</TS>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en" sourcelanguage="zh">
<context>
<name>APP_EISeg</name>
<message>
<location filename="../../eiseg/app.py" line="298"/>
<source>&amp;打开图像</source>
<translation>&amp;Open Image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="298"/>
<source>打开一张图像进行标注</source>
<translation>Open an image for annotation</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="305"/>
<source>&amp;打开文件夹</source>
<translation>&amp;Open Dir</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="305"/>
<source>打开一个文件夹下所有的图像进行标注</source>
<translation>Open all images in a folder for annotation</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="312"/>
<source>&amp;改变标签保存路径</source>
<translation>&amp;Change Output Dir</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="312"/>
<source>改变标签保存的文件夹路径</source>
<translation>Change the folder where labels are saved</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="319"/>
<source>&amp;加载模型参数</source>
<translation>&amp;Load Model Parameters</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="319"/>
<source>加载一个模型参数</source>
<translation>Load a model parameter</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="326"/>
<source>&amp;保存</source>
<translation>&amp;Save</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="326"/>
<source>保存图像标签</source>
<translation>Save image label</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="333"/>
<source>&amp;另存为</source>
<translation>&amp;Save as</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="333"/>
<source>在指定位置另存为标签</source>
<translation>Save as label at the specified location</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="340"/>
<source>&amp;自动保存</source>
<translation>&amp;Auto Save</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="340"/>
<source>翻页同时自动保存</source>
<translation>ave automatically while turning image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="351"/>
<source>&amp;上一张</source>
<translation>&amp;Prev Image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="351"/>
<source>翻到上一张图片</source>
<translation>Filp to previous image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="358"/>
<source>&amp;下一张</source>
<translation>&amp;Next Image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="358"/>
<source>翻到下一张图片</source>
<translation>Flip to the next image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="365"/>
<source>&amp;完成当前目标</source>
<translation>&amp;Finish Current Target</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="365"/>
<source>完成当前目标的标注</source>
<translation>Finish labeling the current object</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="372"/>
<source>&amp;清除所有标注</source>
<translation>&amp;Clear All Labels</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="372"/>
<source>清除所有标注信息</source>
<translation>Clear all labels in the image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="379"/>
<source>&amp;撤销</source>
<translation>&amp;Undo</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="379"/>
<source>撤销一次点击</source>
<translation>Undo one click</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="386"/>
<source>&amp;重做</source>
<translation>&amp;Redo</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="386"/>
<source>重做一次点击</source>
<translation>Redo one click</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="393"/>
<source>&amp;删除多边形</source>
<translation>&amp;Delete Polygon</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="393"/>
<source>删除当前选中的多边形</source>
<translation>Deletes the currently selected polygon</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="400"/>
<source>&amp;删除所有多边形</source>
<translation>&amp;Delete all polygons</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="400"/>
<source>删除所有的多边形</source>
<translation>Delete all polygons</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="407"/>
<source>&amp;保留最大连通块</source>
<translation>&amp;Filter LCC</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="407"/>
<source>保留最大的连通块</source>
<translation>Keep the largest connected component only</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="415"/>
<source>&amp;标签和图像使用相同拓展名</source>
<translation>&amp;Use same extension name</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="415"/>
<source>标签和图像使用相同拓展名用于图像中有文件名相同但拓展名不同的情况防止标签覆盖</source>
<translation>The label and image use the same extension name, which is used to prevent the label from being overwritten when the file name in the image is the same but the extension name is different</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="423"/>
<source>&amp;伪彩色保存</source>
<translation>&amp;Pseudo Color Format</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="423"/>
<source>保存为伪彩色图像</source>
<translation>Save label in pseudo color format</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="432"/>
<source>&amp;灰度保存</source>
<translation>&amp;Grayscale Format</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="432"/>
<source>保存为灰度图像像素的灰度为对应类型的标签</source>
<translation>Save label in grayscale format, the value of each pixel is the id for the label category of the pixel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="441"/>
<source>&amp;JSON保存</source>
<translation>&amp;JSON Format</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="441"/>
<source>保存为JSON格式</source>
<translation>Save polygon information in JSON format</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="450"/>
<source>&amp;COCO保存</source>
<translation>&amp;Coco Format</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="450"/>
<source>保存为COCO格式</source>
<translation>Save polygon information in coco format</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="460"/>
<source>&amp;显示遥感多边形</source>
<translation>&amp;Display RS polygons</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="460"/>
<source>显示遥感大图的多边形结果</source>
<translation>Display RS large polygon</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="469"/>
<source>&amp;启用宫格检测</source>
<translation>&amp;Enable grid detection</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="469"/>
<source>针对每张图片启用宫格检测</source>
<translation>Enable grid detection for each picture</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="478"/>
<source>&amp;抠图保存</source>
<translation>&amp;Save Matting</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="478"/>
<source>只保留前景背景设置为背景色</source>
<translation>Only keep foreground pixels, set all background pixels to background color</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="487"/>
<source>&amp;设置抠图背景色</source>
<translation>&amp;Set matting background color</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="487"/>
<source>抠图后背景像素的颜色</source>
<translation>The color to use for all background pixels</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="494"/>
<source>&amp;关闭</source>
<translation>&amp;Close</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="494"/>
<source>关闭当前图像</source>
<translation>Close current image</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="501"/>
<source>&amp;退出</source>
<translation>&amp;Exit</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="501"/>
<source>退出软件</source>
<translation>Exit software</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="508"/>
<source>&amp;导出标签列表</source>
<translation>&amp;Export label list</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="508"/>
<source>将标签列表导出成标签配置文件</source>
<translation>Export label list to label profile</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="515"/>
<source>&amp;载入标签列表</source>
<translation>&amp;Load label list</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="515"/>
<source>从标签配置文件载入标签列表</source>
<translation>Load label list from label profile</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="522"/>
<source>&amp;清空标签列表</source>
<translation>&amp;Clear Label List</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="522"/>
<source>清空所有的标签</source>
<translation>Clear all labels</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="529"/>
<source>&amp;清除近期文件记录</source>
<translation>&amp;Clear recent file records</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="529"/>
<source>清除近期标注文件记录</source>
<translation>Clear recent annotation file records</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="536"/>
<source>&amp;模型选择</source>
<translation>&amp;Model Selection</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="536"/>
<source>隐藏/展示模型选择面板</source>
<translation>Hide / show model selection panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="544"/>
<source>&amp;数据列表</source>
<translation>&amp;Image List</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="544"/>
<source>隐藏/展示数据列表面板</source>
<translation>Hide / show data list panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="552"/>
<source>&amp;标签列表</source>
<translation>&amp;Label List</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="552"/>
<source>隐藏/展示标签列表面板</source>
<translation>Hide / show label list panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="560"/>
<source>&amp;分割设置</source>
<translation>&amp;Segmentation Setting</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="560"/>
<source>隐藏/展示分割设置面板</source>
<translation>Hide / show split settings panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="568"/>
<source>&amp;遥感设置</source>
<translation>&amp;Remote sensing Setting</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="568"/>
<source>隐藏/展示遥感设置面板</source>
<translation>Hide / show remote sensing settings panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="576"/>
<source>&amp;医疗设置</source>
<translation>&amp;Medical Setting</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="576"/>
<source>隐藏/展示医疗设置面板</source>
<translation>Hide / show medical settings panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="584"/>
<source>&amp;N2宫格标注</source>
<translation>&amp;N2 Grid Label</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="584"/>
<source>隐藏/展示N^2宫格细粒度标注面板</source>
<translation>Hide / show n ^ 2 grid fine-grained dimension panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="592"/>
<source>&amp;视频播放</source>
<translation>&amp;Video Player</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="592"/>
<source>隐藏/展示视频播放面板</source>
<translation>Hide / show video player panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="600"/>
<source>&amp;视频标注</source>
<translation>&amp;Video Annotation</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="600"/>
<source>隐藏/展示视频标注面板</source>
<translation>Hide / show video annotation panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="608"/>
<source>&amp;3D显示</source>
<translation>&amp;3D Display</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="608"/>
<source>隐藏/展示3D显示面板</source>
<translation>Hide / show 3D display panel</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="616"/>
<source>&amp;快速入门</source>
<translation>&amp;Quick start</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="616"/>
<source>主要功能使用介绍</source>
<translation>Introduction to main functions</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="623"/>
<source>&amp;反馈问题</source>
<translation>&amp;Feedback issues</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="623"/>
<source>通过Github Issue反馈使用过程中遇到的问题我们会尽快进行修复</source>
<translation>Feed back the problems encountered during use through GitHub issue. We will repair it as soon as possible</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="630"/>
<source>&amp;编辑快捷键</source>
<translation>&amp;Edit Shortcuts</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="630"/>
<source>编辑软件快捷键</source>
<translation>Edit software shortcuts</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="637"/>
<source>&amp;调试日志</source>
<translation>&amp;Debug log</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="637"/>
<source>用于观察软件执行过程和进行debug我们不会自动收集任何日志可能会希望您在反馈问题时间打开此功能帮助我们定位问题</source>
<translation>It is used to observe the software execution process and debug. We don&amp;apos;t automatically collect any logs. We may want you to turn on this function when you feed back the problem to help us locate the problem.</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="646"/>
<source>&amp;使用QT文件窗口</source>
<translation>&amp;Use QT file window</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="646"/>
<source>如果使用文件选择窗口时遇到问题可以选择使用Qt窗口</source>
<translation>If you encounter problems using the file selection window, you can choose to use the QT window</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="770"/>
<source>文件</source>
<translation>File</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="771"/>
<source>标注</source>
<translation>Annotation</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="772"/>
<source>功能</source>
<translation>Functions</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="773"/>
<source>显示</source>
<translation>Display</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="774"/>
<source>帮助</source>
<translation>Help</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="671"/>
<source>近期文件</source>
<translation>Recent documents</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="672"/>
<source>近期模型及参数</source>
<translation>Recent models and parameters</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="673"/>
<source>近期视频传播模型及参数</source>
<translation>Recent video propagation model and parameters</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="674"/>
<source>语言</source>
<translation>Language</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="825"/>
<source>切换语言</source>
<translation>Changing language</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="825"/>
<source>切换语言需要重启软件才能生效</source>
<translation>Changing language only takes effect after restarting the app</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="841"/>
<source>无近期文件</source>
<translation>No recent documents</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="857"/>
<source>已清除最近打开文件</source>
<translation>Recently opened files have been cleared</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="877"/>
<source>无近期模型记录</source>
<translation>No recent model parameters</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="897"/>
<source>无近期视频传播模型记录</source>
<translation>No recent video propagation model record</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="947"/>
<source>Paddle静态模型权重文件(*.pdiparams)</source>
<translation>Paddle static model weight files (*.pdiparams)</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="924"/>
<source>选择传播模型参数</source>
<translation>Select propagation model parameters</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="966"/>
<source>参数路径存在中文</source>
<translation>Parameter path exists in Chinese</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="966"/>
<source>请修改参数路径为非中文路径</source>
<translation>Please change the parameter path to a non Chinese path!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="953"/>
<source>选择模型参数</source>
<translation>Select model parameters</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="981"/>
<source>视频传播模型加载成功</source>
<translation>Video propagation model loaded successfully</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1003"/>
<source> 模型加载成功</source>
<translation> Model loaded successfully</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1017"/>
<source>掩膜已启用</source>
<translation>Mask enabled</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1019"/>
<source>掩膜已关闭</source>
<translation>Mask closed</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1023"/>
<source>没有最近使用模型信息请加载模型</source>
<translation>No recently used model information, please load the model</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1031"/>
<source>没有最近使用的视频传播模型信息请加载模型</source>
<translation>No recently used video propagation model information, please load the model</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1064"/>
<source>标签配置文件</source>
<translation>Label profile</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1045"/>
<source>选择标签配置文件路径</source>
<translation>Select label profile path</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1061"/>
<source>没有需要保存的标签</source>
<translation>There are no labels to save</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1061"/>
<source>请先添加标签之后再进行保存</source>
<translation>Please add a label before saving!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1065"/>
<source>保存标签配置文件</source>
<translation>Save label profile</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1078"/>
<source>选择保存标签配置文件路径</source>
<translation>Select the path to save the label profile</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1125"/>
<source>清空标签列表?</source>
<translation>Clear label list?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1125"/>
<source>请确认是否要清空标签列表</source>
<translation>Please confirm you want to clear the label list</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1197"/>
<source>无法删除</source>
<translation>Cannot delete</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1198"/>
<source>当前多边形中存在此标签</source>
<translation>This label exists in the current polygon</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1205"/>
<source>交互式标注模式无法删除标签</source>
<translation>Interactive annotation mode cannot delete labels</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1241"/>
<source>确认删除</source>
<translation>Confirm deletion?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1241"/>
<source>确认要删除当前选中多边形标注</source>
<translation>Are you sure you want to delete the currently selected polygon dimension?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1310"/>
<source>选择待标注图片</source>
<translation>Select the image to be labeled</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1321"/>
<source>请在gpu电脑上进行视频标注</source>
<translation>Please mark the video on the GPU computer</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1321"/>
<source>准备进行视频标注由于视频标注需要一定计算请尽量确保在gpu的电脑上进行操作!</source>
<translation>Prepare for video tagging. Since video tagging requires certain calculation, please try your best to ensure that the operation is carried out on the GPU computer!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1348"/>
<source>选择待标注图片文件夹</source>
<translation>Select the picture folder to be labeled</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1435"/>
<source>未启用医疗组件</source>
<translation>Medical components are not enabled</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1435"/>
<source>加载医疗影像需启用医疗组件是否立即启用</source>
<translation>Loading medical images requires enabling medical components. Do you want to enable them now?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1471"/>
<source>未打开遥感组件</source>
<translation>Remote sensing component not open</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1471"/>
<source>打开遥感图像需启用遥感组件是否立即启用</source>
<translation>The remote sensing component needs to be enabled to open the remote sensing image. Do you want to enable it now?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 波段数</source>
<translation> Number of bands:</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 数据类型</source>
<translation> Data type:</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 行数</source>
<translation> Number of rows:</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1483"/>
<source> 列数</source>
<translation> Number of columns:</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1510"/>
<source></source>
<translation>Na</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1515"/>
<source>未启用视频组件</source>
<translation>Video component not open</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1515"/>
<source>加载视频需启用视频组件是否立即启用</source>
<translation>Loading video requires enabling video components. Do you want to enable them now?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1654"/>
<source>没有后一张图片</source>
<translation>No next picture</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1656"/>
<source>没有前一张图片</source>
<translation>No prev picture</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1671"/>
<source>模型未加载</source>
<translation>Model not loaded</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1671"/>
<source>尚未加载模型请先加载模型</source>
<translation>The model has not been loaded, please load the model first!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1714"/>
<source>完成最后一个目标</source>
<translation>Finish the last goal?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1714"/>
<source>是否完成最后一个目标的标注不完成不会进行保存</source>
<translation>Whether to complete the annotation of the last target. If not, it will not be saved.</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1735"/>
<source>保存标签</source>
<translation>Save label?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1735"/>
<source>标签尚未保存是否保存标签</source>
<translation>The label has not been saved. Do you want to save the label</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2745"/>
<source>播放</source>
<translation>Play</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1801"/>
<source>文件夹已经存在</source>
<translation>Folder already exists</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1801"/>
<source>该文件夹下不为空您确定继续保存在此路径下吗</source>
<translation>This folder is not empty. Are you sure you want to continue saving in this path?</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1848"/>
<source>视频帧成功保存至</source>
<translation>Video frames saved to</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1952"/>
<source>标签成功保存至</source>
<translation>Label successfully saved to</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1960"/>
<source>保存标签文件路径</source>
<translation>Save label file path</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="1979"/>
<source>选择标签文件保存路径</source>
<translation>Select the path to save the label file</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2005"/>
<source>选择标签保存路径</source>
<translation>Select the folder to save labels</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2108"/>
<source>未选择模型</source>
<translation>No model selected</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2108"/>
<source>尚未选择模型请先在右上角选择模型</source>
<translation>No model selected. Please select the model in the upper right corner first</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2115"/>
<source>未选择当前标签</source>
<translation>The current label is not selected</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2115"/>
<source>请先在标签列表中单击点选标签</source>
<translation>Please click the label in the label list first</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2228"/>
<source>无法导入GDAL或rasterio</source>
<translation>Unable to import GDAL or rasterio</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2228"/>
<source>使用遥感工具需要安装GDAL和rasterio</source>
<translation>GDAL and rasterio needs to be installed to use remote sensing tools!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2233"/>
<source>打开遥感工具失败请安装GDAL和rasterio</source>
<translation>Failed to open remote sensing tool. Please install GDAL and rasterio</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2239"/>
<source>无法导入SimpleITK</source>
<translation>Cannot import SimpleITK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2239"/>
<source>使用医疗工具需要安装SimpleITK</source>
<translation>Simpleitk needs to be installed to use medical tools!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2244"/>
<source>打开医疗工具失败请安装SimpleITK</source>
<translation>Failed to open medical tool, please install SimpleITK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2250"/>
<source>无法导入VTK</source>
<translation>Cannot import VTK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2251"/>
<source>使用3D显示工具需要安装VTK</source>
<translation>VTK needs to be installed to use 3D display tools!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2254"/>
<source>打开3D显示工具失败请安装VTK</source>
<translation>Failed to open 3D display tool, please install VTK</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2493"/>
<source>图像过大已显示缩略图</source>
<translation>The image is too large and thumbnails are displayed</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2578"/>
<source>图像过大</source>
<translation>The image is too large</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2578"/>
<source>图像过大将启用宫格功能</source>
<translation>If the image is too large, the grid function will be enabled!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2629"/>
<source>功能尚在开发</source>
<translation>The function is still under development</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2741"/>
<source>图片格式无法播放</source>
<translation>Picture format cannot be played</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2741"/>
<source>请先加载视频</source>
<translation>Please load the video first</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2750"/>
<source>暂停</source>
<translation>Suspend</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2762"/>
<source>未加载视频</source>
<translation>Video not loaded</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2762"/>
<source>请先在加载图像按钮中加载视频</source>
<translation>Please load the video in the load image button first</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2765"/>
<source>传播模型未加载</source>
<translation>Propagation model not loaded</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2765"/>
<source>尚未加载视频传播模型请先加载模型!</source>
<translation>The video propagation model has not been loaded. Please load the model first!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2768"/>
<source>融合模型未加载</source>
<translation>Fusion model not loaded</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2768"/>
<source>尚未加载视频融合模型请先加载模型!</source>
<translation>Video fusion model has not been loaded, please load the model first!</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2773"/>
<source>未提供传播参考帧</source>
<translation>No propagation reference frame provided</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2773"/>
<source>请先在标注传播参考帧再进行传播</source>
<translation>Please propagate the reference frame in the annotation before propagation</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2780"/>
<source>开始传播</source>
<translation>Start propagation</translation>
</message>
<message>
<location filename="../../eiseg/app.py" line="2796"/>
<source>传播完成!</source>
<translation>Propagation completed!</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="57"/>
<source>编辑快捷键</source>
<translation>Edit Keyboard Shortcuts</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="90"/>
<source>-</source>
<translation>-</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="114"/>
<source>快捷键冲突</source>
<translation>Shortcut key conflict</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="115"/>
<source>快捷键已被</source>
<translation>shortcut has been used by</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="115"/>
<source>使用请设置其他快捷键或先修改</source>
<translation>. Please set another key sequence or modify the keyboard shotcut of</translation>
</message>
<message>
<location filename="../../eiseg/widget/shortcut.py" line="115"/>
<source>的快捷键</source>
<translation>first</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="380"/>
<source>时间轴</source>
<translation>Time Axis</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="399"/>
<source>帧数</source>
<translation>Frames:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="130"/>
<source>模型选择</source>
<translation>Model Selection</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="141"/>
<source>加载网络参数</source>
<translation>Load model parameter</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="149"/>
<source>使用掩膜</source>
<translation>Use mask</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="168"/>
<source>数据列表</source>
<translation>Image List</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="192"/>
<source>添加标签</source>
<translation>Add Label</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="197"/>
<source>标签列表</source>
<translation>Label List</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="206"/>
<source>分割阈值</source>
<translation>Segmentation Threshold:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="212"/>
<source>标签透明度</source>
<translation>Label Transparency:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="218"/>
<source>点击可视化半径</source>
<translation>Click Visualization Radius:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="224"/>
<source>保存</source>
<translation>Save</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="232"/>
<source>分割设置</source>
<translation>Segmentation Setting</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="238"/>
<source>遥感设置</source>
<translation>Remote sensing Setting</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="241"/>
<source>波段设置</source>
<translation>Band setting</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="254"/>
<source>保存设置</source>
<translation>Save settings</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="255"/>
<source>建筑边界规范化</source>
<translation>Building boundary normalization</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="258"/>
<source>另存为shapefile</source>
<translation>Save extra as shapefile</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="262"/>
<source>地理信息</source>
<translation>Geographic information</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="281"/>
<source>窗宽</source>
<translation>Window width:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="286"/>
<source>窗位</source>
<translation>Window level:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="292"/>
<source>医疗设置</source>
<translation>Medical Setting</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="297"/>
<source>宫格切换</source>
<translation>Palace grid switching</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="306"/>
<source>完成宫格</source>
<translation>Complete the grid</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="318"/>
<source>保存每个宫格的标签</source>
<translation>Save labels for each grid</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="341"/>
<source>视频分割设置</source>
<translation>Video Segmentation Setting</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="344"/>
<source>加载传播网络参数</source>
<translation>Load propagation model parameters</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="351"/>
<source>传播</source>
<translation>Propagate</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="362"/>
<source>进度</source>
<translation>Progress:</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="370"/>
<source>3D显示</source>
<translation>3D Display</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="401"/>
<source>上一帧</source>
<translation>Prev frame</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="405"/>
<source>下一帧</source>
<translation>Next frame</translation>
</message>
<message>
<location filename="../../eiseg/ui.py" line="415"/>
<source>倍速: </source>
<translation>Speed: </translation>
</message>
</context>
</TS>
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import hashlib
from pathlib import Path
models_dir = Path()
ext = ".pdparams"
for model_path in models_dir.glob("*/*" + ext):
md5 = hashlib.md5(model_path.read_bytes()).hexdigest()
md5_path = str(model_path)[:-len(ext)] + ".md5"
Path(md5_path).write_text(md5)
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
English | [简体中文](README_CN.md)
# Image Matting
## Contents
* [Introduction](#Introduction)
* [Update Notes](#Update-Notes)
* [Community](#Community)
* [Models](#Models)
* [Tutorials](#Tutorials)
* [Acknowledgement](#Acknowledgement)
* [Citation](#Citation)
## Introduction
Image Matting is the technique of extracting foreground from an image by calculating its color and transparency.
It is widely used in the film industry to replace background, image composition, and visual effects.
Each pixel in the image will have a value that represents its foreground transparency, called Alpha.
The set of all Alpha values in an image is called Alpha Matte.
The part of the image covered by the mask can be extracted to complete foreground separation.
<p align="center">
<img src="https://user-images.githubusercontent.com/30919197/179751613-d26f2261-7bcf-4066-a0a4-4c818e7065f0.gif" width="100%" height="100%">
</p>
## Update Notes
* 2022.11
* **Release self developed lite matting SOTA model PP-MattingV2**. Compared with MODNet, the inference speed of PP-MattingV2 is increased by 44.6%, and the average error is decreased by 17.91%.
* Adjust the document structure and improve the model zoo information.
* [FastDeploy](https://github.com/PaddlePaddle/FastDeploy) support PP-MattingV2, PP-Matting, PP-HumanMatting and MODNet models.
* 2022.07
* Release PP-Matting code. Add ClosedFormMatting, KNNMatting, FastMatting, LearningBaseMatting and RandomWalksMatting traditional machine learning algorithms.
Add GCA model.
* upport to specify metrics for evaluation. Support to specify metrics for evaluation.
* 2022.04
* **Release self developed high accuracy matting SOTA model PP-Matting**. Add PP-HumanMatting high-resolution human matting model.
* Add Grad, Conn evaluation metrics. Add foreground evaluation funciton, which use [ML](https://arxiv.org/pdf/2006.14970.pdf) algorithm to evaluate foreground when prediction or background replacement.
* Add GradientLoss and LaplacianLoss. Add RandomSharpen, RandomSharpen, RandomReJpeg, RSSN data augmentation strategies.
* 2021.11
* **Matting Project is released**, which Realizes image matting function.
* Support Matting models: DIM, MODNet. Support model export and python deployment. Support background replacement function. Support human matting deployment in Android.
## Community
* If you have any questions, suggestions and feature requests, please create an issues in [GitHub Issues](https://github.com/PaddlePaddle/PaddleSeg/issues).
* Welcome to scan the following QR code and join paddleseg wechat group to communicate with us.
<div align="center">
<img src="https://user-images.githubusercontent.com/48433081/174770518-e6b5319b-336f-45d9-9817-da12b1961fb1.jpg" width = "200" />
</div>
## Models
For the widely application scenario -- human matting, we have trained and open source the ** high-quality human matting models**.
According the actual application scenario, you can directly deploy or finetune.
The model zoo includes our self developded high accuracy model PP-Matting and lite model PP-MattingV2.
- PP-Matting is a high accuracy matting model developded by PaddleSeg, which realizes high-resolution image matting under semantic guidance by the design of Guidance Flow.
For high accuracy, this model is recommended. Two pre-trained models are opened source with 512 and 1024 resolution level.
- PP-MattingV2 is a lite matting SOTA model developed by PaddleSeg. It extracts high-level semantc informating by double-pyramid pool and spatial attention,
and uses multi-level feature fusion mechanism for both semantic and detail prediciton.
| Model | SAD | MSE | Grad | Conn |Params(M) | FLOPs(G) | FPS | Config File | Checkpoint | Inference Model |
| - | - | -| - | - | - | - | -| - | - | - |
| PP-MattingV2-512 |40.59|0.0038|33.86|38.90| 8.95 | 7.51 | 98.89 |[cfg](../configs/ppmattingv2/ppmattingv2-stdc1-human_512.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/ppmattingv2-stdc1-human_512.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/ppmattingv2-stdc1-human_512.zip) |
| PP-Matting-512 |31.56|0.0022|31.80|30.13| 24.5 | 91.28 | 28.9 |[cfg](../configs/ppmatting/ppmatting-hrnet_w18-human_512.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/ppmatting-hrnet_w18-human_512.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/ppmatting-hrnet_w18-human_512.zip) |
| PP-Matting-1024 |66.22|0.0088|32.90|64.80| 24.5 | 91.28 | 13.4(1024X1024) |[cfg](../configs/ppmatting/ppmatting-hrnet_w18-human_1024.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/ppmatting-hrnet_w18-human_1024.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/ppmatting-hrnet_w18-human_1024.zip) |
| PP-HumanMatting |53.15|0.0054|43.75|52.03| 63.9 | 135.8 (2048X2048)| 32.8(2048X2048)|[cfg](../configs/human_matting/human_matting-resnet34_vd.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/human_matting-resnet34_vd.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/pp-humanmatting-resnet34_vd.zip) |
| MODNet-MobileNetV2 |50.07|0.0053|35.55|48.37| 6.5 | 15.7 | 68.4 |[cfg](../configs/modnet/modnet-mobilenetv2.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/modnet-mobilenetv2.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/modnet-mobilenetv2.zip) |
| MODNet-ResNet50_vd |39.01|0.0038|32.29|37.38| 92.2 | 151.6 | 29.0 |[cfg](../configs/modnet/modnet-resnet50_vd.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/modnet-resnet50_vd.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/modnet-resnet50_vd.zip) |
| MODNet-HRNet_W18 |35.55|0.0035|31.73|34.07| 10.2 | 28.5 | 62.6 |[cfg](../configs/modnet/modnet-hrnet_w18.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/modnet-hrnet_w18.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/modnet-hrnet_w18.zip) |
| DIM-VGG16 |32.31|0.0233|28.89|31.45| 28.4 | 175.5| 30.4 |[cfg](../configs/dim/dim-vgg16.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/dim-vgg16.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/dim-vgg16.zip) |
**Note**
* The dataset for metrics is composed of PPM-100 and human part of AIM-500, with a total of 195 images, which named [PPM-AIM-195](https://paddleseg.bj.bcebos.com/matting/datasets/PPM-AIM-195.zip).
* The model default input size is (512, 512) while calculating FLOPs and FPS and the GPU is Tesla V100 32G. FPS is calculated base on Paddle Inference.
* DIM is a trimap-base matting method, which metrics are calculated in transition area.
If no trimap image is provided, the area 0<alpha<255 is used as the transition area after dilation erosion with a radius of 25 pixels.
## Tutorials
* [Online experience](docs/online_demo_en.md)
* [Quick start](docs/quick_start_en.md)
* [Full development](docs/full_develop_en.md)
* [Human matting android deployment](deploy/human_matting_android_demo/README.md)
* [Dataset preparation](docs/data_prepare_en.md)
* AI Studio tutorials
* [The Matting tutorial of PaddleSeg](https://aistudio.baidu.com/aistudio/projectdetail/3876411?contributionType=1)
* [The image matting tutorial of PP-Matting](https://aistudio.baidu.com/aistudio/projectdetail/5002963?contributionType=1)
## Acknowledgement
* Thanks [Qian bin](https://github.com/qianbin1989228) for their contributons.
* Thanks for the algorithm support of [GFM](https://arxiv.org/abs/2010.16188).
## Citation
```
@article{chen2022pp,
title={PP-Matting: High-Accuracy Natural Image Matting},
author={Chen, Guowei and Liu, Yi and Wang, Jian and Peng, Juncai and Hao, Yuying and Chu, Lutao and Tang, Shiyu and Wu, Zewu and Chen, Zeyu and Yu, Zhiliang and others},
journal={arXiv preprint arXiv:2204.09433},
year={2022}
}
```
简体中文 | [English](README.md)
# Image Matting
## 目录
* [简介](#简介)
* [更新动态](#更新动态)
* [技术交流](#技术交流)
* [模型库](#模型库)
* [使用教程](#使用教程)
* [社区贡献](#社区贡献)
* [学术引用](#学术引用)
## 简介
Image Matting(精细化分割/影像去背/抠图)是指借由计算前景的颜色和透明度,将前景从影像中撷取出来的技术,可用于替换背景、影像合成、视觉特效,在电影工业中被广泛地使用。
影像中的每个像素会有代表其前景透明度的值,称作阿法值(Alpha),一张影像中所有阿法值的集合称作阿法遮罩(Alpha Matte),将影像被遮罩所涵盖的部分取出即可完成前景的分离。
<p align="center">
<img src="https://user-images.githubusercontent.com/30919197/179751613-d26f2261-7bcf-4066-a0a4-4c818e7065f0.gif" width="100%" height="100%">
</p>
## 更新动态
* 2022.11
* **开源自研轻量级抠图SOTA模型PP-MattingV2**。对比MODNet, PP-MattingV2推理速度提升44.6%, 误差平均相对减小17.91%。
* 调整文档结构,完善模型库信息。
* [FastDeploy](https://github.com/PaddlePaddle/FastDeploy)部署支持PP-MattingV2, PP-Matting, PP-HumanMatting和MODNet模型。
* 2022.07
* 开源PP-Matting代码;新增ClosedFormMatting、KNNMatting、FastMatting、LearningBaseMatting和RandomWalksMatting传统机器学习算法;新增GCA模型。
* 完善目录结构;支持指定指标进行评估。
* 2022.04
* **开源自研高精度抠图SOTA模型PP-Matting**;新增PP-HumanMatting高分辨人像抠图模型。
* 新增Grad、Conn评估指标;新增前景评估功能,利用[ML](https://arxiv.org/pdf/2006.14970.pdf)算法在预测和背景替换时进行前景评估。
* 新增GradientLoss和LaplacianLoss;新增RandomSharpen、RandomSharpen、RandomReJpeg、RSSN数据增强策略。
* 2021.11
* **Matting项目开源**, 实现图像抠图功能。
* 支持Matting模型:DIM, MODNet;支持模型导出及Python部署;支持背景替换功能;支持人像抠图Android部署。
## 技术交流
* 如果大家有使用问题和功能建议, 可以通过[GitHub Issues](https://github.com/PaddlePaddle/PaddleSeg/issues)提issue。
* **欢迎加入PaddleSeg的微信用户群👫**(扫码填写简单问卷即可入群),大家可以和值班同学、各界大佬直接进行交流,还可以**领取30G重磅学习大礼包🎁**
* 🔥 获取深度学习视频教程、图像分割论文合集
* 🔥 获取PaddleSeg的历次直播视频,最新发版信息和直播动态
* 🔥 获取PaddleSeg自建的人像分割数据集,整理的开源数据集
* 🔥 获取PaddleSeg在垂类场景的预训练模型和应用合集,涵盖人像分割、交互式分割等等
* 🔥 获取PaddleSeg的全流程产业实操范例,包括质检缺陷分割、抠图Matting、道路分割等等
<div align="center">
<img src="https://user-images.githubusercontent.com/48433081/174770518-e6b5319b-336f-45d9-9817-da12b1961fb1.jpg" width = "200" />
</div>
## 模型库
针对高频应用场景 —— 人像抠图,我们训练并开源了**高质量人像抠图模型库**。根据实际应用场景,大家可以直接部署应用,也支持进行微调训练。
模型库中包括我们自研的高精度PP-Matting模型和轻量级PP-MattingV2模型。
- PP-Matting是PaddleSeg自研的高精度抠图模型,通过引导流设计实现语义引导下高分辨率图像抠图。追求更高精度,推荐使用该模型。
且该模型提供了512和1024两个分辨率级别的预训练模型。
- PP-MattingV2是PaddleSeg自研的轻量级抠图SOTA模型,通过双层金字塔池化及空间注意力提取高级语义信息,并利用多级特征融合机制兼顾语义和细节的预测。
对比MODNet模型推理速度提升44.6%, 误差平均相对减小17.91%。追求更高速度,推荐使用该模型。
| 模型 | SAD | MSE | Grad | Conn |Params(M) | FLOPs(G) | FPS | Config File | Checkpoint | Inference Model |
| - | - | -| - | - | - | - | -| - | - | - |
| PP-MattingV2-512 |40.59|0.0038|33.86|38.90| 8.95 | 7.51 | 98.89 |[cfg](../configs/ppmattingv2/ppmattingv2-stdc1-human_512.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/ppmattingv2-stdc1-human_512.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/ppmattingv2-stdc1-human_512.zip) |
| PP-Matting-512 |31.56|0.0022|31.80|30.13| 24.5 | 91.28 | 28.9 |[cfg](../configs/ppmatting/ppmatting-hrnet_w18-human_512.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/ppmatting-hrnet_w18-human_512.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/ppmatting-hrnet_w18-human_512.zip) |
| PP-Matting-1024 |66.22|0.0088|32.90|64.80| 24.5 | 91.28 | 13.4(1024X1024) |[cfg](../configs/ppmatting/ppmatting-hrnet_w18-human_1024.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/ppmatting-hrnet_w18-human_1024.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/ppmatting-hrnet_w18-human_1024.zip) |
| PP-HumanMatting |53.15|0.0054|43.75|52.03| 63.9 | 135.8 (2048X2048)| 32.8(2048X2048)|[cfg](../configs/human_matting/human_matting-resnet34_vd.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/human_matting-resnet34_vd.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/pp-humanmatting-resnet34_vd.zip) |
| MODNet-MobileNetV2 |50.07|0.0053|35.55|48.37| 6.5 | 15.7 | 68.4 |[cfg](../configs/modnet/modnet-mobilenetv2.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/modnet-mobilenetv2.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/modnet-mobilenetv2.zip) |
| MODNet-ResNet50_vd |39.01|0.0038|32.29|37.38| 92.2 | 151.6 | 29.0 |[cfg](../configs/modnet/modnet-resnet50_vd.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/modnet-resnet50_vd.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/modnet-resnet50_vd.zip) |
| MODNet-HRNet_W18 |35.55|0.0035|31.73|34.07| 10.2 | 28.5 | 62.6 |[cfg](../configs/modnet/modnet-hrnet_w18.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/modnet-hrnet_w18.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/modnet-hrnet_w18.zip) |
| DIM-VGG16 |32.31|0.0233|28.89|31.45| 28.4 | 175.5| 30.4 |[cfg](../configs/dim/dim-vgg16.yml)| [model](https://paddleseg.bj.bcebos.com/matting/models/dim-vgg16.pdparams) | [model inference](https://paddleseg.bj.bcebos.com/matting/models/deploy/dim-vgg16.zip) |
**注意**
* 指标计算数据集为PPM-100和AIM-500中的人像部分共同组成,共195张,[PPM-AIM-195](https://paddleseg.bj.bcebos.com/matting/datasets/PPM-AIM-195.zip)
* FLOPs和FPS计算默认模型输入大小为(512, 512), GPU为Tesla V100 32G。FPS基于Paddle Inference预测裤进行计算。
* DIM为trimap-based的抠图方法,指标只计算过度区域部分,对于没有提供trimap的情况下,默认将0<alpha<255的区域以25像素为半径进行膨胀腐蚀后作为过度区域。
## 使用教程
* [在线体验](docs/online_demo_cn.md)
* [快速体验](docs/quick_start_cn.md)
* [全流程开发](docs/full_develop_cn.md)
* [人像抠图Android部署](deploy/human_matting_android_demo/README_CN.md)
* [数据集准备](docs/data_prepare_cn.md)
* AI Studio第三方教程
* [PaddleSeg的Matting教程](https://aistudio.baidu.com/aistudio/projectdetail/3876411?contributionType=1)
* [PP-Matting图像抠图教程](https://aistudio.baidu.com/aistudio/projectdetail/5002963?contributionType=1)
## 社区贡献
* 感谢[钱彬(Qianbin)](https://github.com/qianbin1989228)等开发者的贡献。
* 感谢Jizhizi Li等提出的[GFM](https://arxiv.org/abs/2010.16188) Matting框架助力PP-Matting的算法研发。
## 学术引用
```
@article{chen2022pp,
title={PP-Matting: High-Accuracy Natural Image Matting},
author={Chen, Guowei and Liu, Yi and Wang, Jian and Peng, Juncai and Hao, Yuying and Chu, Lutao and Tang, Shiyu and Wu, Zewu and Chen, Zeyu and Yu, Zhiliang and others},
journal={arXiv preprint arXiv:2204.09433},
year={2022}
}
```
val_dataset:
type: Composition1K
dataset_root: data/Composition-1k
val_file: val.txt
separator: '|'
transforms:
- type: LoadImages
- type: ResizeByShort
short_size: 512
- type: ResizeToIntMult
mult_int: 32
- type: Normalize
mode: val
get_trimap: True
model:
type: CloseFormMatting
val_dataset:
type: Distinctions646
dataset_root: data/Distinctions-646
val_file: val.txt
separator: '|'
transforms:
- type: LoadImages
- type: ResizeByShort
short_size: 512
- type: ResizeToIntMult
mult_int: 32
- type: Normalize
mode: val
get_trimap: True
model:
type: CloseFormMatting
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment