Skip to content

Commit 3a0cb9a

Browse files
committed
Add :json_polyfill when required
1 parent 6de49c7 commit 3a0cb9a

4 files changed

Lines changed: 38 additions & 30 deletions

File tree

lib/classification.ex

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,16 @@ if ImageVision.bumblebee_configured?() do
156156
"""
157157
@spec classifier(configuration :: Keyword.t()) ::
158158
{Nx.Serving, Keyword.t()} | {:error, Image.error()}
159-
def classifier(classifier \\ Application.get_env(:image_vision, :classifier, [])) do
160-
classifier = Keyword.merge(@default_classifier, classifier)
159+
def classifier(configuration \\ Application.get_env(:image_vision, :classifier, [])) do
160+
configuration = Keyword.merge(@default_classifier, configuration)
161161

162-
model = Keyword.fetch!(classifier, :model)
163-
model_options = Keyword.fetch!(classifier, :model_options)
162+
model = Keyword.fetch!(configuration, :model)
163+
model_options = Keyword.fetch!(configuration, :model_options)
164164

165-
featurizer = Keyword.fetch!(classifier, :featurizer)
166-
featurizer_options = Keyword.fetch!(classifier, :featurizer_options)
165+
featurizer = Keyword.fetch!(configuration, :featurizer)
166+
featurizer_options = Keyword.fetch!(configuration, :featurizer_options)
167167

168-
batch_size = Keyword.fetch!(classifier, :batch_size)
168+
batch_size = Keyword.fetch!(configuration, :batch_size)
169169

170170
case Image.Classification.serving(
171171
model,
@@ -178,7 +178,7 @@ if ImageVision.bumblebee_configured?() do
178178
{:error, error}
179179

180180
serving ->
181-
{Nx.Serving, serving: serving, name: classifier[:name], batch_timeout: 100}
181+
{Nx.Serving, serving: serving, name: configuration[:name], batch_timeout: 100}
182182
end
183183
end
184184

@@ -222,16 +222,16 @@ if ImageVision.bumblebee_configured?() do
222222
"""
223223
@spec embedder(configuration :: Keyword.t()) ::
224224
{Nx.Serving, Keyword.t()} | {:error, Image.error()}
225-
def embedder(embedder \\ Application.get_env(:image_vision, :embedder, [])) do
226-
embedder = Keyword.merge(@default_embedder, embedder)
225+
def embedder(configuration \\ Application.get_env(:image_vision, :embedder, [])) do
226+
configuration = Keyword.merge(@default_embedder, configuration)
227227

228-
model = Keyword.fetch!(embedder, :model)
229-
model_options = Keyword.fetch!(embedder, :model_options)
228+
model = Keyword.fetch!(configuration, :model)
229+
model_options = Keyword.fetch!(configuration, :model_options)
230230

231-
featurizer = Keyword.fetch!(embedder, :featurizer)
232-
featurizer_options = Keyword.fetch!(embedder, :featurizer_options)
231+
featurizer = Keyword.fetch!(configuration, :featurizer)
232+
featurizer_options = Keyword.fetch!(configuration, :featurizer_options)
233233

234-
batch_size = Keyword.fetch!(embedder, :batch_size)
234+
batch_size = Keyword.fetch!(configuration, :batch_size)
235235

236236
case embedding_serving(
237237
model,
@@ -244,7 +244,7 @@ if ImageVision.bumblebee_configured?() do
244244
{:error, error}
245245

246246
serving ->
247-
{Nx.Serving, serving: serving, name: embedder[:name], batch_timeout: 100}
247+
{Nx.Serving, serving: serving, name: configuration[:name], batch_timeout: 100}
248248
end
249249
end
250250

lib/detection.ex

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,10 @@ if ImageVision.ortex_configured?() do
288288
# by `:min_score`, scale boxes back to the original image, and
289289
# return them sorted by descending score.
290290

291-
defp postprocess(logits, pred_boxes, scale_x, scale_y, opts) do
292-
original_width = Keyword.fetch!(opts, :original_width)
293-
original_height = Keyword.fetch!(opts, :original_height)
294-
min_score = Keyword.fetch!(opts, :min_score)
291+
defp postprocess(logits, pred_boxes, scale_x, scale_y, options) do
292+
original_width = Keyword.fetch!(options, :original_width)
293+
original_height = Keyword.fetch!(options, :original_height)
294+
min_score = Keyword.fetch!(options, :min_score)
295295

296296
scores =
297297
logits[0]
@@ -338,11 +338,11 @@ if ImageVision.ortex_configured?() do
338338
# pixel coordinates on the original image. Clips to image bounds
339339
# and returns nil if the result has zero area.
340340

341-
defp cxcywh_to_xywh(cx, cy, w, h, opts) do
342-
scale_x = Keyword.fetch!(opts, :scale_x)
343-
scale_y = Keyword.fetch!(opts, :scale_y)
344-
max_width = Keyword.fetch!(opts, :max_width)
345-
max_height = Keyword.fetch!(opts, :max_height)
341+
defp cxcywh_to_xywh(cx, cy, w, h, options) do
342+
scale_x = Keyword.fetch!(options, :scale_x)
343+
scale_y = Keyword.fetch!(options, :scale_y)
344+
max_width = Keyword.fetch!(options, :max_width)
345+
max_height = Keyword.fetch!(options, :max_height)
346346

347347
input_size = @input_size
348348

lib/segmentation.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -560,10 +560,10 @@ if ImageVision.ortex_configured?() do
560560
end
561561

562562
# Converts raw DETR-panoptic outputs into a list of segments.
563-
defp detr_postprocess(logits, pred_masks, id2label, opts) do
564-
min_score = Keyword.fetch!(opts, :min_score)
565-
orig_w = Keyword.fetch!(opts, :orig_w)
566-
orig_h = Keyword.fetch!(opts, :orig_h)
563+
defp detr_postprocess(logits, pred_masks, id2label, options) do
564+
min_score = Keyword.fetch!(options, :min_score)
565+
orig_w = Keyword.fetch!(options, :orig_w)
566+
orig_h = Keyword.fetch!(options, :orig_h)
567567

568568
# logits: [1, 100, 251] → numerically-stable softmax, pick top class per query
569569
query_logits = logits[0]

mix.exs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,15 @@ defmodule ImageVision.MixProject do
7171
# --- Tooling ---
7272
{:ex_doc, "~> 0.18", only: [:release, :dev, :docs]},
7373
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}
74-
]
74+
] ++ maybe_json_polyfill()
75+
end
76+
77+
defp maybe_json_polyfill do
78+
if Code.ensure_loaded?(:json) do
79+
[]
80+
else
81+
[{:json_polyfill, "~> 0.2 or ~> 1.0"}]
82+
end
7583
end
7684

7785
defp package do

0 commit comments

Comments
 (0)