pull/1/head
韩天峰 3 years ago
parent ded5ff6966
commit b26283e4dd
  1. 15
      cases/ai2.py
  2. 55
      cases/ai3.py
  3. 52
      cases/ai4.py
  4. 28
      cases/ai5.py
  5. 304
      cases/mixed.php
  6. 4
      cases/mixed.py
  7. 2
      conv.php

@ -0,0 +1,15 @@
from modelscope.pipelines import pipeline
from modelscope.outputs import OutputKeys
from PIL import Image
from background_generation import modelscope_warpper
model = "damo/cv_background_generation_sd"
pipe = pipeline('background_generation_task', model=model, device='gpu', auto_collate=False, model_revision='v1.1.0')
out = pipe(
'https://vision-poster.oss-cn-shanghai.aliyuncs.com/lllcho.lc/data/test_data/demo_example/%E5%8C%96%E5%A6%86%E5%93%81/1c33fc5e8b084269ffdb4e0557c2c3c4.png',
'https://vision-poster.oss-cn-shanghai.aliyuncs.com/lllcho.lc/data/test_data/5d873b5f64b82bcbb235748347602dce38c6ec1d.jpg',
num_inference_steps=20,
num_images_per_prompt=2,
seed=None,
noise_level=500
)

@ -0,0 +1,55 @@
import cv2
import os
import numpy as np
import torch
from modelscope import snapshot_download
from PIL import Image
import onnxruntime
def softmax(x):
x -= np.max(x, axis=0, keepdims=True)
x = np.exp(x) / np.sum(np.exp(x), axis=0, keepdims=True)
return x
def get_rot(image, ort_session):
img_cv = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
img_clone = img_cv.copy()
img_np = cv2.resize(img_cv, (224, 224))
img_np = img_np.astype(np.float32)
mean = np.array([103.53, 116.28, 123.675], dtype=np.float32).reshape((1, 1, 3))
norm = np.array([0.01742919, 0.017507, 0.01712475], dtype=np.float32).reshape((1, 1, 3))
img_np = (img_np - mean) * norm
img_tensor = torch.from_numpy(img_np)
img_tensor = img_tensor.unsqueeze(0)
img_nchw = img_tensor.permute(0, 3, 1, 2)
ort_inputs = {ort_session.get_inputs()[0].name: img_nchw.numpy()}
outputs = ort_session.run(None, ort_inputs)
logits = outputs[0].reshape((-1,))
probs = softmax(logits)
rot_idx = np.argmax(probs)
if rot_idx == 1:
print('rot 90')
img_clone = cv2.transpose(img_clone)
img_clone = np.flip(img_clone, 1)
return Image.fromarray(cv2.cvtColor(img_clone, cv2.COLOR_BGR2RGB))
elif rot_idx == 2:
print('rot 180')
img_clone = cv2.flip(img_clone, -1)
return Image.fromarray(cv2.cvtColor(img_clone, cv2.COLOR_BGR2RGB))
elif rot_idx == 3:
print('rot 270')
img_clone = cv2.transpose(img_clone)
img_clone = np.flip(img_clone, 0)
return Image.fromarray(cv2.cvtColor(img_clone, cv2.COLOR_BGR2RGB))
else:
return image
model_dir = snapshot_download('Cherrytest/rot_bgr', revision='v1.0.0')
model_path = os.path.join(model_dir, 'rot_bgr.onnx')
ort_session = onnxruntime.InferenceSession(model_path)
img_path = 'path_of_your_image'
image = Image.open(img_path)
image = image.convert('RGB')
image = get_rot(image, ort_session)
out_path = 'path_to_save_image'
image.save(out_path)

