← 开源
PINTO0309

PINTO_model_zoo

A repository for storing models that have been inter-converted between various frameworks. Supported frameworks are TensorFlow, PyTorch, ONNX, OpenVINO, TFJS, TFTRT, TensorFlowLite (Float32/16/INT8), EdgeTPU, CoreML.

ListsModel collectionsPython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
4.62k
Star
670
Fork
+4
本周
18
贡献者
创建于 2019-12-11 · 更新于 2026-10-07 · 今日第 6853 名
主要开发者
README

PINTO_model_zoo

CodeQL DOI Ask DeepWiki

Please read the contents of the LICENSE file located directly under each folder before using the model. My model conversion scripts are released under the MIT license, but the license of the source model itself is subject to the license of the provider repository.

Contributors

Made with contrib.rocks.

A repository for storing models that have been inter-converted between various frameworks. Supported frameworks are TensorFlow, PyTorch, ONNX, OpenVINO, TFJS, TFTRT, TensorFlowLite (Float32/16/INT8), EdgeTPU, CoreML.

TensorFlow Lite, OpenVINO, CoreML, TensorFlow.js, TF-TRT, MediaPipe, ONNX [.tflite, .h5, .pb, saved_model, tfjs, tftrt, mlmodel, .xml/.bin, .onnx]

I have been working on quantization of various models as a hobby, but I have skipped the work of making sample code to check the operation because it takes a lot of time. I welcome a pull request from volunteers to provide sample code. :smile:

[Note Jan 05, 2020] Currently, the MobileNetV3 backbone model and the Full Integer Quantization model do not return correctly.

[Note Jan 08, 2020] If you want the best performance with RaspberryPi4/3, install Ubuntu 19.10 aarch64 (64bit) instead of Raspbian armv7l (32bit). The official Tensorflow Lite is performance tuned for aarch64. On aarch64 OS, performance is about 4 times higher than on armv7l OS.

My article

List of pre-quantized models

* WQ = Weight Quantization ** OV = OpenVINO IR *** CM = CoreML **** DQ = Dynamic Range Quantization

1. Image Classification

No. Model Name Link FP32 FP16 INT8 DQ TPU WQ OV CM TFJS TF-TRT ONNX Remarks
004 Efficientnet ■■■ ⚫ ⚫ ⚫
010 Mobilenetv3 ■■■ ⚫ ⚫ ⚫
011 Mobilenetv2 ■■■ ⚫ ⚫ ⚫ ⚫
016 Efficientnet-lite ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
070 age-gender-recognition ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
083 Person_Reidentification ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 248,277,286,287,288,300
087 DeepSort ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
124 person-attributes-recognition-crossroad-0230 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
125 person-attributes-recognition-crossroad-0234 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
126 person-attributes-recognition-crossroad-0238 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
175 face-recognition-resnet100-arcface-onnx ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ RGB/BGR,112x112,[1,512]
187 vehicle-attributes-recognition-barrier-0039 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 72x72
188 vehicle-attributes-recognition-barrier-0042 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 72x72
191 anti-spoof-mn3 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 128x128
192 open-closed-eye-0001 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 32x32
194 face_recognizer_fast ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 112x112
195 person_reid_youtu ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 256x128, ReID
199 NSFW ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 224x224
244 FINNger ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 96x96
256 SFace ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 112x112
257 PiCANet ■■■ ⚫ ⚫ BDDA,SAGE/224x224
259 Emotion_FERPlus ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 64x64
290 AdaFace ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 112x112
317 MobileOne ■■■ ⚫ 224x224
346 facial_expression_recognition_mobilefacenet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 112x112
379 PP-LCNetV2 ■■■ ⚫ ⚫ ⚫ 224x224
429 OSNet ■■■ ⚫ 256x128, ReID
430 FastReID ■■■ ⚫ 384x128, ReID
431 NITEC ■■■ ⚫ 224x224, Gaze Estimation
432 face-reidentification-retail-0095 ■■■ ⚫ ⚫ ⚫ 128x128, FaceReID
451 DAN ■■■ ⚫ 224x224, Facial Expression
452 FairFace ■■■ ⚫ 224x224, Face Attribute
453 FairDAN ■■■ ⚫ 224x224, Face Attribute + Facial Expression
462 Gaze-LLE ■■■ ⚫ 448x448, Attention
474 Gaze-LLE-DINOv3 ■■■ ⚫ 640x640,416x416,320x320, Attention
475 VSDLM ■■■ ⚫ 30x48, Lip motion
476 OCEC ■■■ ⚫ 24x40, Wink/Blink
477 PGC ■■■ ⚫ 32x32, Pointing
478 SC ■■■ ⚫ 32x24, Sitting
479 PUC ■■■ ⚫ 32x24, Phone Usage Classifier
480 HSC ■■■ ⚫ 48x48, Happy smile classifier
481 WHC ■■■ ⚫ 4x32x32,6x32x32,8x32x32, Waving Hand Classification
483 LVFace ■■■ ⚫ Nx3x112x112, Cosine similarity
484 TransFace ■■■ ⚫ Nx3x112x112, Cosine similarity
486 MWC ■■■ ⚫ Nx3x48x48, Mask wearing classifier
489 Glasses-Detector ■■■ ⚫ Glasses
491 SGC ■■■ ⚫ Sunglasses
492 HHC ■■■ ⚫ Hat
494 BPC ■■■ ⚫ Background Plain classification
495 Comprehensive-Head-Classification ■■■ ⚫ ⚫ Comprehensive head classification
497 PPC ■■■ ⚫ Binary classification to determine whether the subject is holding a smartphone
502 PersonViT ■■■ ⚫ Person Re-Identification
503 CDNet ■■■ ⚫ Person Re-Identification

