The following tutorial is available on the Wallaroo Github Repository.
This notebook is used in conjunction with the Wallaroo Inference Server Free Edition for the Computer Vision resnet 50 machine learning model. This provides a free license for performing inferences through the Computer Vision Faster R-CNN machine learning model. For full demonstrations of this model, see Wallaroo Use Case Tutorials.
Note that GPU inference server require a VM with Nvidia GPU CUDA support.
The Faster R-CNN Model takes the following inputs.
Field | Type | Description |
---|---|---|
tensor | Float | Tensor in the shape (n, 3, 480, 640) float. This is the normalized pixel values of the 640x480 color image. |
Field | Type | Description |
---|---|---|
boxes | Variable length List[Float] | The bounding boxes of detected objects with each 4 number sequence representing (x_coordinate, y_coordinate, width, height). List length is 4*n where n is the number of detected objects. |
classes | Variable length List[Int] | Integer values representing the categorical classes that are predicted by the model. List length is n where n is the number of detected objects. |
confidences | Variable length List[Float] | The confidence of detected classes. List length is n where n is the number of detected objects. |
The following HTTPS API endpoints are available for Wallaroo Inference Server.
/pipelines
pipelines
with the following fields.Running
indicates the pipeline is available for inferences.The following demonstrates using curl
to retrieve the Pipelines endpoint. Replace the HOSTNAME with the address of your Wallaroo Inference Server.
!curl HOSTNAME:8080/pipelines
{"pipelines":[{"id":"frcnn","status":"Running"}]}
/models
models
with the following fields.sha
hash of the model.Running
indicates the models is available for inferences.The following demonstrates using curl
to retrieve the Models endpoint. Replace the HOSTNAME with the address of your Wallaroo Inference Server.
!curl HOSTNAME:8080/models
{"models":[{"name":"frcnn","sha":"ee606dc9776a1029420b3adf59b6d29395c89d1d9460d75045a1f2f152d288e7","status":"Running","version":"0762d591-7d31-4738-8394-2a148d00fbdc"}]}
Endpoint: HTTPS POST /pipelines/frcnn
Headers:
Content-Type: application/vnd.apache.arrow.file
: For Apache Arrow tables.Content-Type: application/json; format=pandas-records
: For pandas DataFrame in record format.Input Parameters: DataFrame in /pipelines/hf-summarizer-standard
OR Apache Arrow table in application/vnd.apache.arrow.file
with the following inputs:
tensor (Float Required): The tensor shape is a variable array in the shape (3, {picture width}, {picture height}) float of the the normalized pixel values of the 640x480 color image. For example, a 1x1 image renders:
[
{
"tensor": [
[
[
[0.9372549057]
],
[
[0.9372549057]
],
[
[0.8666666746]
]
]
]
}
]
The following code is used to convert an image into a 640x480 DataFrame with the appropriate shape for the model:
import cv2
import torch
import numpy as np
def imageResize(image, width, height):
im_pillow = np.array(image)
image = cv2.cvtColor(im_pillow, cv2.COLOR_RGB2BGR)
self.debug("Resizing to w:"+str(width) + " height:"+str(height))
image = cv2.resize(image, (width, height))
resizedImage = image.copy()
# convert the image from BGR to RGB channel ordering and change the
# image from channels last to channels first ordering
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = image.transpose((2, 0, 1))
# add the batch dimension, scale the raw pixel intensities to the
# range [0, 1], and convert the image to a floating point tensor
image = np.expand_dims(image, axis=0)
image = image / 255.0
tensor = torch.FloatTensor(image)
return tensor, resizedImage
Returns:
Content-Type: application/json; format=pandas-records
: pandas DataFrame in record format.null
if the input may be too long for a proper return.dim
field.[number of objects, 4]
.dim
field.[number of objects]
.dim
field.[number of objects]
.The following example performs an inference using the Apache Arrow table input ./data/image_224x224.arrow
from an image converted into a tensor
for inferencing.
!curl -X POST HOSTNAME:8080/pipelines/frcnn \
-H "Content-Type:application/vnd.apache.arrow.file" \
--data-binary @./data/test_table.arrow
[{"check_failures":[],"elapsed":[62382994,3894096061],"model_name":"frcnn","model_version":"0762d591-7d31-4738-8394-2a148d00fbdc","original_data":null,"outputs":[{"Float":{"data":[2.1511011123657227,193.98316955566406,76.26535034179688,475.4029846191406,610.822509765625,98.60633087158203,639.8867797851562,232.27053833007812,544.2866821289062,98.7265396118164,581.2883911132812,230.20494079589844,454.9934387207031,113.0856704711914,484.7846374511719,210.12820434570312,502.5888671875,331.87664794921875,551.2268676757812,476.4918212890625,538.5425415039062,292.1205139160156,587.4655151367188,468.1288146972656,578.5416870117188,99.70755767822266,617.2246704101562,233.57081604003906,548.552001953125,191.84564208984375,577.3058471679688,238.4773712158203,459.8332824707031,344.297119140625,505.42633056640625,456.7117919921875,483.4716796875,110.56584930419922,514.0936279296875,205.00155639648438,262.1221923828125,190.36659240722656,323.49029541015625,405.2057800292969,511.6675109863281,104.53833770751953,547.0171508789062,228.23663330078125,75.39196014404297,205.6231231689453,168.49893188476562,453.44085693359375,362.5065612792969,173.1685791015625,398.6695556640625,371.8243103027344,490.4246826171875,337.62701416015625,534.1234130859375,461.0242004394531,351.3855895996094,169.14898681640625,390.75830078125,244.0699005126953,525.1982421875,291.7389831542969,570.5552978515625,417.6438903808594,563.4224243164062,285.3888854980469,609.3085327148438,452.2594299316406,425.579345703125,366.2491455078125,480.6353454589844,474.5400085449219,154.53799438476562,198.03770446777344,227.64283752441406,439.8441162109375,597.0289306640625,273.6045837402344,637.2067260742188,439.0321350097656,473.88763427734375,293.419921875,519.7537231445312,349.23040771484375,262.7759704589844,192.0358123779297,313.3096008300781,258.3465881347656,521.1492919921875,152.8902587890625,534.859619140625,246.52365112304688,389.8963317871094,178.07867431640625,431.87554931640625,360.5932312011719,215.99900817871094,179.52967834472656,280.2846984863281,421.9092102050781,523.6453857421875,310.7387390136719,560.3648681640625,473.5797119140625,151.71310424804688,191.4107666015625,228.7101287841797,443.3218688964844,0.507830798625946,14.856098175048828,504.5198059082031,405.7276916503906,443.83685302734375,340.1248779296875,532.83740234375,475.77716064453125,472.37847900390625,329.13092041015625,494.0364685058594,352.5906066894531,572.41455078125,286.2613220214844,601.86767578125,384.58990478515625,532.7720947265625,189.8910369873047,551.902587890625,241.760498046875,564.0308837890625,105.75121307373047,597.0350952148438,225.32579040527344,551.2584838867188,287.16033935546875,590.9205932617188,405.7154846191406,70.46804809570312,0.39822694659233093,92.78654479980469,84.401123046875,349.4453430175781,3.618438959121704,392.6148376464844,98.43362426757812,64.40483856201172,215.1493377685547,104.09456634521484,436.5079650878906,615.121826171875,269.4668273925781,633.3085327148438,306.0345153808594,238.31851196289062,0.7395721673965454,290.289794921875,91.30622863769531,449.37347412109375,337.3955383300781,480.132080078125,369.35125732421875,74.95623016357422,191.84234619140625,164.2128448486328,457.0014343261719,391.9664611816406,6.255006790161133,429.2305603027344,100.72328186035156,597.4866333007812,276.6980895996094,618.0615234375,298.6277770996094,384.5116882324219,171.95826721191406,407.0126953125,205.28720092773438,341.5733947753906,179.80580139160156,365.8834533691406,208.57888793945312,555.0277709960938,288.626953125,582.6162109375,358.0912780761719,615.9203491210938,264.926513671875,632.3316040039062,280.25518798828125,297.9515380859375,0.5227981805801392,347.18743896484375,95.13105773925781,311.648681640625,203.67933654785156,369.6169128417969,392.58062744140625,163.1035614013672,0.0,227.6746826171875,86.4968490600586,68.51898956298828,1.870926022529602,161.25877380371094,82.89816284179688,593.6093139648438,103.26359558105469,617.1240234375,200.96546936035156,263.3114929199219,200.12203979492188,275.6990051269531,234.26516723632812,592.228515625,279.66064453125,619.7049560546875,379.147705078125,597.7548828125,269.654296875,618.5473022460938,286.25213623046875,478.0430603027344,204.3616485595703,530.0074462890625,239.35195922851562,501.34527587890625,289.280029296875,525.7659912109375,333.00262451171875,462.4776916503906,336.9205627441406,491.3201599121094,358.18914794921875,254.40383911132812,203.89566040039062,273.6617736816406,237.1314239501953,307.9604187011719,154.70947265625,440.4544982910156,386.8805847167969,195.53915405273438,187.13592529296875,367.65179443359375,404.9109802246094,77.52113342285156,2.93235182762146,160.15235900878906,81.59642028808594,577.6480102539062,283.400390625,601.4359130859375,307.4188537597656,516.6387329101562,129.7450408935547,540.4093627929688,242.17572021484375,543.2536010742188,253.3868865966797,631.3576049804688,466.62567138671875,271.13580322265625,45.97062683105469,640.0,456.8823547363281,568.7720336914062,188.66448974609375,595.8660278320312,235.05397033691406,400.99700927734375,169.88531494140625,419.3564453125,185.80076599121094,473.9580993652344,328.0773620605469,493.2315979003906,339.41436767578125,602.985107421875,376.3950500488281,633.742431640625,438.6175842285156,480.9596252441406,117.62994384765625,525.0882568359375,242.7487030029297,215.71177673339844,194.8744659423828,276.59906005859375,414.3832092285156,462.2966003417969,331.9463806152344,493.1417541503906,347.9764709472656,543.9497680664062,196.90623474121094,556.0431518554688,238.9914093017578,386.82049560546875,446.6134033203125,428.8106384277344,480.0000305175781,152.22515869140625,0.0,226.9856414794922,85.44817352294922,616.9181518554688,246.15548706054688,630.8656005859375,273.4844665527344,576.3336181640625,100.67465209960938,601.962890625,183.6100616455078,260.9930419921875,202.7347869873047,319.4052429199219,304.1719970703125,333.5813903808594,169.7592315673828,390.9659118652344,278.0940246582031,286.2676696777344,3.7005159854888916,319.3962097167969,88.7715835571289,532.5545043945312,209.36183166503906,552.5841674804688,240.0896453857422,572.9991455078125,207.65208435058594,595.6241455078125,235.4663543701172,6.274436950683594,0.5994095206260681,96.0499267578125,81.27410888671875,203.32298278808594,188.94265747070312,227.27435302734375,254.29417419433594,513.7689208984375,154.48574829101562,531.3786010742188,245.21615600585938,547.5381469726562,369.9145202636719,583.13916015625,470.3020935058594,316.64532470703125,252.806640625,336.654541015625,272.8283386230469,234.79965209960938,0.0003524780331645161,298.05706787109375,92.01449584960938,523.0662841796875,195.2969207763672,534.4849853515625,242.2367401123047,467.7620849609375,202.35621643066406,536.2362060546875,245.5334014892578,146.07208251953125,0.9752746820449829,178.93894958496094,83.21017456054688,18.780662536621094,1.0261597633361816,249.98724365234375,88.49466705322266,600.9063720703125,270.4198303222656,625.3632202148438,297.9408264160156,556.4094848632812,287.8470153808594,580.2647094726562,322.64727783203125,80.67057037353516,161.22784423828125,638.6259765625,480.0000305175781,455.983154296875,334.66290283203125,480.167236328125,349.97784423828125,613.990478515625,267.98065185546875,635.9580688476562,375.177490234375,345.7596435546875,2.459097385406494,395.9118347167969,99.68698120117188],"dim":[100,4],"v":1}},{"Int64":{"data":[44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,86,82,44,44,44,44,44,44,84,84,44,44,44,44,86,84,44,44,44,44,44,84,44,44,84,44,44,44,44,51,44,44,44,44,44,44,44,44,44,82,44,44,44,44,44,86,44,44,1,84,44,44,44,44,84,47,47,84,14,44,44,53,84,47,47,44,84,44,44,82,44,44,44],"dim":[100],"v":1}},{"Float":{"data":[0.9965357780456543,0.9883402585983276,0.9700246453285217,0.9696425795555115,0.9647804498672485,0.9603756666183472,0.9542890191078186,0.9467539191246033,0.946523904800415,0.9448496699333191,0.9361184239387512,0.9165345430374146,0.9133635759353638,0.8874814510345459,0.8440590500831604,0.8255265355110168,0.8232693076133728,0.8174006938934326,0.7956525087356567,0.7866907715797424,0.7731487154960632,0.7519370317459106,0.7360916137695312,0.7009188532829285,0.6932355165481567,0.650771975517273,0.6324360966682434,0.5787761807441711,0.5023477673530579,0.5016375780105591,0.44628554582595825,0.4280437231063843,0.4253791868686676,0.39086252450942993,0.3683646619319916,0.34732428193092346,0.32950618863105774,0.3105373680591583,0.290763258934021,0.28558316826820374,0.2668001651763916,0.26302841305732727,0.2544434070587158,0.2456863522529602,0.23536619544029236,0.2332199662923813,0.22612977027893066,0.22483190894126892,0.22332394123077393,0.2144296020269394,0.20122256875038147,0.1975485235452652,0.19439265131950378,0.1908392459154129,0.18713772296905518,0.17646068334579468,0.1662893146276474,0.16326230764389038,0.14825181663036346,0.13694529235363007,0.12920643389225006,0.1281532198190689,0.12235746532678604,0.12128996849060059,0.11628169566392899,0.11498632282018661,0.11184822022914886,0.110161192715168,0.10950638353824615,0.10391511023044586,0.10385661572217941,0.09757373481988907,0.09632062166929245,0.0955762192606926,0.09159914404153824,0.09062063694000244,0.08262358605861664,0.08223513513803482,0.07993929833173752,0.07989177107810974,0.0787586122751236,0.0782012939453125,0.07737930119037628,0.07690244168043137,0.07593464851379395,0.07503405958414078,0.07482589781284332,0.06898099929094315,0.0684114620089531,0.06764157116413116,0.06575051695108414,0.06490862369537354,0.061884183436632156,0.060101211071014404,0.05788714438676834,0.05717653036117554,0.05661648511886597,0.05601711571216583,0.054582688957452774,0.053669560700654984],"dim":[100],"v":1}}],"pipeline_name":"frcnn","shadow_data":{},"time":1696526041661}]