@ -0,0 +1,52 @@
import tempfile
from modelscope.msdatasets import MsDataset
from modelscope.metainfo import Trainers
from modelscope.trainers import build_trainer
from modelscope.utils.constant import DownloadMode
from modelscope.utils.hub import snapshot_download
train_dataset = MsDataset(
MsDataset.load(
"coco_2014_caption",
namespace="modelscope",
split="train[:100]",
download_mode=DownloadMode.REUSE_DATASET_IF_EXISTS).remap_columns({
'image': 'image',
'caption': 'text'
}))
test_dataset = MsDataset(
MsDataset.load(
"coco_2014_caption",
namespace="modelscope",
split="validation[:20]",
download_mode=DownloadMode.REUSE_DATASET_IF_EXISTS).remap_columns({
'image': 'image',
'caption': 'text'
}))
def cfg_modify_fn(cfg):
cfg.train.hooks = [{
'type': 'CheckpointHook',
'interval': 2
}, {
'type': 'TextLoggerHook',
'interval': 1
}, {
'type': 'IterTimerHook'
}]
cfg.train.max_epochs=2
return cfg
pretrained_model = 'damo/ofa_pretrain_base_zh'
pretrain_path = snapshot_download(pretrained_model, revision='v1.0.2')
args = dict(
model=pretrain_path,
train_dataset=train_dataset,
eval_dataset=test_dataset,
cfg_modify_fn=cfg_modify_fn,
work_dir = tempfile.TemporaryDirectory().name)
trainer = build_trainer(name=Trainers.ofa, default_args=args)
trainer.train()

@ -0,0 +1,28 @@
# require modelscope>=0.3.7,目前默认已经超过,您检查一下即可
# 按照更新镜像的方法处理或者下面的方法
# pip install --upgrade modelscope -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
# 需要单独安装decord,安装方法:pip install decord
import torch
from modelscope.utils.constant import Tasks
from modelscope.pipelines import pipeline
from modelscope.preprocessors.image import load_image
pipeline = pipeline(task=Tasks.multi_modal_embedding,
model='damo/multi-modal_clip-vit-large-patch14_336_zh', model_revision='v1.0.1')
input_img = load_image('https://clip-cn-beijing.oss-cn-beijing.aliyuncs.com/pokemon.jpeg') # 支持皮卡丘示例图片路径/本地图片 返回PIL.Image
input_texts = ["杰尼龟", "妙蛙种子", "小火龙", "皮卡丘"]
# 支持一张图片(PIL.Image)或多张图片(List[PIL.Image])输入,输出归一化特征向量
img_embedding = pipeline.forward({'img': input_img})['img_embedding'] # 2D Tensor, [图片数, 特征维度]
# 支持一条文本(str)或多条文本(List[str])输入,输出归一化特征向量
text_embedding = pipeline.forward({'text': input_texts})['text_embedding'] # 2D Tensor, [文本数, 特征维度]
# 计算图文相似度
with torch.no_grad():
# 计算内积得到logit,考虑模型temperature
logits_per_image = (img_embedding / pipeline.model.temperature) @ text_embedding.t()
# 根据logit计算概率分布
probs = logits_per_image.softmax(dim=-1).cpu().numpy()
print("图文匹配概率:", probs)