2. 2D Object Detection

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
002 Mobilenetv3-SSD ■■■ ⚫ ⚫ ⚫ ⚫
006 Mobilenetv2-SSDlite ■■■ ⚫ ⚫ ⚫ ⚫
008 Mask_RCNN_Inceptionv2 ■■■ ⚫ ⚫ ⚫
018 EfficientDet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
023 Yolov3-nano ■■■ ⚫ ⚫ ⚫ ⚫
024 Yolov3-lite ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
031 Yolov4 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
034 SSD_Mobilenetv2_mnasfpn ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
038 SSDlite_MobileDet_edgetpu ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
039 SSDlite_MobileDet_cpu ■■■ ⚫ ⚫ ⚫ ⚫
042 Centernet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
045 SSD_Mobilenetv2_oid_v4 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
046 Yolov4-tiny ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
047 SpineNetMB_49 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ Mobile RetinaNet
051 East_Text_Detection ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
054 KNIFT ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
056 TextBoxes++ with dense blocks, separable convolution and Focal Loss ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
058 keras-retinanet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ resnet50_coco_best_v2.1.0.h5,320x320
072 NanoDet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ issue #274
073 RetinaNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
074 Yolact ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
085 Yolact_Edge ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 21/10/05 new MobileNetV2(550x550)
089 DETR ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ 256x256
103 EfficientDet_lite ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ lite0,lite1,lite2,lite3,lite4
116 DroNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DroNet,DroNetV3
123 YOLOR ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ssss_s2d/320x320,640x640,960x960,1280x1280
132 YOLOX ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ nano,tiny,s,m,l,x/256x320,320x320,416x416,480x640,544x960,736x1280,1088x1920
143 RAPiD ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Fisheye, cepdof/habbof/mw_r, 608x608/1024x1024
145 text_detection_db ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 480x640
151 object_detection_mobile_object_localizer ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 192x192
169 spaghettinet_edgetpu ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 320x320,S/M/L
174 PP-PicoDet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ S/M/L,320x320/416x416/640x640
178 vehicle-detection-0200 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 256x256,PriorBoxClustered->ndarray(0.npy)
179 person-detection-0202 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 512x512,PriorBoxClustered->ndarray(0.npy)
183 pedestrian-detection-adas-0002 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 384x672,PriorBox->ndarray(0.npy)
184 pedestrian-and-vehicle-detector-adas-0001 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 384x672,PriorBox->ndarray(0.npy)
185 person-vehicle-bike-detection-crossroad-0078 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 1024x1024,PriorBoxClustered->ndarray(0.npy)
186 person-vehicle-bike-detection-crossroad-1016 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 512x512,PriorBoxClustered->ndarray(0.npy)
189 vehicle-license-plate-detection-barrier-0106 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 300x300,PriorBoxClustered->ndarray(0.npy)
190 person-detection-asl-0001 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 320x320
197 yolact-resnet50-fpn ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ RGB,550x550
198 YOLOF ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ BGR/RGB,608x608
221 YOLACT-PyTorch ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 180x320,240x320,320x480,480x640,544x544,720x1280
226 CascadeTableNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ General,320x320 only
262 ByteTrack ■■■ ⚫ YOLOX/nano,tiny,s,m,l,x,mot17,ablation/128x320,192x320,192x448,192x640,256x320,256x448,256x640,384x640,512x1280,736x1280
264 object_localization_network ■■■ ⚫ 180x320,240x320,270x480,360x480,360x480,360x640,480x640,720x1280
307 YOLOv7 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ YOLOv7,YOLOv7-tiny
308 FastestDet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 180x320,256x320,320x480,352x352,352x640,480x640,736x1280
329 YOLOX-PAI ■■■ ⚫
332 CrowdDet ■■■ ⚫
334 DAMO-YOLO ■■■ ⚫
336 PP-YOLOE-Plus ■■■ ⚫
337 FreeYOLO ■■■ ⚫
341 YOLOv6 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
356 EdgeYOLO ■■■ ⚫
376 RT-DETR ■■■ ⚫ ResNet50,ResNet101,HgNetv2-L,HgNetv2-X
386 naruto_handsign_detection ■■■ ⚫ ⚫ ⚫ ⚫ ⚫
422 Gold-YOLO-Head-Hand ■■■ ⚫ Head,Hand
424 Gold-YOLO-Body ■■■ ⚫ Body
425 Gold-YOLO-Body-Head-Hand ■■■ ⚫ Body,Head,Hand
426 YOLOX-Body-Head-Hand ■■■ ⚫ ⚫ ⚫ ⚫ Body,Head,Hand, tflite float16 XNNPACK boost (ARMv8.2)
434 YOLOX-Body-Head-Hand-Face ■■■ ⚫ Body,Head,Hand,Face
441 YOLOX-Body-Head-Hand-Face-Dist ■■■ ⚫ Body,Head,Hand,Face,Complex Distorted
442 YOLOX-Body-Head-Face-HandLR-Dist ■■■ ⚫ Body,Head,Hands,Left-Hand,Right-Hand,Face,Complex Distorted
444 YOLOX-Foot-Dist ■■■ ⚫ Foot,Complex Distorted
445 YOLOX-Body-Head-Face-HandLR-Foot-Dist ■■■ ⚫ Body,Head,Face,Hands,Left-Hand,Right-Hand,Foot,Complex Distorted
446 YOLOX-Body-With-Wheelchair ■■■ ⚫ Body with WheelChair
447 YOLOX-Wholebody-with-Wheelchair ■■■ ⚫ Wholebody with WheelChair
448 YOLOX-Eye-Nose-Mouth-Ear ■■■ ⚫
449 YOLOX-WholeBody12 ■■■ ⚫ Body,BodyWithWheelchair,Head,Face,Eye,Nose,Mouth,Ear,Hand,Hand-Left,Hand-Right,Foot
450 YOLOv9-Wholebody-with-Wheelchair ■■■ ⚫ Wholebody with WheelChair
454 YOLOv9-Wholebody13 ■■■ ⚫ Body,BodyWithWheelchair,BodyWithCrutches,Head,Face,Eye,Nose,Mouth,Ear,Hand,Hand-Left,Hand-Right,Foot
455 YOLOv9-Gender ■■■ ⚫ Body,Male,Female
456 YOLOv9-Wholebody15 ■■■ ⚫ Body,Male,Female,BodyWithWheelchair,BodyWithCrutches,Head,Face,Eye,Nose,Mouth,Ear,Hand,Hand-Left,Hand-Right,Foot
457 YOLOv9-Wholebody17 ■■■ ⚫ Body,Male,Adult,Child,Female,BodyWithWheelchair,BodyWithCrutches,Head,Face,Eye,Nose,Mouth,Ear,Hand,Hand-Left,Hand-Right,Foot
458 YOLOv9-Discrete-HeadPose-Yaw ■■■ ⚫ Head,Front,Right-Front,Right-Side,Right-Back,Back,Left-Back,Left-Side,Left-Front
459 YOLOv9-Wholebody25 ■■■ ⚫ Body,Adult,Child,Male,Female,Body_with_Wheelchair,Body_with_Crutches,Head,Front,Right_Front,Right_Side,Right_Back,Back,Left_Back,Left_Side,Left_Front,Face,Eye,Nose,Mouth,Ear,Hand,Hand_Left,Hand_Right,Foot
460 RT-DETRv2-Wholebody25 ■■■ ⚫ Body,Adult,Child,Male,Female,Body_with_Wheelchair,Body_with_Crutches,Head,Front,Right_Front,Right_Side,Right_Back,Back,Left_Back,Left_Side,Left_Front,Face,Eye,Nose,Mouth,Ear,Hand,Hand_Left,Hand_Right,Foot
461 YOLOv9-Phone ■■■ ⚫ Phone
463 YOLOv9-Shoulder-Elbow-Knee ■■■ ⚫ Shoulder,Elbow,Knee
464 YOLOv9-Wholebody28 ■■■ ⚫ Body,Adult,Child,Male,Female,Body_with_Wheelchair,Body_with_Crutches,Head,Front,Right_Front,Right_Side,Right_Back,Back,Left_Back,Left_Side,Left_Front,Face,Eye,Nose,Mouth,Ear,Shoulder,Elbow,Hand,Hand_Left,Hand_Right,Knee,Foot
465 DEIM-Wholebody28 ■■■ ⚫ Body,Adult,Child,Male,Female,Body_with_Wheelchair,Body_with_Crutches,Head,Front,Right_Front,Right_Side,Right_Back,Back,Left_Back,Left_Side,Left_Front,Face,Eye,Nose,Mouth,Ear,Shoulder,Elbow,Hand,Hand_Left,Hand_Right,Knee,Foot
468 YOLOv9-Wholebody28-Refine ■■■ ⚫ Body,Adult,Child,Male,Female,Body_with_Wheelchair,Body_with_Crutches,Head,Front,Right_Front,Right_Side,Right_Back,Back,Left_Back,Left_Side,Left_Front,Face,Eye,Nose,Mouth,Ear,Shoulder,Elbow,Hand,Hand_Left,Hand_Right,Knee,Foot
471 YOLO-Wholebody34 ■■■ ⚫ body,adult,child,male,female,body_with_wheelchair,body_with_crutches,head,front,right-front,right-side,right-back,back,left-back,left-side,left-front,face,eye,nose,mouth,ear,collarbone,shoulder,solar_plexus,elbow,wrist,hand,hand_left,hand_right,abdomen,hip_joint,knee,ankle,foot
472 DEIMv2-Wholebody34 ■■■ ⚫ body,adult,child,male,female,body_with_wheelchair,body_with_crutches,head,front,right-front,right-side,right-back,back,left-back,left-side,left-front,face,eye,nose,mouth,ear,collarbone,shoulder,solar_plexus,elbow,wrist,hand,hand_left,hand_right,abdomen,hip_joint,knee,ankle,foot
473 HISDF ■■■ ⚫ Object Detection x Depth Estimation x Pose Estimation x Instance Segmentation x Binary Segmentation
482 UHD ■■■ ⚫ 64x64, Object Detection, Human Detection
485 DEIMv2-Wholebody40 ■■■ ⚫ 40 classes
489 489_Glasses-Detector ■■■ ⚫ glasses

3. 3D Object Detection

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
036 Objectron ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe/camera,chair,chair_1stage,cup,sneakers,sneakers_1stage,ssd_mobilenetv2_oidv4_fp16
063 3D BoundingBox estimation for autonomous driving ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ YouTube
107 SFA3D ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
263 EgoNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
321 DID-M3D ■■■ ⚫
363 YOLO-6D-Pose ■■■ ⚫ ⚫ ⚫ Texas Instruments ver, PINTO Special ver

4. 2D/3D Face Detection

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
025 Head_Pose_Estimation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
030 BlazeFace ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
032 FaceMesh ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
040 DSFD_vgg ■■■ ⚫ ⚫ ⚫
041 DBFace ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MobileNetV2/V3, 320x320,480x640,640x960,800x1280
043 Face_Landmark ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
049 Iris_Landmark ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
095 CenterFace ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
096 RetinaFace ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
106 WHENet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Real-time Fine-Grained Estimation for Wide Range Head Pose
129 SCRFD ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ All types
134 head-pose-estimation-adas-0001 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 60x60
144 YuNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 120x160
227 face-detection-adas-0001 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 384x672,PriorBox->ndarray(0.npy)
250 Face-Mask-Detection ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ PriorBox->ndarray(0.npy)
282 face_landmark_with_attention ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe,192x192
289 face-detection-0100 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 256x256,PriorBoxClustered->ndarray(0.npy)
293 Lightweight-Head-Pose-Estimation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ HeadPose, 224x224
300 6DRepNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 6D HeadPose, 224x224
301 YOLOv4_Face ■■■ ⚫ 480x640
302 SLPT ■■■ ⚫ decoder=6/12,256x256
303 FAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Face Alignment,128x128/256x256
304 SynergyNet ■■■ ⚫ 6D HeadPose,224x224
305 DMHead ■■■ ⚫ 6D HeadPose,Multi-Model-Fused,224x224,PINTO's custom models
311 HHP-Net ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 6D HeadPose,No-LICENSE
319 ACR-Loss ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Face Alignment
322 YOLOv7_Head ■■■ ⚫ PINTO's custom models
383 DirectMHP ■■■ ⚫ ⚫ ⚫
387 YuNetV2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ 640x640
390 BlendshapeV2 ■■■ ⚫ ⚫ ⚫ 1x146x2,Nx146x2,MediaPipe
399 RetinaFace_MobileNetv2 ■■■ ⚫
410 FaceMeshV2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
414 STAR ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
421 Gold-YOLO-Head ■■■ ⚫ Head (not Face)
423 6DRepNet360 ■■■ ⚫ 6D HeadPose, FullRange, 224x224
433 FaceBoxes.PyTorch ■■■ ⚫ 2D Face
435 MobileFaceNet ■■■ ⚫ Face Alignment,112x112
436 Peppa_Pig_Face_Landmark ■■■ ⚫ Face Alignment,128x128,256x256
437 PIPNet ■■■ ⚫ Face Alignment,256x256
443 Opal23_HeadPose ■■■ ⚫ 6D HeadPose, FullRange, 128x128
504 HRFFA ■■■ ⚫ Face Alignment
505 YawNet ■■■ ⚫ Head Pose Estimation

5. 2D/3D Hand Detection

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
027 Minimal-Hand ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
033 Hand_Detection_and_Tracking ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
094 hand_recrop ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
403 trt_pose_hand ■■■ ⚫ 2D
420 Gold-YOLO-Hand ■■■ ⚫ 2D
438 PeCLR ■■■ ⚫ 2D+3D

6. 2D/3D Human/Animal Pose Estimation

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
003 Posenet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
007 Mobilenetv2_Pose_Estimation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
029 Human_Pose_Estimation_3D ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ RGB,180x320,240x320,360x640,480x640,720x1280
053 BlazePose ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe
065 ThreeDPoseUnityBarracuda ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ YouTube
080 tf_pose_estimation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
084 EfficientPose ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ SinglePose
088 Mobilenetv3_Pose_Estimation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
115 MoveNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ lightning,thunder
137 MoveNet_MultiPose ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ lightning,192x192,192x256,256x256,256x320,320x320,480x640,720x1280,1280x1920
156 MobileHumanPose ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 3D
157 3DMPPE_POSENET ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 3D,192x192/256x256/320x320/416x416/480x640/512x512
265 PoseAug ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 2D->3D/GCN,MLP,STGCN,VideoPose/Nx16x2
268 Lite-HRNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ COCO,MPII/Top-Down
269 Higher-HRNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 192x320,256x320,320x480,384x640,480x640,512x512,576x960,736x1280/Bottom-Up
271 HRNet ■■■ ⚫ COCO,MPII/Top-Down
333 E2Pose ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ COCO/CrowdPose,End-to-End
350 P-STMO ■■■ ⚫ 2D->3D,in_the_wild
355 MHFormer ■■■ ⚫ ⚫ ⚫ 2D->3D
365 HTNet ■■■ ⚫ ⚫ ⚫ 2D->3D
392 STCFormer ■■■ ⚫ ⚫ ⚫ 2D->3D
393 RTMPose_WholeBody ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ 2D
394 RTMPose_Animal ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ 2D
402 trt_pose ■■■ ⚫ 2D
412 pytorch_cpn ■■■ ⚫ ⚫ ⚫ 2D
427 RTMPose_Hand ■■■ ⚫ 2D
440 ViTPose ■■■ ⚫ 2D

