Package: vizdet
VizDeTVizualization for Detection and Tracking📦 PyPi🐍 Conda📖 Documentation🔧 CIVIZDET - VIZualization for DEtection and Tracking. This library provides a simple interface to plot detection bounding boxes and their labels on an image. It enables the use of custom fonts, allowing you to create visually pleasing detection plots.The purpose of this library is enable detection model creators to use an out-of-the-box library for presenting and visually evaluating their detection models, focusing their time on writing the detection models instead. Main features of vizdet are:Easy to use, enabling you to create detection plots with ease with minimal codeUse of custom fonts to make the plots look beautiful and write special unicode characters and characters from non-latin sciptsCustomizable graphical parameters - customize plots according to your tasteOut of the box options cover the main usecases for object detection, as well as (multi) object tracking - just plug in the detection/tracking results from your model, and you're ready to goLightweight, with the only dependency being OpenCV (and Numpy)Installation instructionsThis module requires the freetype OpenCV module, which is not included in the PyPI repository package, so
I recommend you install the package with conda (create aconda environment first):condainstallvizdet-cconda-forgeQuickstartLet's create our first detection plot. Downloadthis imageand place it in your working directory. Then, execute this script (you'll also need to install matplotlib to visualize the results)importcv2importmatplotlib.pyplotaspltfromvizdetimportBBoxes,InfoBox# Prepare our detection resultsboxes=[[6,74,156,266],[160,80,299,258],[283,83,469,262],[358,250,428,273],[0,221,48,254],[156,244,257,270],[272,205,319,252],[46,254,117,278],]labels=[1,1,1,0,0,0,0,0]probs=[0.997,0.995,0.997,0.975,0.976,0.993,0.993,0.992]classes=['rollerblade','person']# Create text for info boxinto_title='Number of objects'info_desc=[f'{labels.count(idx)}{cl}s'foridx,clinenumerate(classes)]# Read imageimg=cv2.imread('race.png')# Prepare objects to drawbboxes=BBoxes(labels_list=classes)infobox=InfoBox(width=150)# Draw detection results on the imagebboxes.draw(img,boxes,labels=labels,scores=probs)infobox.draw(img,(440,315),info_desc,into_title)# Plot resultsplt.imshow(img[::-1])The result should be equal to the image above. We drew the detection boxes, shown their labels and probabilities, as well as an information box given some information what is on the image.All the drawing is done by theBBoxesandInfoBoxclasses, which have a simple and intuitive interface. The default font (FiraGO) is used, but this could also be modified. Note that this looks much better than what you would get with the default OpenCV Hershey font.The result (img) is a simply numpy array - not some custom plot object that you would get with Matplotlib or similar libraries. This enables you to further customize the image using other tools, if you would like, or to compose multiple images into a video and so on. The possibilities are endless 😉LicenseThis source code of this project is released under the Apache 2.0 License, which is available in theLICENSEfile.The project also contains theFiraGOfont, which is distributed under the SIL Open Font License. Thetestdirectory also includes theFiraMonofont, also released under the SIL Open Font License. A copy of the Open Font License is included in theOFL.txtfile.ChangelogAll notable changes to this project will be documented in this file.The format is based onKeep a Changelog.[0.1.8] - 2021-07-26AddedPackage now available to install from conda[0.1.7] - 2021-05-18AddedBasic documentation on ReadTheDocs.[0.1.6] - 2021-05-15ChangedChange argument names forBBoxes:boxes_coords->bboxes,items_ids->idsandlabels_conf->scores.[0.1.5] - 2021-04-25FixedImprove type checking for integers to take into account numpy integers.[0.1.4] - 2021-04-24AddedThrow an error isboxeselements inbboxes_coordsare not integers.Explicitly allow numpy array as arguments toBBoxes.drawFixedImproved check forNonearguments inBBoxes.[0.1.3] - 2021-04-04ChangedChange default font sizes forInfoBox.[0.1.2] - 2021-04-03AddedTheBBoxes,InfoBox,LabelandFontclasses, that can draw bouding objects on the image using custom TrueType fonts.