@ -0,0 +1,304 @@
<?php
$operator = PyCore::import("operator");
$builtins = PyCore::import("builtins");
/** 与之对应的是多行注释
用三个双引号表示,这两段双引号当中的内容都会被视作是注释
*/
$values = new PyList([]);
$kv = new PyDict([
"hello" => "world",
]);
$__value = 3;
$values->__setitem__(0, $__value);
$__value = 10;
$values->__setitem__(1, $__value);
$c = 1 + 1;
$d = 8 - 1;
$e = 10 * 2;
$f = 35 / 5;
$g = $operator->floordiv(5 , 3);
$h = $operator->floordiv(-5 , 3);
$j = $operator->floordiv(5.5 , 3);
$k = $operator->floordiv(-5 , 3);
$__value = 7 % 3;
$values->__setitem__(10, $__value);
$__value = $operator->pow(2 , 3);
$values->__setitem__(11, $__value);
$__value = 1 + 3 * 2;
$values->__setitem__(12, $__value);
$__value = 1 + 3 * 2;
$values->__setitem__(13, $__value);
$_ = true;
$_ = false;
$_ = !true;
$_ = !false;
$_ = true && false;
$_ = false || true;
$_ = true + true;
$_ = true * 8;
$_ = false - 5;
$_ = 0 == false;
$_ = 1 == true;
$_ = 2 == true;
$_ = -5 != false;
$_ = PyCore::bool(0);
$_ = PyCore::bool(4);
$_ = PyCore::bool(-6);
$_ = 0 && 2;
$_ = -5 || 0;
$_ = 1 == 1;
$_ = 2 == 1;
$_ = 1 != 1;
$_ = 2 != 1;
$_ = 1 < 10;
$_ = 1 > 10;
$_ = 2 <= 2;
$_ = 2 >= 2;
$_ = 1 < 2 && 2 < 3;
$_ = 2 < 3 && 3 < 2;
$_ = 1 < 2;
$_ = 2 < 3;
$a = new PyList([1, 2, 3, 4]);
$b = $a;
$_ = $b == $a;
$_ = $b == $a;
$_ = new PyList([1, 2, 3, 4]);
$_ = $b == $a;
$_ = $b == $a;
$_ = "This is a string.";
$_ = "This is also a string.";
$_ = "Hello " + "world!";
$_ = "Hello world!";
$_ = "This is a string"->__getitem__(0);
$_ = PyCore::len("This is a string");
$name = "Reiko";
$_ = "She said her name is " . $name . ".";
$_ = $name . " is " . PyCore::len($name) . " characters long.";
$_ = null;
$_ = "etc" == null;
$_ = null == null;
$_ = PyCore::bool(null);
$_ = PyCore::bool(0);
$_ = PyCore::bool("");
$_ = PyCore::bool(new PyList([]));
$_ = PyCore::bool(new PyDict([
]));
$_ = PyCore::bool([]);
PyCore::print("I'm Python. Nice to meet you!");
PyCore::print("Hello, World", end: "!");
$input_string_var = PyCore::input("Enter some data: ");
$some_var = 5;
$_ = 3 > 2 ? "yahoo!" : 2;
function test() {
if (3 > 2) {
return "yahoo";
} else {
return 2;
}
}
$li = new PyList([]);
$other_li = new PyList([4, 5, 6]);
$li->append(1);
$li->append(2);
$li->append(4);
$li->append(3);
$li->pop();
$li->append(3);
$_ = $li->__getitem__(0);
$_ = $li->__getitem__(-1);
$_ = $li->__getitem__(4);
$_ = $li->__getitem__(PyCore::slice(1, 3, null));
$_ = $li->__getitem__(PyCore::slice(2, null, null));
$_ = $li->__getitem__(PyCore::slice(null, 3, null));
$_ = $li->__getitem__(PyCore::slice(null, null, 2));
$_ = $li->__getitem__(PyCore::slice(null, null, -1));
$li2 = $li->__getitem__(PyCore::slice(null, null, null));
$li->__delitem__(2);
$li->remove(2);
$li->remove(2);
$li->insert(1, 2);
$li->index(2);
$li->index(4);
$tup = [1, 2, 3];
$tup->__getitem__(0);
$__value = 3;
$tup->__setitem__(0, $__value);
PyCore::type(1);
PyCore::type([1]);
PyCore::type([]);
$_ = PyCore::len($tup);
$_ = $tup + [4, 5, 6];
$_ = $tup->__getitem__(PyCore::slice(null, 2, null));
$_ = $tup->__contains__(2);
[$a, $b, $c] = [1, 2, 3];
[$d, $e, $f] = [4, 5, 6];
[$e, $d] = [$d, $e];
$invalid_dict = new PyDict([
1 => "123",
]);
$_ = $invalid_dict->__getitem__("one");
$_ = $invalid_dict->get("one");
$filled_dict = new PyDict([
"one" => 1,
"two" => 2,
"three" => 3,
]);
$_ = PyCore::list($filled_dict->keys());
$_ = PyCore::list($filled_dict->keys());
$_ = PyCore::list($filled_dict->values());
$_ = PyCore::list($filled_dict->values());
$_ = $filled_dict->__contains__("one");
$_ = $filled_dict->__contains__(1);
$empty_set = PyCore::set();
$some_set = new PySet([1, 1, 2, 2, 3, 4]);
$other_set = new PySet([3, 4, 5, 6]);
$filled_set = new PySet([1, 2, 3]);
$_ = $operator->bitand($filled_set , $other_set);
$_ = $operator->bitor($filled_set , $other_set);
$_ = new PySet([1, 2, 3, 4]) - new PySet([2, 3, 5]);
$_ = $operator->bitxor(new PySet([1, 2, 3, 4]) , new PySet([2, 3, 5]));
$_ = new PySet([1, 2]) >= new PySet([1, 2, 3]);
$_ = new PySet([1, 2]) <= new PySet([1, 2, 3]);
if ($some_var > 10) {
PyCore::print("some_var is totally bigger than 10.");
} else {
if ($some_var < 10) {
PyCore::print("some_var is smaller than 10.");
} else {
PyCore::print("some_var is indeed 10.");
}
}
$__iter = PyCore::iter(new PyList(["dog", "cat", "mouse"]));
while($current = PyCore::next($__iter)) {
$animal = $current;
PyCore::print(PyCore::str("{} is a mammal")->format($animal));
}
$__iter = PyCore::iter(PyCore::range(4));
while($current = PyCore::next($__iter)) {
$i = $current;
PyCore::print($i);
}
$animals = new PyList(["dog", "cat", "mouse"]);
$__iter = PyCore::iter(PyCore::enumerate($animals));
while($current = PyCore::next($__iter)) {
[$i, $value] = $current;
PyCore::print($i, $value);
}
$x = 0;
while($x < 4) {
PyCore::print($x);
$x += 1;
}
try {
throw $builtins->IndexError("This is an index error");
} catch(PyError $e) {
if (PyCore::isinstance($e, $builtins->IndexError)) {
throw $builtins->IndexError("This is an index error");
} elseif (PyCore::isinstance($e, new PyTuple([$builtins->TypeError, $builtins->NameError]))) {
throw $builtins->IndexError("This is an index error");
} else {
throw $e;
}
} finally {
PyCore::print("We can clean up resources here");
}
$f__object = PyCore::open("myfile.txt");
$f = $f__object->__enter__();
try {
$__iter = PyCore::iter($f);
while($current = PyCore::next($__iter)) {
$line = $current;
PyCore::print($line);
}
} finally {
$f__object->__exit__();
}
$contents = new PyDict([
"aa" => 12,
"bb" => 21,
]);
$file__object = PyCore::open("myfile1.txt", "w+");
$file = $file__object->__enter__();
try {
$file->write(PyCore::str($contents));
} finally {
$file__object->__exit__();
}
$file__object = PyCore::open("myfile2.txt", "w+");
$file = $file__object->__enter__();
try {
$file->write($json->dumps($contents));
} finally {
$file__object->__exit__();
}
$file__object = PyCore::open("myfile1.txt", "r+");
$file = $file__object->__enter__();
try {
$contents = $file->read();
} finally {
$file__object->__exit__();
}
PyCore::print($contents);
$file__object = PyCore::open("myfile2.txt", "r+");
$file = $file__object->__enter__();
try {
$contents = $json->load($file);
} finally {
$file__object->__exit__();
}
PyCore::print($contents);
$filled_dict = new PyDict([
"one" => 1,
"two" => 2,
"three" => 3,
]);
$our_iterable = $filled_dict->keys();
PyCore::print($our_iterable);
$__iter = PyCore::iter($our_iterable);
while($current = PyCore::next($__iter)) {
$i = $current;
PyCore::print($i);
}
$our_iterable->__getitem__(1);
$our_iterator = PyCore::iter($our_iterable);
PyCore::next($our_iterator);
PyCore::next($our_iterator);
PyCore::next($our_iterator);
PyCore::next($our_iterator);
$our_iterator = PyCore::iter($our_iterable);
$__iter = PyCore::iter($our_iterator);
while($current = PyCore::next($__iter)) {
$i = $current;
PyCore::print($i);
}
PyCore::list($our_iterable);
PyCore::list($our_iterator);
function add($x, $y) {
PyCore::print(PyCore::str("x is {} and y is {}")->format($x, $y));
return $x + $y;
}
add(5, 6);
add(y: 6, x: 5);
function varargs(...$args) {
return $args;
}
varargs(1, 2, 3);

@ -79,8 +79,8 @@ _ = 2 < 3 and 3 < 2 # => False
_ = 1 < 2 < 3 # => True
_ = 2 < 3 < 2 # => False
_ = a = [1, 2, 3, 4] # Point a at a new list, [1, 2, 3, 4]
_ = b = a # Point b at what a is pointing to
a = [1, 2, 3, 4] # Point a at a new list, [1, 2, 3, 4]
b = a # Point b at what a is pointing to
_ = b is a # => True, a and b refer to the same object
_ = b == a # => True, a's and b's objects are equal
_ = b = [1, 2, 3, 4] # Point b at a new list, [1, 2, 3, 4]

@ -277,7 +277,7 @@ class Translator
function parseSlice($slice, $op = 'Load')
{
if ($slice->_type != 'Constant') {
if ($slice->_type == 'Slice') {
$_args[] = $slice->lower ? $this->parseTarget($slice->lower) : 'null';
$_args[] = $slice->upper ? $this->parseTarget($slice->upper) : 'null';
$_args[] = $slice->step ? $this->parseTarget($slice->step) : 'null';

Loading…
Cancel
Save