7. Depth Estimation from Monocular/Stereo Images

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
009 Multi-Scale Local Planar Guidance for Monocular Depth Estimation ■■■ ⚫
014 tf-monodepth2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
028 struct2depth ■■■ ⚫ ⚫ ⚫ ⚫
064 Dense Depth ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
066 Footprints ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
067 MiDaS ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
081 MiDaS v2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
135 CoEx ■■■ ⚫ ⚫ WIP, onnx/OpenVINO only
142 HITNET ■■■ ⚫ ⚫ ⚫ ⚫ WIP issue1,issue2,flyingthings_finalpass_xl/eth3d/middlebury_d400,120x160/240x320/256x256/480x640/720x1280
146 FastDepth ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 128x160,224x224,256x256,256x320,320x320,480x640,512x512,768x1280
147 PackNet-SfM ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ddad/kitti,Convert all ResNet18 backbones only
148 LapDepth ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ kitti/nyu,192x320/256x320/368x640/480x640/720x1280
149 depth_estimation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ nyu,180x320/240x320/360x640/480x640/720x1280
150 MobileStereoNet ■■■ WIP. Conversion script only.
153 MegaDepth ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 192x256,384x512
158 HR-Depth ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
159 EPCDepth ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
160 msg_chn_wacv20 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 192x320,240x320,256x256,352x480,368x480,368x640,480x640,720x1280,1280x1920
162 PyDNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
164 MADNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Real-time-self-adaptive-deep-stereo (perform only inference mode, no-backprop, kitti)
165 RealtimeStereo ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 180x320,216x384,240x320,270x480,360x480,360x640,480x640,720x1280
166 Insta-DM ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 192x320,256x320,256x832,384x640,480x640,736x1280
167 DPT ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ dpt-hybrid,480x640,ViT,ONNX 96x128/256x320/384x480/480x640
173 MVDepthNet ■■■ ⚫ ⚫ 256x320
202 stereoDNN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ NVSmall_321x1025,NVTiny_161x513,ResNet18_321x1025,ResNet18_2d_257x513
203 SRHNet ■■■ ⚫ finetune2_kitti/sceneflow,maxdisp192,320x480/480x640
210 SC_Depth_pl ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ kitti/nyu,320x320,320x480,480x640,640x800
211 Lac-GwcNet ■■■ ⚫ kitti,240x320,320x480,480x640,720x1280
219 StereoNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Left/180x320,240x320,320x480,360x640,480x640
235 W-Stereo-Disp ■■■ ⚫ Kitti,Sceneflow/320x480,384x576,480x640
236 A-TVSNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ Stereo only/192x320,256x320,320x480,480x640
239 CasStereoNet ■■■ ⚫ Stereo KITTI only/256x320,384x480,480x640,736x1280
245 GLPDepth ■■■ ⚫ ⚫ Kitti,NYU/192x320,320x480,384x640,480x640,736x1280,non-commercial use only
258 TinyHITNet ■■■ ⚫ ⚫ 180x320,240x320,300x400,360x640,384x512,480x640,720x960,720x1280
266 ACVNet ■■■ ⚫ ⚫ sceneflow,kitti/240x320,320x480,384x640,480x640,544x960,720x1280
280 GASDA ■■■ ⚫ No-LICENSE
284 CREStereo ■■■ ⚫ ITER2,ITER5,ITER10,ITER20/240x320,320x480,360x640,480x640,480x640,720x1280
292 Graft-PSMNet ■■■ ⚫ 192x320,240x320,320x480,368x640,480x640,720x1280
294 FSRE-Depth ■■■ ⚫ ⚫ 192x320,256x320,320x480,368x640,480x640,736x1280
296 MGNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 240x320,360x480,360x640,360x1280,480x640,720x1280
312 NeWCRFs ■■■ ⚫ 384x384,384x576,384x768,384x960,576x768,768x1344
313 PyDNet2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Mono-Depth
327 EMDC ■■■ ⚫ RGB+SarseDepth
338 Fast-ACVNet ■■■ ⚫ Stereo/grid_sample opset=16,no_grid_sample opset=11
358 CGI-Stereo ■■■ ⚫ ⚫ ⚫ Stereo
362 ZoeDepth ■■■ ⚫ Mono-Depth
364 IGEV ■■■ ⚫ Stereo
371 Lite-Mono ■■■ ⚫ Mono
384 TCMonoDepth ■■■ ⚫ Mono
397 MiDaSv3.1 ■■■ ⚫ Mono
415 High-frequency-Stereo-Matching-Network ■■■ ⚫ Stereo
439 Depth-Anything ■■■ ⚫ Mono

8. Semantic Segmentation

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
001 deeplabv3 ■■■ ⚫ ⚫
015 Faster-Grad-CAM ■■■ ⚫ ⚫ ⚫
020 EdgeTPU-Deeplab ■■■ ⚫ ⚫ ⚫ ⚫
021 EdgeTPU-Deeplab-slim ■■■ ⚫ ⚫ ⚫ ⚫
026 Mobile-Deeplabv3-plus ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
035 BodyPix ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe,MobileNet0.50/0.75/1.00,ResNet50
057 BiSeNetV2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
060 Hair Segmentation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ WIP,MediaPipe
061 U^2-Net ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
069 ENet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Cityscapes,512x1024
075 ERFNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Cityscapes,256x512,384x786,512x1024
078 MODNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 128x128,192x192,256x256,512x512
082 MediaPipe_Meet_Segmentation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ MediaPipe,128x128,144x256,96x160
104 DeeplabV3-plus ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ cityscapes,200x400,400x800,800x1600
109 Selfie_Segmentation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 256x256
136 road-segmentation-adas-0001 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
138 BackgroundMattingV2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ 720x1280,2160x4096
181 models_edgetpu_checkpoint_and_tflite_vision_segmentation-edgetpu_tflite_default_argmax ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
182 models_edgetpu_checkpoint_and_tflite_vision_segmentation-edgetpu_tflite_fused_argmax ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
196 human_segmentation_pphumanseg ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
201 CityscapesSOTA ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 180x320,240x320,360x640,480x640,720x1280
206 Matting ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ PaddleSeg/modnet_mobilenetv2,modnet_hrnet_w18,modnet_resnet50_vd/256x256,384x384,512x512,640x640
228 Fast-SCNN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 192x384,384x384,384x576,576x576,576x768,768x1344
238 SUIM-Net ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ RSB,VGG/240x320,256x320,320x480,360x640,384x480,384x640,480x640,720x1280
242 RobustVideoMatting ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Mbnv3,ResNet50/192x320,240x320,320x480,384x640,480x640,720x1280,1088x1920,2160x3840
246 SqueezeSegV3 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 21,53/180x320,240x320,320x480,360x640,480x640,720x1280
267 LIOT ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 180x320,240x320,320x480,360x640,480x640,540x960,720x1280,1080x1920
287 Topformer ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Tiny,Small,Base/448x448,512x512
295 SparseInst ■■■ ⚫ ⚫ r50_giam_aug/192x384,384x384,384x576,384x768,576x576,576x768,768x1344
299 DGNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
313 IS-Net ■■■ ⚫ 180x320,240x320,320x480,360x640,480x640,720x1280,1080x1920,1080x2048,2160x4096,N-batch,Dynamic-HeightxWidth
335 PIDNet ■■■ ⚫ Cityscapes,CamVid/Dynamic-HeightxWidth
343 PP-MattingV2 ■■■ ⚫ ⚫ ⚫ HumanSeg
347 RGBX_Semantic_Segmentation ■■■ ⚫
369 Segment_Anything ■■■ ⚫
380 Skin-Clothes-Hair-Segmentation-using-SMP ■■■ ⚫ ⚫ ⚫
391 MagicTouch ■■■ ⚫ ⚫ ⚫ ⚫ MediaPipe
405 Ear_Segmentation ■■■ ⚫ Ear
417 PopNet ■■■ ⚫ Saliency
466 People_Segmentation ■■■ ⚫ UNet
467 Human_Parsing ■■■ ⚫
470 RHIS ■■■ ⚫ UNet+UNet
489 489_Glasses-Detector ■■■ ⚫ glasses

9. Anomaly Detection

No. Model Name Link FP32 FP16 INT8 TPU WQ OV CM TFJS TF-TRT ONNX Remarks
005 One_Class_Anomaly_Detection ■■■ ⚫ ⚫ ⚫ ⚫
099 Efficientnet_Anomaly_Detection_Segmentation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫

10. Artistic

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
017 Artistic-Style-Transfer ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
019 White-box-Cartoonization ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
037 First_Neural_Style_Transfer ■■■ ⚫ ⚫ ⚫
044 Selfie2Anime ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
050 AnimeGANv2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
062 Facial Cartoonization ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
068 Colorful_Image_Colorization ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ experimental
101 arbitrary_image_stylization ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ magenta
113 Anime2Sketch ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
161 EigenGAN-Tensorflow ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Anime,CelebA
193 CoCosNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ RGB,256x256

