Skip to content

Commit 096f7cc

Browse files
Add background removal example
1 parent 485c464 commit 096f7cc

23 files changed

Lines changed: 507 additions & 372 deletions

composer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
"pestphp/pest": "^2.31",
2929
"symfony/var-dumper": "^7.0"
3030
},
31+
"suggest": {
32+
"ext-imagick": "Needed if you want to use the Imagick Driver for image processing",
33+
"ext-gd": "Needed if you want to use the GD Driver for image processing"
34+
},
3135
"license": "Apache-2.0",
3236
"autoload": {
3337
"psr-4": {

examples/bootstrap.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
declare(strict_types=1);
44

55
use Codewithkyrian\Transformers\Transformers;
6+
use Codewithkyrian\Transformers\Utils\ImageDriver;
67

78
require_once './vendor/autoload.php';
89

910
Transformers::setup()
10-
// ->setImageDriver(\Codewithkyrian\Transformers\Utils\ImageDriver::GD)
11+
->setImageDriver(ImageDriver::IMAGICK)
1112
->apply();
1213

examples/images/woman-w-bag.jpeg

61.9 KB
Loading
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Codewithkyrian\Transformers\Models\Auto\AutoModel;
6+
use Codewithkyrian\Transformers\Processors\AutoProcessor;
7+
use Codewithkyrian\Transformers\Utils\Image;
8+
use function Codewithkyrian\Transformers\Utils\{memoryUsage, timeUsage};
9+
10+
require_once './bootstrap.php';
11+
12+
ini_set('memory_limit', '256M');
13+
14+
$modelConfig = ['model_type' => 'custom'];
15+
$processorConfig = [
16+
'do_normalize' => true,
17+
'do_pad' => false,
18+
'do_rescale' => true,
19+
'do_resize' => true,
20+
'image_mean' => [0.5, 0.5, 0.5],
21+
'feature_extractor_type' => "ImageFeatureExtractor",
22+
'image_std' => [1, 1, 1],
23+
'resample' => 2,
24+
'rescale_factor' => 0.00392156862745098,
25+
'size' => ['width' => 1024, 'height' => 1024],
26+
];
27+
28+
$model = AutoModel::fromPretrained(modelNameOrPath: 'briaai/RMBG-1.4', config: $modelConfig);
29+
$processor = AutoProcessor::fromPretrained(modelNameOrPath: 'briaai/RMBG-1.4', config: $processorConfig);
30+
31+
$url = __DIR__ . '/../images/woman-w-bag.jpeg';
32+
33+
$image = Image::read($url);
34+
35+
$fileName = pathinfo($url, PATHINFO_FILENAME);
36+
37+
['pixel_values' => $pixelValues] = $processor($image);
38+
39+
['output' => $output] = $model(['input' => $pixelValues]);
40+
41+
$mask = Image::fromTensor($output[0]->multiply(255))->resize($image->width(), $image->height());
42+
43+
$mask->save($fileName . '-mask.png');
44+
45+
$maskedImage = $image->applyMask($mask);
46+
47+
$maskedImage->save($fileName . '-masked.png');
48+
49+
dd('Done Processing!', timeUsage(), memoryUsage());
50+

examples/pipelines/asr.php

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
declare(strict_types=1);
44

5-
use Codewithkyrian\Transformers\Generation\Streamers\StdOutStreamer;
5+
use Codewithkyrian\Transformers\Generation\Streamers\TextStreamer;
6+
use Codewithkyrian\Transformers\Generation\Streamers\WhisperTextStreamer;
67
use function Codewithkyrian\Transformers\Pipelines\pipeline;
7-
use function Codewithkyrian\Transformers\Utils\memoryUsage;
8-
use function Codewithkyrian\Transformers\Utils\timeUsage;
8+
use function Codewithkyrian\Transformers\Utils\{memoryUsage, timeUsage};
99

1010
require_once './bootstrap.php';
1111

@@ -20,17 +20,21 @@
2020
$audioUrl = __DIR__ . '/../sounds/jfk.wav';
2121
//$audioUrl = __DIR__ . '/../sounds/preamble.wav';
2222
//$audioUrl = __DIR__ . '/../sounds/taunt.wav';
23-
$audioUrl = __DIR__ . '/../sounds/gettysburg.wav';
23+
//$audioUrl = __DIR__ . '/../sounds/gettysburg.wav';
2424
//$audioUrl = __DIR__ . '/../sounds/kyrian-speaking.wav';
25-
//$audioUrl = __DIR__ . '/../sounds/ted_60.wav';
25+
$audioUrl = __DIR__ . '/../sounds/ted_60.wav';
2626
//$audioUrl = __DIR__ . '/../sounds/french-audio.wav';
2727

28-
$streamer = StdOutStreamer::make();
28+
$streamer = WhisperTextStreamer::make()
29+
// ->onTimestampStart(fn($time) => print("$time: "))
30+
// ->onTimestampEnd(fn($time) => print("\n"))
31+
;
32+
2933
$output = $transcriber($audioUrl,
3034
maxNewTokens: 256,
3135
chunkLengthSecs: 24,
32-
// returnTimestamps: 'word',
33-
// streamer: $streamer
36+
// returnTimestamps: true,
37+
streamer: $streamer
3438
);
3539

36-
dd($output, timeUsage(), memoryUsage());
40+
//dd($output, timeUsage(), memoryUsage());

examples/pipelines/summarization.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
use Codewithkyrian\Transformers\Generation\Streamers\StdOutStreamer;
5+
use Codewithkyrian\Transformers\Generation\Streamers\TextStreamer;
66
use function Codewithkyrian\Transformers\Pipelines\pipeline;
77
use function Codewithkyrian\Transformers\Utils\{memoryUsage, timeUsage};
88

@@ -14,7 +14,7 @@
1414

1515
$summarizer = pipeline('summarization', 'Xenova/distilbart-cnn-6-6');
1616

17-
$streamer = StdOutStreamer::make();
17+
$streamer = TextStreamer::make();
1818

1919
$article = 'The tower is 324 metres (1,063 ft) tall, about the same height as an 81-storey building, ' .
2020
'and the tallest structure in Paris. Its base is square, measuring 125 metres (410 ft) on each side. ' .

examples/pipelines/text-generation.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
require_once './bootstrap.php';
66

77
use Codewithkyrian\Transformers\Generation\Streamers\StdOutStreamer;
8+
use Codewithkyrian\Transformers\Generation\Streamers\TextStreamer;
89
use function Codewithkyrian\Transformers\Pipelines\pipeline;
910
use function Codewithkyrian\Transformers\Utils\memoryUsage;
1011
use function Codewithkyrian\Transformers\Utils\timeUsage;
@@ -15,7 +16,7 @@
1516
//$generator = pipeline('text-generation', 'Xenova/Qwen1.5-0.5B-Chat');
1617
$generator = pipeline('text-generation', 'Xenova/TinyLlama-1.1B-Chat-v1.0');
1718

18-
$streamer = StdOutStreamer::make();
19+
$streamer = TextStreamer::make();
1920

2021
$messages = [
2122
['role' => 'system', 'content' => 'You are a helpful assistant.'],

examples/pipelines/text2text-generation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
require_once './bootstrap.php';
66

7-
use Codewithkyrian\Transformers\Generation\Streamers\StdOutStreamer;
7+
use Codewithkyrian\Transformers\Generation\Streamers\TextStreamer;
88
use function Codewithkyrian\Transformers\{Pipelines\pipeline, Utils\memoryUsage, Utils\timeUsage};
99

1010
ini_set('memory_limit', -1);
1111

1212
$generator = pipeline('text2text-generation', 'Xenova/LaMini-Flan-T5-783M');
1313
//$generator = pipeline('text2text-generation', 'Xenova/flan-t5-small', quantized: true);
1414

15-
$streamer = StdOutStreamer::make();
15+
$streamer = TextStreamer::make();
1616

1717
//$query = 'Please let me know your thoughts on the given place and why you think it deserves to be visited: \n" Barcelona, Spain"';
1818
//$query = 'How many continents are in the world? List them out';

examples/pipelines/translation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
require_once './bootstrap.php';
66

7-
use Codewithkyrian\Transformers\Generation\Streamers\StdOutStreamer;
7+
use Codewithkyrian\Transformers\Generation\Streamers\TextStreamer;
88
use function Codewithkyrian\Transformers\Pipelines\pipeline;
99
use function Codewithkyrian\Transformers\Utils\memoryUsage;
1010
use function Codewithkyrian\Transformers\Utils\timeUsage;
@@ -13,7 +13,7 @@
1313

1414
$translator = pipeline('translation', 'Xenova/m2m100_418M');
1515

16-
$streamer = StdOutStreamer::make();
16+
$streamer = TextStreamer::make();
1717

1818
$output = $translator('生活就像一盒巧克力。', streamer: $streamer, tgtLang: 'en');
1919
//$output = $translator('जीवन एक चॉकलेट बॉक्स की तरह है।', streamer: $streamer, tgtLang: 'fr');

0 commit comments

Comments
 (0)