11. Super Resolution

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
012 Fast_Accurate_and_Lightweight_Super-Resolution ■■■ ⚫ ⚫ ⚫
022 Learning_to_See_Moving_Objects_in_the_Dark ■■■ ⚫ ⚫ ⚫ ⚫
071 Noise2Noise ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ srresnet/clear only
076 Deep_White_Balance ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
077 ESRGAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 50x50->x4, 100x100->x4
079 MIRNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/40x40,80x80,120x120,120x160,120x320,120x480,120x640,120x1280,180x480,180x640,180x1280,180x320,240x320,240x480,360x480,360x640,480x640,720x1280
086 Defocus Deblurring Using Dual-Pixel ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
090 Ghost-free_Shadow_Removal ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 256x256
111 SRN-Deblur ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 240x320,480x640,720x1280,1024x1280
112 DeblurGANv2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ inception/mobilenetv2:256x256,320x320,480x640,736x1280,1024x1280
114 Two-branch-dehazing ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 240x320,480x640,720x1280
133 Real-ESRGAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 16x16,32x32,64x64,128x128,240x320,256x256,320x320,480x640
152 DeepLPF ■■■ ⚫ ⚫ ⚫ ⚫ ⚫
170 Learning-to-See-in-the-Dark ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ sony/fuji, 240x320,360x480,360x640,480x640
171 Fast-SRGAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 120x160,128x128,240x320,256x256,480x640,512x512
172 Real-Time-Super-Resolution ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 64x64,96x96,128x128,256x256,240x320,480x640
176 StableLLVE ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image/Video Enhancement,180x240,240x320,360x640,480x640,720x1280
200 AGLLNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image/Video Enhancement,256x256,256x384,384x512,512x640,768x768,768x1280
204 HINet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeBlur,DeNoise,DeRain/256x320,320x480,480x640
205 MBLLEN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image/Video Enhancement,180x320,240x320,360x640,480x640,720x1280
207 GLADNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image/Video Enhancement,180x320,240x320,360x640,480x640,720x1280,No-LICENSE
208 SAPNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeRain,180x320,240x320,360x640,480x640,720x1280
209 MSBDN-DFF ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Dehazing,192x320,240x320,320x480,384x640,480x640,720x1280,No-LICENSE
212 GFN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeBlur+SuperResolution,x4/64x64,96x96,128x128,192x192,240x320,256x256,480x640,720x1280
213 TBEFN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,320x480,360x640,480x640,720x1280
214 EnlightenGAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/192x320,240x320,320x480,368x640,480x640,720x1280
215 AOD-Net ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeHazing/180x320,240x320,320x480,360x640,480x640,720x1280
216 Zero-DCE-TF ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,320x480,360x640,480x640,720x1280
217 RUAS ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,320x480,360x640,480x640,720x1280,No-LICENSE
218 DSLR ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/256x256,256x384,256x512,384x640,512x640,768x1280
220 HEP ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,320x480,360x640,480x640
222 LFT ■■■ ⚫ Transformer/2x,4x/65x65
223 DA_dahazing ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeHazing/192x320,240x320,320x480,360x640,480x640,720x1280,No-LICENSE
224 Y-net ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeHazing/192x320,240x320,320x480,384x640,480x640,720x1280
225 DRBL ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeHazing/192x320,240x320,320x480,384x640,480x640,720x1280
230 Single-Image-Desnowing-HDCWNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeSnowing/512x672
231 DRBL ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,320x480,360x640,480x640,720x1280,No-LICENSE
232 MIMO-UNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeBlur/180x320,240x320,320x480,360x640,480x640,720x1280,No-LICENSE
234 FBCNN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeNoise/180x320,240x320,320x480,360x640,480x640,720x1280
240 BSRGAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ x2,x4/64x64,96x96,128x128,160x160,180x320,240x320,No-LICENSE
241 SCL-LLE ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,320x480,480x640,720x1280,No-LICENSE
243 Zero-DCE-improved ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,320x480,360x640,480x640,720x1280,academic use only
249 Real-CUGAN ■■■ ⚫ ⚫ 2x,3x,4x/64x64,96x96,128x128,120x160,160x160,180x320,240x320
251 AU-GAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/128x256,240x320,240x640,256x512,480x640,512x1024,720x1280
253 TransWeather ■■■ ⚫ ⚫ DeRain,DeHaizing,DeSnow/192x320,256x320,320x480,384x640,480x640,736x1280
261 EfficientDerain ■■■ ⚫ v4_SPA,v4_rain100H,v4_rain1400/192x320,256x320,320x480,384x640,480x640,608x800,736x1280
270 HWMNet ■■■ ⚫ Low-light Image Enhancement/192x320,256x320,320x480,384x640,480x640,544x960,720x1280
275 FD-GAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeHaizing/192x320,256x320,384x640,480x640,720x1280,1080x1920,No-LICENSE
277 EDN-GTM ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeHaizing/192x320,240x320,384x480,480x640,512x512,720x1280,1088x1920
281 IMDN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ x4/64x64,96x96,128x128,120x160,160x160,180x320,192x192,256x256,180x320,240x320,360x640,480x640
283 UIE-WD ■■■ ⚫ Underwater Image Enhancement/WIP issue #97/192x320,240x320,320x480,360x640,480x640,720x1280,1080x1920
285 Decoupled-Low-light-Image-Enhancement ■■■ ⚫ Low-light Image Enhancement/180x320,240x320,360x480,360x640,480x640,720x1280
286 SCI ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Low-light Image Enhancement/180x320,240x320,360x480,360x640,480x640,720x1280
315 Illumination-Adaptive-Transformer ■■■ ⚫ Low-light Image Enhancement
316 night_enhancement ■■■ ⚫ Low-light Image Enhancement
320 Dehamer ■■■ ⚫ Dehazing
323 Stripformer ■■■ ⚫ DeBlur
325 DehazeFormer ■■■ ⚫ Dehazing
344 XYDeblur ■■■ ⚫ DeBlur
348 Bread ■■■ ⚫ Low-light Image Enhancement
348 PMN ■■■ ⚫ DeNoise, Low-light Image Enhancement
351 RFDN ■■■ ⚫ x4
352 MAXIM ■■■ ⚫ ⚫ ⚫ Dehaze only
353 ShadowFormer ■■■ ⚫ Shadow Removal
354 DEA-Net ■■■ ⚫ ⚫ ⚫ DeHaze
359 MSPFN ■■■ ⚫ ⚫ ⚫ DeRain
361 KBNet ■■■ ⚫ Real Image Denoising
367 FLW-Net ■■■ ⚫ Low-light Image Enhancement
368 C2PNet ■■■ ⚫ DeHaze
370 Semantic-Guided-Low-Light-Image-Enhancement ■■■ ⚫ Low-light Image Enhancement
372 URetinex-Net ■■■ ⚫ Low-light Image Enhancement
375 SCANet ■■■ ⚫ DeHaze
377 DRSformer ■■■ ⚫ DeRain
385 PairLIE ■■■ ⚫ Low-light Image Enhancement
389 WGWS-Net ■■■ ⚫ DeRain,DeRainDrop,DeHaize,DeSnow
396 MixDehazeNet ■■■ ⚫ DeHaize
400 CSRNet ■■■ ⚫ Low-light Image Enhancement
404 HDR-Transformer ■■■ ⚫
409 nighttime_dehaze ■■■ ⚫ DeHaze
411 UDR-S2Former_deraining ■■■ ⚫ DeRain
418 Diffusion-Low-Light ■■■ ⚫ ⚫ ⚫ Diffusion, Low-light Image Enhancement
469 Face_Deblurring ■■■ ⚫ 64x64, HxW

12. Sound Classifier

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
013 ml-sound-classifier ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
097 YAMNet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
098 SPICE ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
118 Speech-enhancement ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ WIP,EdgeTPU(LeakyLeRU)
120 FRILL ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ nofrontend
177 BirdNET-Lite ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ non-flex
381 Whisper ■■■ ⚫
382 Light-SERNet ■■■ ⚫ ⚫ ⚫

13. Natural Language Processing

No. Model Name Link FP32 FP16 INT8 TPU WQ OV CM TFJS TF-TRT ONNX Remarks
048 Mobile_BERT ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
121 GPT2/DistillGPT2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
122 DistillBert ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫

14. Text Recognition

No. Model Name Link FP32 FP16 INT8 TPU WQ OV CM TFJS TF-TRT ONNX Remarks
052 Handwritten_Text_Recognition ■■■ ⚫ ⚫ ⚫
055 Handwritten_Japanese_Recognition ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
093 ocr_japanese ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 120x160

15. Action Recognition

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
092 weld-porosity-detection-0001 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
247 PoseC3D ■■■ ⚫ Skeleton-based/FineGYM,NTU60_XSub,NTU120_XSub,UCF101,HMDB51/1x20x48x64x64
248 MS-G3D ■■■ ⚫ Skeleton-based/Kinetics,NTU60,NTU120/1x3xTx25x2

16. Inpainting

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
100 HiFill ■■■ ⚫ ⚫ ⚫ ⚫ ⚫
163 MST_inpainting ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
273 OPN(Onion-Peel Networks) ■■■ ⚫
274 DeepFillv2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫

17. GAN

No. Model Name Link FP32 FP16 INT8 TPU WQ OV CM TFJS TF-TRT ONNX Remarks
105 MobileStyleGAN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
310 attentive-gan-derainnet ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ DeRain/180x320,240x320,240x360,320x480,360x640,480x640,720x1280

18. Transformer

No. Model Name Link FP32 FP16 INT8 TPU WQ OV CM TFJS TF-TRT ONNX Remarks
127 dino ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ experimental,dino_deits8/dino_deits16

19. Others

No. Model Name Link FP32 FP16 INT8 TPU DQ WQ OV CM TFJS TF-TRT ONNX Remarks
091 gaze-estimation-adas-0002 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
102 Coconet ■■■ ⚫ ⚫ ⚫ ⚫ magenta
108 HAWP ■■■ ⚫ Line Parsing,WIP
110 L-CNN ■■■ ⚫ Line Parsing,WIP
117 DTLN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
119 M-LSD ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
131 CFNet ■■■ ⚫ 256x256,512x768
139 PSD-Principled-Synthetic-to-Real-Dehazing-Guided-by-Physical-Priors ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
140 Ultra-Fast-Lane-Detection ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 288x800
141 lanenet-lane-detection ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 256x512
154 driver-action-recognition-adas-0002-encoder ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
155 driver-action-recognition-adas-0002-decoder ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
167 LSTR ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 180x320,240x320,360x640,480x640,720x1280
229 DexiNed ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 160x320,320x480,368x640,480x640,720x1280
233 HRNet-for-Fashion-Landmark-Estimation ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 192x320,256x320,320x480,384x640,480x640,736x1280
237 piano_transcription ■■■ ⚫ ⚫ 1x160000,Nx160000
252 RAFT ■■■ ⚫ small,chairs,kitti,sintel,things/iters=10,20/240x320,360x480,480x640
254 FullSubNet-plus ■■■ ⚫ 1x1x257x100,200,500,1000,2000,3000,5000,7000,8000,10000
255 FILM ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ L1,Style,VGG/256x256,180x320,240x320,360x640,480x640,720x1280,1080x1920
260 KP2D ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ResNet/128x320,192x320,192x448,192x640,256x320,256x448,256x640,320x448,384x640,480x640,512x1280,736x1280
272 CSFlow ■■■ ⚫ chairs,kitti,things/iters=10,20/192x320,240x320,320x480,384x640,480x640,736x1280
276 HybridNets ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ anchor_HxW.npy/256x384,256x512,384x512,384x640,384x1024,512x640,768x1280,1152x1920
278 DWARF ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ StereoDepth+OpticalFlow,/192x320,256x320,384x640,512x640,512x640,768x1280
279 F-Clip ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Line Parsing/ALL/192x320,256x320,320x480,384x640,480x640,736x1280
288 perceptual-reflection-removal ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ Reflection-Removal/180x320,240x320,360x480,360x640,480x640,720x1280
291 SeAFusion ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ 180x320,240x320,360x480,360x640,480x640,720x1280
297 GazeNet ■■■ ⚫ 1x7x3x256x192/NxFx3x256x192
298 DEQ-Flow ■■■ ⚫ AGPL-3.0 license
306 GMFlowNet ■■■ ⚫ OpticalFlow/192x320,240x320,320x480,360x640,480x640,720x1280
309 ImageForensicsOSN ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫ forgery detection/180x320,240x320,320x480,360x640,480x640,720x1280
318 pips ■■■ ⚫
324 Ultra-Fast-Lane-Detection-v2 ■■■ ⚫
326 YOLOPv2 ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
328 Stable_Diffusion ■■■ ⚫
339 DeepLSD ■■■ ⚫
342 ALIKE ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ ⚫
357 Unimatch ■■■ ⚫ ⚫ ⚫ OpticalFlow, StereoDepth
360 PARSeq ■■■ ⚫ ⚫ ⚫ Scene Text Recognition
366 text_recognition_CRNN ■■■ ⚫ ⚫ ⚫ CN/CH/EN
373 LiteTrack ■■■ ⚫ ⚫ ⚫ Tracking
374 LaneSOD ■■■ ⚫ Lane Segmentation
378 P2PNet_tfkeras ■■■ ⚫ ⚫ ⚫
388 LightGlue ■■■ ⚫ Keypoint Matching
398 L2CS-Net ■■■ ⚫ ⚫ ⚫ ⚫ ⚫ Gaze Pose 448x448
401 CLRerNet ■■■ ⚫ Lane Detection
406 DeDoDe ■■■ ⚫ ⚫ ⚫ Keypoint Detection, Description, Matching
407 Generalizing_Gaze_Estimation ■■■ ⚫ ⚫ ⚫ Gaze Pose 160x160
408 UAED ■■■ ⚫ Edge Detectopm
413 DocShadow ■■■ ⚫ ⚫ Document Shadow Removal
416 GeoNet ■■■ ⚫ ⚫ MonoDepth, CameraPose, OpticalFlow
428 ISR ■■■ ⚫ Person ReID
487 DDN ■■■ ⚫ edge detector
490 ICAONet ■■■ ⚫ ⚫ ⚫ ⚫ ISO/IEC 19794-5
492 Efficient-FIQA ■■■ ⚫ ⚫ ⚫ ⚫ Efficient Face Image Quality Assessment
496 LGT-Net ■■■ ⚫ Indoor Panoramic Room Layout Estimation
498 DocRes ■■■ ⚫ A Generalist Model Toward Unifying Document Image Restoration Tasks
499 LINEA ■■■ ⚫ Fast and accurate line detection using scalable transformers
500 ScaleLSD ■■■ ⚫ Scalable Deep Line Segment Detection Streamlined
501 LINEAE ■■■ ⚫ Line Segment Detection

Sample.1 - Object detection by video file

$ cd 006_mobilenetv2-ssdlite/02_voc/03_integer_quantization
$ ./download.sh && cd ..
$ python3 mobilenetv2ssdlite_movie_sync.py

004

Sample.2 - Object detection by USB Camera

$ cd 006_mobilenetv2-ssdlite/02_voc/03_integer_quantization
$ ./download.sh && cd ..
$ python3 mobilenetv2ssdlite_usbcam_sync.py

005

Sample.3 - Head Pose Estimation, Multi-stage inference with multi-model

  • RaspberryPi4 (CPU only)
  • Ubuntu 19.10 64bit
  • Tensorflow / Tensorflow Lite with multi-thread acceleration tuning for PythonAPI
  • [Model.1] MobileNetV2-SSDLite dm=0.5 300x300, Integer Quantization
  • [Model.2] Head Pose Estimation 128x128, Integer Quantization
  • WIDERFACE
  • USB Camera, 640x480
  • IPS 1080p HDMI Display
  • Approximately 13FPS for all processes from pre-processing, inference, post-processing, and display
$ cd 025_head_pose_estimation/03_integer_quantization
$ ./download.sh
$ python3 head_pose_estimation.py

006

Sample.4 - Semantic Segmentation, DeeplabV3-plus 256x256

  • RaspberryPi4 (CPU only)
  • Ubuntu 19.10 64bit
  • Tensorflow / Tensorflow Lite with multi-thread acceleration tuning for PythonAPI
  • DeeplabV3-plus (MobileNetV2) Decoder 256x256, Integer Quantization
  • USB Camera, 640x480
  • IPS 1080p HDMI Display
  • Approximately 8.5 FPS for all processes from pre-processing, inference, post-processing, and display
$ cd 026_mobile-deeplabv3-plus/03_integer_quantization
$ ./download.sh
$ python3 deeplabv3plus_usbcam.py

007

Sample.5 - MediaPipe/FaceMesh, face_detection_front_128_weight_quant, face_landmark_192_weight_quant

Sample.6 - MediaPipe/Objectron, object_detection_3d_chair_640x480_weight_quant

Sample.7 - MediaPipe/Objectron, object_detection_3d_chair_640x480_openvino_FP32

Sample.8 - MediaPipe/BlazeFace, face_detection_front_128_integer_quant

Sample.9 - MediaPipe/Hand_Detection_and_Tracking(3D Hand Pose), hand_landmark_3d_256_integer_quant.tflite + palm_detection_builtin_256_integer_quant.tflite

Sample.10 - DBFace, 640x480_openvino_FP32

Sample.11 - Human_Pose_Estimation_3D, 640x480, Tensorflow.js + WebGL + Browser

Sample.12 - BlazePose Full Body, 640x480, Tensorflow.js + WebGL + Browser

Sample.13 - Facial Cartoonization, 640x480, OpenVINO Corei7 CPU only

  • Ubuntu 18.04 x86_64
  • OpenVINO
  • USB Camera, 640x480
  • Test Code 015

1. Environment

  • Ubuntu 18.04 x86_64
  • RaspberryPi4 Raspbian Buster 32bit / Raspbian Buster 64bit / Ubuntu 19.10 aarch64
  • Tensorflow-GPU v1.15.2 or Tensorflow v2.3.1+
  • OpenVINO 2020.2+
  • PyTorch 1.6.0+
  • ONNX Opset12
  • Python 3.6.8
  • PascalVOC Dataset
  • COCO Dataset
  • Cityscapes Dataset
  • Imagenette Dataset
  • CelebA Dataset
  • Audio file (.wav)
  • WIDERFACE
  • Google Colaboratory

2. Procedure

Procedure examples

2-1. MobileNetV3+DeeplabV3+PascalVOC

2-1-1. Preparation

$ cd ~
$ mkdir deeplab;cd deeplab
$ git clone --depth 1 https://github.com/tensorflow/models.git
$ cd models/research/deeplab/datasets
$ mkdir pascal_voc_seg

$ curl -sc /tmp/cookie \
  "https://drive.google.com/uc?export=download&id=1rATNHizJdVHnaJtt-hW9MOgjxoaajzdh" > /dev/null
$ CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
$ curl -Lb /tmp/cookie \
  "https://drive.google.com/uc?export=download&confirm=${CODE}&id=1rATNHizJdVHnaJtt-hW9MOgjxoaajzdh" \
  -o pascal_voc_seg/VOCtrainval_11-May-2012.tar

$ sed -i -e "s/python .\/remove_gt_colormap.py/python3 .\/remove_gt_colormap.py/g" \
      -i -e "s/python .\/build_voc2012_data.py/python3 .\/build_voc2012_data.py/g" \
      download_and_convert_voc2012.sh

$ sh download_and_convert_voc2012.sh

$ cd ../..
$ mkdir -p deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train
$ mkdir -p deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/eval
$ mkdir -p deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/vis

$ export PATH_TO_TRAIN_DIR=${HOME}/deeplab/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train
$ export PATH_TO_DATASET=${HOME}/deeplab/models/research/deeplab/datasets/pascal_voc_seg/tfrecord
$ export PYTHONPATH=${HOME}/deeplab/models/research:${HOME}/deeplab/models/research/deeplab:${HOME}/deeplab/models/research/slim:${PYTHONPATH}
# See feature_extractor.network_map for supported model variants.
# models/research/deeplab/core/feature_extractor.py

networks_map = {
    'mobilenet_v2': _mobilenet_v2,
    'mobilenet_v3_large_seg': mobilenet_v3_large_seg,
    'mobilenet_v3_small_seg': mobilenet_v3_small_seg,
    'resnet_v1_18': resnet_v1_beta.resnet_v1_18,
    'resnet_v1_18_beta': resnet_v1_beta.resnet_v1_18_beta,
    'resnet_v1_50': resnet_v1_beta.resnet_v1_50,
    'resnet_v1_50_beta': resnet_v1_beta.resnet_v1_50_beta,
    'resnet_v1_101': resnet_v1_beta.resnet_v1_101,
    'resnet_v1_101_beta': resnet_v1_beta.resnet_v1_101_beta,
    'xception_41': xception.xception_41,
    'xception_65': xception.xception_65,
    'xception_71': xception.xception_71,
    'nas_pnasnet': nas_network.pnasnet,
    'nas_hnasnet': nas_network.hnasnet,
}

2-1-2. "mobilenet_v3_small_seg" Float32 regular training

$ python3 deeplab/train.py \
    --logtostderr \
    --training_number_of_steps=500000 \
    --train_split="train" \
    --model_variant="mobilenet_v3_small_seg" \
    --decoder_output_stride=16 \
    --train_crop_size="513,513" \
    --train_batch_size=8 \
    --dataset="pascal_voc_seg" \
    --save_interval_secs=300 \
    --save_summaries_secs=300 \
    --save_summaries_images=True \
    --log_steps=100 \
    --train_logdir=${PATH_TO_TRAIN_DIR} \
    --dataset_dir=${PATH_TO_DATASET}

2-1-3. "mobilenet_v3_large_seg" Float32 regular training

$ python3 deeplab/train.py \
    --logtostderr \
    --training_number_of_steps=1000000 \
    --train_split="train" \
    --model_variant="mobilenet_v3_large_seg" \
    --decoder_output_stride=16 \
    --train_crop_size="513,513" \
    --train_batch_size=8 \
    --dataset="pascal_voc_seg" \
    --save_interval_secs=300 \
    --save_summaries_secs=300 \
    --save_summaries_images=True \
    --log_steps=100 \
    --train_logdir=${PATH_TO_TRAIN_DIR} \
    --dataset_dir=${PATH_TO_DATASET}

2-1-4. Visualize training status

$ tensorboard \
  --logdir ${HOME}/deeplab/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train

   

2-2. MobileNetV3+DeeplabV3+Cityscaps - Post-training quantization

2-2-1. Preparation

$ cd ~
$ mkdir -p git/deeplab && cd git/deeplab
$ git clone --depth 1 https://github.com/tensorflow/models.git
$ cd models/research/deeplab/datasets
$ mkdir cityscapes && cd cityscapes

# Clone the script to generate Cityscapes Dataset.
$ git clone --depth 1 https://github.com/mcordts/cityscapesScripts.git
$ mv cityscapesScripts cityscapesScripts_ && \
  mv cityscapesScripts_/cityscapesscripts . && \
  rm -rf cityscapesScripts_

# Download Cityscapes Dataset.
# https://www.cityscapes-dataset.com/
# You will need to sign up and issue a userID and password to download the data set.
$ wget --keep-session-cookies --save-cookies=cookies.txt \
  --post-data 'username=(userid)&password=(password)&submit=Login' \
  https://www.cityscapes-dataset.com/login/
$ wget --load-cookies cookies.txt \
  --content-disposition https://www.cityscapes-dataset.com/file-handling/?packageID=1
$ wget --load-cookies cookies.txt \
  --content-disposition https://www.cityscapes-dataset.com/file-handling/?packageID=3
$ unzip gtFine_trainvaltest.zip && rm gtFine_trainvaltest.zip
$ rm README && rm license.txt
$ unzip leftImg8bit_trainvaltest.zip && rm leftImg8bit_trainvaltest.zip
$ rm README && rm license.txt

# Convert Cityscapes Dataset to TFRecords format.
$ cd ..
$ sed -i -e "s/python/python3/g" convert_cityscapes.sh
$ export PYTHONPATH=${HOME}/git/deeplab/models/research/deeplab/datasets/cityscapes:${PYTHONPATH}
$ sh convert_cityscapes.sh

# Create a checkpoint storage folder for training. If training is not required,
# there is no need to carry out.
$ cd ../..
$ mkdir -p deeplab/datasets/cityscapes/exp/train_on_train_set/train && \
  mkdir -p deeplab/datasets/cityscapes/exp/train_on_train_set/eval && \
  mkdir -p deeplab/datasets/cityscapes/exp/train_on_train_set/vis

# Download the DeepLabV3 trained model of the MobileNetV3 backbone.
$ curl -sc /tmp/cookie \
  "https://drive.google.com/uc?export=download&id=1f5ccaJmJBYwBmHvRQ77yGIUcXnqQIRY_" > /dev/null
$ CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
$ curl -Lb /tmp/cookie \
  "https://drive.google.com/uc?export=download&confirm=${CODE}&id=1f5ccaJmJBYwBmHvRQ77yGIUcXnqQIRY_" \
  -o deeplab_mnv3_small_cityscapes_trainfine_2019_11_15.tar.gz
$ tar -zxvf deeplab_mnv3_small_cityscapes_trainfine_2019_11_15.tar.gz
$ rm deeplab_mnv3_small_cityscapes_trainfine_2019_11_15.tar.gz

$ curl -sc /tmp/cookie \
  "https://drive.google.com/uc?export=download&id=1QxS3G55rUQvuiBF-hztQv5zCkfPfwlVU" > /dev/null
$ CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
$ curl -Lb /tmp/cookie \
  "https://drive.google.com/uc?export=download&confirm=${CODE}&id=1QxS3G55rUQvuiBF-hztQv5zCkfPfwlVU" \
  -o deeplab_mnv3_large_cityscapes_trainfine_2019_11_15.tar.gz
$ tar -zxvf deeplab_mnv3_large_cityscapes_trainfine_2019_11_15.tar.gz
$ rm deeplab_mnv3_large_cityscapes_trainfine_2019_11_15.tar.gz

$ export PATH_TO_INITIAL_CHECKPOINT=${HOME}/git/deeplab/models/research/deeplab_mnv3_small_cityscapes_trainfine/model.ckpt
$ export PATH_TO_DATASET=${HOME}/git/deeplab/models/research/deeplab/datasets/cityscapes/tfrecord
$ export PYTHONPATH=${HOME}/git/deeplab/models/research:${HOME}/git/deeplab/models/research/deeplab:${HOME}/git/deeplab/models/research/slim:${PYTHONPATH}

# Fix a bug in the data generator.
$ sed -i -e \
  "s/splits_to_sizes={'train_fine': 2975,/splits_to_sizes={'train': 2975,/g" \
  deeplab/datasets/data_generator.py

# Back up the trained model.
$ cd ${HOME}/git/deeplab/models/research
$ cp deeplab/export_model.py deeplab/export_model.py_org
$ cp deeplab_mnv3_small_cityscapes_trainfine/frozen_inference_graph.pb \
  deeplab_mnv3_small_cityscapes_trainfine/frozen_inference_graph_org.pb
$ cp deeplab_mnv3_large_cityscapes_trainfine/frozen_inference_graph.pb \
  deeplab_mnv3_large_cityscapes_trainfine/frozen_inference_graph_org.pb

# Customize "export_model.py" according to the input resolution. Must be (multiple of 8 + 1).
#   (example.1) 769 = 8 * 96 + 1
#   (example.2) 512 = 8 * 64 + 1
#   (example.3) 320 = 8 * 40 + 1
# And it is necessary to change from tf.uint8 type to tf.float32 type.
$ sed -i -e \
  "s/tf.placeholder(tf.uint8, \[1, None, None, 3\], name=_INPUT_NAME)/tf.placeholder(tf.float32, \[1, 769, 769, 3\], name=_INPUT_NAME)/g" \
  deeplab/export_model.py

2-2-2. Parameter sheet

# crop_size and image_pooling_crop_size are multiples of --decoder_output_stride + 1
# 769 = 8 * 96 + 1
# 513 = 8 * 64 + 1
# 321 = 8 * 40 + 1

# --initialize_last_layer=True initializes the final layer with the weight of
# tf_initial_checkpoint (inherits the weight)

# Named tuple to describe the dataset properties.
# deeplab/datasets/data_generator.py
DatasetDescriptor = collections.namedtuple(
    'DatasetDescriptor',
    [
        'splits_to_sizes',  # Splits of the dataset into training, val and test.
        'num_classes',  # Number of semantic classes, including the
                        # background class (if exists). For example, there
                        # are 20 foreground classes + 1 background class in
                        # the PASCAL VOC 2012 dataset. Thus, we set
                        # num_classes=21.
        'ignore_label',  # Ignore label value.
    ])

_CITYSCAPES_INFORMATION = DatasetDescriptor(
    splits_to_sizes={'train': 2975,
                     'train_coarse': 22973,
                     'trainval_fine': 3475,
                     'trainval_coarse': 23473,
                     'val_fine': 500,
                     'test_fine': 1525},
    num_classes=19,
    ignore_label=255,
)

_PASCAL_VOC_SEG_INFORMATION = DatasetDescriptor(
    splits_to_sizes={
        'train': 1464,
        'train_aug': 10582,
        'trainval': 2913,
        'val': 1449,
    },
    num_classes=21,
    ignore_label=255,
)

_ADE20K_INFORMATION = DatasetDescriptor(
    splits_to_sizes={
        'train': 20210,  # num of samples in images/training
        'val': 2000,  # num of samples in images/validation
    },
    num_classes=151,
    ignore_label=0,
)

_DATASETS_INFORMATION = {
    'cityscapes': _CITYSCAPES_INFORMATION,
    'pascal_voc_seg': _PASCAL_VOC_SEG_INFORMATION,
    'ade20k': _ADE20K_INFORMATION,
}

# A map from network name to network function. model_variant.
# deeplab/core/feature_extractor.py
networks_map = {
    'mobilenet_v2': _mobilenet_v2,
    'mobilenet_v3_large_seg': mobilenet_v3_large_seg,
    'mobilenet_v3_small_seg': mobilenet_v3_small_seg,
    'resnet_v1_18': resnet_v1_beta.resnet_v1_18,
    'resnet_v1_18_beta': resnet_v1_beta.resnet_v1_18_beta,
    'resnet_v1_50': resnet_v1_beta.resnet_v1_50,
    'resnet_v1_50_beta': resnet_v1_beta.resnet_v1_50_beta,
    'resnet_v1_101': resnet_v1_beta.resnet_v1_101,
    'resnet_v1_101_beta': resnet_v1_beta.resnet_v1_101_beta,
    'xception_41': xception.xception_41,
    'xception_65': xception.xception_65,
    'xception_71': xception.xception_71,
    'nas_pnasnet': nas_network.pnasnet,
    'nas_hnasnet': nas_network.hnasnet,
}

2-2-3. "mobilenet_v3_small_seg" Export Model

Generate Freeze Graph (.pb) with INPUT Placeholder changed from checkpoint file (.ckpt).

$ python3 deeplab/export_model.py \
    --checkpoint_path=./deeplab_mnv3_small_cityscapes_trainfine/model.ckpt \
    --export_path=./deeplab_mnv3_small_cityscapes_trainfine/frozen_inference_graph.pb \
    --num_classes=19 \
    --crop_size=769 \
    --crop_size=769 \
    --model_variant="mobilenet_v3_small_seg" \
    --image_pooling_crop_size="769,769" \
    --image_pooling_stride=4,5 \
    --aspp_convs_filters=128 \
    --aspp_with_concat_projection=0 \
    --aspp_with_squeeze_and_excitation=1 \
    --decoder_use_sum_merge=1 \
    --decoder_filters=19 \
    --decoder_output_is_logits=1 \
    --image_se_uses_qsigmoid=1 \
    --image_pyramid=1 \
    --decoder_output_stride=8

2-2-4. "mobilenet_v3_large_seg" Export Model

Generate Freeze Graph (.pb) with INPUT Placeholder changed from checkpoint file (.ckpt).

$ python3 deeplab/export_model.py \
    --checkpoint_path=./deeplab_mnv3_large_cityscapes_trainfine/model.ckpt \
    --export_path=./deeplab_mnv3_large_cityscapes_trainfine/frozen_inference_graph.pb \
    --num_classes=19 \
    --crop_size=769 \
    --crop_size=769 \
    --model_variant="mobilenet_v3_large_seg" \
    --image_pooling_crop_size="769,769" \
    --image_pooling_stride=4,5 \
    --aspp_convs_filters=128 \
    --aspp_with_concat_projection=0 \
    --aspp_with_squeeze_and_excitation=1 \
    --decoder_use_sum_merge=1 \
    --decoder_filters=19 \
    --decoder_output_is_logits=1 \
    --image_se_uses_qsigmoid=1 \
    --image_pyramid=1 \
    --decoder_output_stride=8

If you follow the Google Colaboratory sample procedure, copy the "deeplab_mnv3_small_cityscapes_trainfine" folder and "deeplab_mnv3_large_cityscapes_trainfine" to your Google Drive "My Drive". It is not necessary if all procedures described in Google Colaboratory are performed in a PC environment. 001 002

2-2-5. Google Colaboratory - Post-training quantization - post_training_integer_quant.ipynb

  • Weight Quantization
  • Integer Quantization
  • Full Integer Quantization

https://colab.research.google.com/drive/1TtCJ-uMNTArpZxrf5DCNbZdn08DsiW8F    

2-3. MobileNetV3+DeeplabV3+Cityscaps - Quantization-aware training

2-3-1. "mobilenet_v3_small_seg" Quantization-aware training

$ cd ${HOME}/git/deeplab/models/research
$ export PATH_TO_TRAINED_FLOAT_MODEL=${HOME}/git/deeplab/models/research/deeplab_mnv3_small_cityscapes_trainfine/model.ckpt
$ export PATH_TO_TRAIN_DIR=${HOME}/git/deeplab/models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train
$ export PATH_TO_DATASET=${HOME}/git/deeplab/models/research/deeplab/datasets/cityscapes/tfrecord

# deeplab_mnv3_small_cityscapes_trainfine
$ python3 deeplab/train.py \
    --logtostderr \
    --training_number_of_steps=5000 \
    --train_split="train" \
    --model_variant="mobilenet_v3_small_seg" \
    --train_crop_size="769,769" \
    --train_batch_size=8 \
    --dataset="cityscapes" \
    --initialize_last_layer=False \
    --base_learning_rate=3e-5 \
    --quantize_delay_step=0 \
    --image_pooling_crop_size="769,769" \
    --image_pooling_stride=4,5 \
    --aspp_convs_filters=128 \
    --aspp_with_concat_projection=0 \
    --aspp_with_squeeze_and_excitation=1 \
    --decoder_use_sum_merge=1 \
    --decoder_filters=19 \
    --decoder_output_is_logits=1 \
    --image_se_uses_qsigmoid=1 \
    --image_pyramid=1 \
    --decoder_output_stride=8 \
    --save_interval_secs=300 \
    --save_summaries_secs=300 \
    --save_summaries_images=True \
    --log_steps=100 \
    --tf_initial_checkpoint=${PATH_TO_TRAINED_FLOAT_MODEL} \
    --train_logdir=${PATH_TO_TRAIN_DIR} \
    --dataset_dir=${PATH_TO_DATASET}

2-3-2. "mobilenet_v3_large_seg" Quantization-aware training

$ cd ${HOME}/git/deeplab/models/research
$ export PATH_TO_TRAINED_FLOAT_MODEL=${HOME}/git/deeplab/models/research/deeplab_mnv3_large_cityscapes_trainfine/model.ckpt
$ export PATH_TO_TRAIN_DIR=${HOME}/git/deeplab/models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train
$ export PATH_TO_DATASET=${HOME}/git/deeplab/models/research/deeplab/datasets/cityscapes/tfrecord

# deeplab_mnv3_large_cityscapes_trainfine
$ python3 deeplab/train.py \
    --logtostderr \
    --training_number_of_steps=4350 \
    --train_split="train" \
    --model_variant="mobilenet_v3_large_seg" \
    --train_crop_size="769,769" \
    --train_batch_size=8 \
    --dataset="cityscapes" \
    --initialize_last_layer=False \
    --base_learning_rate=3e-5 \
    --quantize_delay_step=0 \
    --image_pooling_crop_size="769,769" \
    --image_pooling_stride=4,5 \
    --aspp_convs_filters=128 \
    --aspp_with_concat_projection=0 \
    --aspp_with_squeeze_and_excitation=1 \
    --decoder_use_sum_merge=1 \
    --decoder_filters=19 \
    --decoder_output_is_logits=1 \
    --image_se_uses_qsigmoid=1 \
    --image_pyramid=1 \
    --decoder_output_stride=8 \
    --save_interval_secs=300 \
    --save_summaries_secs=300 \
    --save_summaries_images=True \
    --log_steps=100 \
    --tf_initial_checkpoint=${PATH_TO_TRAINED_FLOAT_MODEL} \
    --train_logdir=${PATH_TO_TRAIN_DIR} \
    --dataset_dir=${PATH_TO_DATASET}

The orange line is "deeplab_mnv3_small_cityscapes_trainfine" loss. The blue line is "deeplab_mnv3_large_cityscapes_trainfine" loss. 003    

2-4. MobileNetV2+DeeplabV3+coco/voc - Post-training quantization

2-4-1. Preparation

$ cd ${HOME}/git/deeplab/models/research

$ wget http://download.tensorflow.org/models/deeplabv3_mnv2_dm05_pascal_trainaug_2018_10_01.tar.gz
$ tar -zxvf deeplabv3_mnv2_dm05_pascal_trainaug_2018_10_01.tar.gz
$ rm deeplabv3_mnv2_dm05_pascal_trainaug_2018_10_01.tar.gz

$ wget http://download.tensorflow.org/models/deeplabv3_mnv2_dm05_pascal_trainval_2018_10_01.tar.gz
$ tar -zxvf deeplabv3_mnv2_dm05_pascal_trainval_2018_10_01.tar.gz
$ rm deeplabv3_mnv2_dm05_pascal_trainval_2018_10_01.tar.gz

$ wget http://download.tensorflow.org/models/deeplabv3_mnv2_pascal_train_aug_2018_01_29.tar.gz
$ tar -zxvf deeplabv3_mnv2_pascal_train_aug_2018_01_29.tar.gz
$ rm deeplabv3_mnv2_pascal_train_aug_2018_01_29.tar.gz

$ sed -i -e \
  "s/tf.placeholder(tf.uint8, \[1, None, None, 3\], name=_INPUT_NAME)/tf.placeholder(tf.float32, \[1, 257, 257, 3\], name=_INPUT_NAME)/g" \
  deeplab/export_model.py

$ export PYTHONPATH=${HOME}/git/deeplab/models/research:${HOME}/git/deeplab/models/research/deeplab:${HOME}/git/deeplab/models/research/slim:${PYTHONPATH}

$ python3 deeplab/export_model.py \
  --checkpoint_path=./deeplabv3_mnv2_dm05_pascal_trainaug/model.ckpt \
  --export_path=./deeplabv3_mnv2_dm05_pascal_trainaug/frozen_inference_graph.pb \
  --model_variant="mobilenet_v2" \
  --crop_size=257 \
  --crop_size=257 \
  --depth_multiplier=0.5

$ python3 deeplab/export_model.py \
  --checkpoint_path=./deeplabv3_mnv2_dm05_pascal_trainval/model.ckpt \
  --export_path=./deeplabv3_mnv2_dm05_pascal_trainval/frozen_inference_graph.pb \
  --model_variant="mobilenet_v2" \
  --crop_size=257 \
  --crop_size=257 \
  --depth_multiplier=0.5

$ python3 deeplab/export_model.py \
  --checkpoint_path=./deeplabv3_mnv2_pascal_train_aug/model.ckpt-30000 \
  --export_path=./deeplabv3_mnv2_pascal_train_aug/frozen_inference_graph.pb \
  --model_variant="mobilenet_v2" \
  --crop_size=257 \
  --crop_size=257

2-5. MobileNetV3-SSD+coco - Post-training quantization

2-5-1. Preparation

$ cd ~
$ sudo pip3 install tensorflow-gpu==1.15.0
$ git clone --depth 1 https://github.com/tensorflow/models.git
$ cd models/research

$ git clone https://github.com/cocodataset/cocoapi.git
$ cd cocoapi/PythonAPI
$ make
$ cp -r pycocotools ../..
$ cd ../..
$ wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip
$ unzip protobuf.zip
$ ./bin/protoc object_detection/protos/*.proto --python_out=.

$ sudo apt-get install -y protobuf-compiler python3-pil python3-lxml python3-tk
$ sudo -H pip3 install Cython contextlib2 jupyter matplotlib

$ export PYTHONPATH=${PWD}:${PWD}/object_detection:${PWD}/slim:${PYTHONPATH}

$ mkdir -p ssd_mobilenet_v3_small_coco_2019_08_14 && cd ssd_mobilenet_v3_small_coco_2019_08_14
$ curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=1uqaC0Y-yRtzkpu1EuZ3BzOyh9-i_3Qgi" > /dev/null
$ CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
$ curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=1uqaC0Y-yRtzkpu1EuZ3BzOyh9-i_3Qgi" -o ssd_mobilenet_v3_small_coco_2019_08_14.tar.gz
$ tar -zxvf ssd_mobilenet_v3_small_coco_2019_08_14.tar.gz
$ rm ssd_mobilenet_v3_small_coco_2019_08_14.tar.gz
$ cd ..

$ mkdir -p ssd_mobilenet_v3_large_coco_2019_08_14 && cd ssd_mobilenet_v3_large_coco_2019_08_14
$ curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=1NGLjKRWDQZ_kibQHlLZ7Eetuuz1waC7X" > /dev/null
$ CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
$ curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=1NGLjKRWDQZ_kibQHlLZ7Eetuuz1waC7X" -o ssd_mobilenet_v3_large_coco_2019_08_14.tar.gz
$ tar -zxvf ssd_mobilenet_v3_large_coco_2019_08_14.tar.gz
$ rm ssd_mobilenet_v3_large_coco_2019_08_14.tar.gz
$ cd ..

2-5-2. Create a conversion script from checkpoint format to saved_model format

import tensorflow as tf
import os
import shutil
from tensorflow.python.saved_model import tag_constants
from tensorflow.python.tools import freeze_graph
from tensorflow.python import ops
from tensorflow.tools.graph_transforms import TransformGraph

def freeze_model(saved_model_dir, output_node_names, output_filename):
  output_graph_filename = os.path.join(saved_model_dir, output_filename)
  initializer_nodes = ''
  freeze_graph.freeze_graph(
      input_saved_model_dir=saved_model_dir,
      output_graph=output_graph_filename,
      saved_model_tags = tag_constants.SERVING,
      output_node_names=output_node_names,
      initializer_nodes=initializer_nodes,
      input_graph=None,
      input_saver=False,
      input_binary=False,
      input_checkpoint=None,
      restore_op_name=None,
      filename_tensor_name=None,
      clear_devices=True,
      input_meta_graph=False,
  )

def get_graph_def_from_file(graph_filepath):
  tf.reset_default_graph()
  with ops.Graph().as_default():
    with tf.gfile.GFile(graph_filepath, 'rb') as f:
      graph_def = tf.GraphDef()
      graph_def.ParseFromString(f.read())
      return graph_def

def optimize_graph(model_dir, graph_filename, transforms, input_name, output_names, outname='optimized_model.pb'):
  input_names = [input_name] # change this as per how you have saved the model
  graph_def = get_graph_def_from_file(os.path.join(model_dir, graph_filename))
  optimized_graph_def = TransformGraph(
      graph_def,
      input_names,
      output_names,
      transforms)
  tf.train.write_graph(optimized_graph_def,
                      logdir=model_dir,
                      as_text=False,
                      name=outname)
  print('Graph optimized!')

def convert_graph_def_to_saved_model(export_dir, graph_filepath, input_name, outputs):
  graph_def = get_graph_def_from_file(graph_filepath)
  with tf.Session(graph=tf.Graph()) as session:
    tf.import_graph_def(graph_def, name='')
    tf.compat.v1.saved_model.simple_save(
        session,
        export_dir,# change input_image to node.name if you know the name
        inputs={input_name: session.graph.get_tensor_by_name('{}:0'.format(node.name))
            for node in graph_def.node if node.op=='Placeholder'},
        outputs={t.rstrip(":0"):session.graph.get_tensor_by_name(t) for t in outputs}
    )
    print('Optimized graph converted to SavedModel!')

tf.compat.v1.enable_eager_execution()

# Look up the name of the placeholder for the input node
graph_def=get_graph_def_from_file('./ssd_mobilenet_v3_small_coco_2019_08_14/frozen_inference_graph.pb')
input_name_small=""
for node in graph_def.node:
    if node.op=='Placeholder':
        print("##### ssd_mobilenet_v3_small_coco_2019_08_14 - Input Node Name #####", node.name) # this will be the input node
        input_name_small=node.name

# Look up the name of the placeholder for the input node
graph_def=get_graph_def_from_file('./ssd_mobilenet_v3_large_coco_2019_08_14/frozen_inference_graph.pb')
input_name_large=""
for node in graph_def.node:
    if node.op=='Placeholder':
        print("##### ssd_mobilenet_v3_large_coco_2019_08_14 - Input Node Name #####", node.name) # this will be the input node
        input_name_large=node.name

# ssd_mobilenet_v3 output names
output_node_names = ['raw_outputs/class_predictions','raw_outputs/box_encodings']
outputs = ['raw_outputs/class_predictions:0','raw_outputs/box_encodings:0']

# Optimizing the graph via TensorFlow library
transforms = []
optimize_graph('./ssd_mobilenet_v3_small_coco_2019_08_14', 'frozen_inference_graph.pb', transforms, input_name_small, output_node_names, outname='optimized_model_small.pb')
optimize_graph('./ssd_mobilenet_v3_large_coco_2019_08_14', 'frozen_inference_graph.pb', transforms, input_name_large, output_node_names, outname='optimized_model_large.pb')

# convert this to a s TF Serving compatible mode - ssd_mobilenet_v3_small_coco_2019_08_14
shutil.rmtree('./ssd_mobilenet_v3_small_coco_2019_08_14/0', ignore_errors=True)
convert_graph_def_to_saved_model('./ssd_mobilenet_v3_small_coco_2019_08_14/0',
                                 './ssd_mobilenet_v3_small_coco_2019_08_14/optimized_model_small.pb', input_name_small, outputs)

# convert this to a s TF Serving compatible mode - ssd_mobilenet_v3_large_coco_2019_08_14
shutil.rmtree('./ssd_mobilenet_v3_large_coco_2019_08_14/0', ignore_errors=True)
convert_graph_def_to_saved_model('./ssd_mobilenet_v3_large_coco_2019_08_14/0',
                                 './ssd_mobilenet_v3_large_coco_2019_08_14/optimized_model_large.pb', input_name_large, outputs)

2-5-3. Confirm the structure of saved_model 【ssd_mobilenet_v3_small_coco_2019_08_14】

$ saved_model_cli show --dir ./ssd_mobilenet_v3_small_coco_2019_08_14/0 --all

MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['normalized_input_image_tensor'] tensor_info:
        dtype: DT_FLOAT
        shape: (1, 320, 320, 3)
        name: normalized_input_image_tensor:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['raw_outputs/box_encodings'] tensor_info:
        dtype: DT_FLOAT
        shape: (1, 2034, 4)
        name: raw_outputs/box_encodings:0
    outputs['raw_outputs/class_predictions'] tensor_info:
        dtype: DT_FLOAT
        shape: (1, 2034, 91)
        name: raw_outputs/class_predictions:0
  Method name is: tensorflow/serving/predict

2-5-4. Confirm the structure of saved_model 【ssd_mobilenet_v3_large_coco_2019_08_14】

$ saved_model_cli show --dir ./ssd_mobilenet_v3_large_coco_2019_08_14/0 --all

MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['normalized_input_image_tensor'] tensor_info:
        dtype: DT_FLOAT
        shape: (1, 320, 320, 3)
        name: normalized_input_image_tensor:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['raw_outputs/box_encodings'] tensor_info:
        dtype: DT_FLOAT
        shape: (1, 2034, 4)
        name: raw_outputs/box_encodings:0
    outputs['raw_outputs/class_predictions'] tensor_info:
        dtype: DT_FLOAT
        shape: (1, 2034, 91)
        name: raw_outputs/class_predictions:0
  Method name is: tensorflow/serving/predict

2-5-5. Creating the destination path for the calibration test dataset 6GB

$ curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=1Uk9F4Tc-9UgnvARIVkloSoePUynyST6E" > /dev/null
$ CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"
$ curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=1Uk9F4Tc-9UgnvARIVkloSoePUynyST6E" -o TFDS.tar.gz
$ tar -zxvf TFDS.tar.gz
$ rm TFDS.tar.gz

2-5-6. Quantization

2-5-6-1. ssd_mobilenet_v3_small_coco_2019_08_14
import tensorflow as tf
import tensorflow_datasets as tfds
import numpy as np

def representative_dataset_gen():
  for data in raw_test_data.take(100):
    image = data['image'].numpy()
    image = tf.image.resize(image, (320, 320))
    image = image[np.newaxis,:,:,:]
    yield [image]

tf.compat.v1.enable_eager_execution()

# Generating a calibration data set
#raw_test_data, info = tfds.load(name="coco/2017", with_info=True, split="test", data_dir="./TFDS")
raw_test_data, info = tfds.load(name="coco/2017", with_info=True, split="test", data_dir="./TFDS", download=False)
print(info)

# Weight Quantization - Input/Output=float32
converter = tf.lite.TFLiteConverter.from_saved_model('./ssd_mobilenet_v3_small_coco_2019_08_14/0')
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
tflite_quant_model = converter.convert()
with open('./ssd_mobilenet_v3_small_coco_2019_08_14/mobilenet_v3_small_weight_quant.tflite', 'wb') as w:
    w.write(tflite_quant_model)
print("Weight Quantization complete! - mobilenet_v3_small_weight_quant.tflite")

# Integer Quantization - Input/Output=float32
converter = tf.lite.TFLiteConverter.from_saved_model('./ssd_mobilenet_v3_small_coco_2019_08_14/0')
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()
with open('./ssd_mobilenet_v3_small_coco_2019_08_14/mobilenet_v3_small_integer_quant.tflite', 'wb') as w:
    w.write(tflite_quant_model)
print("Integer Quantization complete! - mobilenet_v3_small_integer_quant.tflite")

# Full Integer Quantization - Input/Output=int8
converter = tf.lite.TFLiteConverter.from_saved_model('./ssd_mobilenet_v3_small_coco_2019_08_14/0')
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
tflite_quant_model = converter.convert()
with open('./ssd_mobilenet_v3_small_coco_2019_08_14/mobilenet_v3_small_full_integer_quant.tflite', 'wb') as w:
    w.write(tflite_quant_model)
print("Full Integer Quantization complete! - mobilenet_v3_small_full_integer_quant.tflite")
2-5-6-2. ssd_mobilenet_v3_large_coco_2019_08_14
import tensorflow as tf
import tensorflow_datasets as tfds
import numpy as np

def representative_dataset_gen():
  for data in raw_test_data.take(100):
    image = data['image'].numpy()
    image = tf.image.resize(image, (320, 320))
    image = image[np.newaxis,:,:,:]
    yield [image]

tf.compat.v1.enable_eager_execution()

# Generating a calibration data set
#raw_test_data, info = tfds.load(name="coco/2017", with_info=True, split="test", data_dir="./TFDS")
raw_test_data, info = tfds.load(name="coco/2017", with_info=True, split="test", data_dir="./TFDS", download=False)

# Weight Quantization - Input/Output=float32
converter = tf.lite.TFLiteConverter.from_saved_model('./ssd_mobilenet_v3_large_coco_2019_08_14/0')
converte