# Crash on load - MoveNet tensorflow lite (tflite) model

**URL:** <https://forums.openmv.io/t/crash-on-load-movenet-tensorflow-lite-tflite-model/8059>\
**Category:** OpenMV Boards\
**Created:** [March 9, 2023, 8:35pm UTC](https://forums.openmv.io/t/crash-on-load-movenet-tensorflow-lite-tflite-model/8059 "2023-03-09T20:35:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![JHS](https://avatars.discourse-cdn.com/v4/letter/j/c67d28/32.png) [@JHS](https://forums.openmv.io/u/JHS)\
**Post date:** [March 9, 2023, 8:35pm UTC](https://forums.openmv.io/t/crash-on-load-movenet-tensorflow-lite-tflite-model/8059/1 "2023-03-09T20:35:05Z")

</div>

I am trying to load/run the MoveNet tensorflow lite model published by google on an OpenMV H7+ board.

As of now, I get a hard system crash / reboot with no error message when it gets to loading the tflite model file. The file is offered in an int8 model (singlepose lighting int8) on tfhub:

[TensorFlow Hub (tfhub.dev)](https://tfhub.dev/google/movenet/singlepose/lightning/4)

I did find this OpenMV forum post describing a similar phenomenon. In that case, the error was a datatype error:  
[Crash without error message when loading tflite model - OpenMV Products - OpenMV Forums](https://forums.openmv.io/t/crash-without-error-message-when-loading-tflite-model/1991)

Does anyone have any advice on getting MoveNet to load/run on an OpenMV H7+ ? I did get it running on a Rasp Pi 4B.

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![kwagyeman](https://yyz1.discourse-cdn.com/flex029/user_avatar/forums.openmv.io/kwagyeman/32/4_2.png) [@kwagyeman](https://forums.openmv.io/u/kwagyeman)\
**Post date:** [March 9, 2023, 9:02pm UTC](https://forums.openmv.io/t/crash-on-load-movenet-tensorflow-lite-tflite-model/8059/2 "2023-03-09T21:02:46Z")

</div>

It probably can’t run on our device. We specifically support networks generated by Edge Impulse. Any other types use operators that we don’t have in the TensorFlow library we have compiled.

---

<div class="post-metadata">

**Author:** ![JHS](https://avatars.discourse-cdn.com/v4/letter/j/c67d28/32.png) [@JHS](https://forums.openmv.io/u/JHS)\
**Post date:** [March 9, 2023, 9:24pm UTC](https://forums.openmv.io/t/crash-on-load-movenet-tensorflow-lite-tflite-model/8059/3 "2023-03-09T21:24:31Z")

</div>

It would be nice if the OpenMV IDE could somehow throw a labelled error when a tflite with a disallowed operation type was included. I don’t know how to inspect the tflite file for specific operations used.

To be clear, my understanding is that TFLite operations listed here (without the comment bars) are the supported-operation list:

```
static void libtf_init_op_resolver(tflite::MicroMutableOpResolver<LIBTF_MAX_OPS> &resolver)
{
    // resolver.AddAbs();
    resolver.AddAdd();
    resolver.AddAddN();
    // resolver.AddArgMax();
    // resolver.AddArgMin();
    // resolver.AddAssignVariable();
    resolver.AddAveragePool2D();
    // resolver.AddBatchToSpaceNd();
    // resolver.AddCallOnce();
    // resolver.AddCeil();
    // resolver.AddConcatenation();
    resolver.AddConv2D();
    // resolver.AddCos();
    // resolver.AddCumSum();
    // resolver.AddDepthToSpace();
    resolver.AddDepthwiseConv2D();
    // resolver.AddDequantize();
    // resolver.AddDetectionPostprocess();
    // resolver.AddElu();
    // resolver.AddEqual();
    // resolver.AddEthosU();
    // resolver.AddExpandDims();
    // resolver.AddFloor();
    // resolver.AddFloorDiv();
    // resolver.AddFloorMod();
    resolver.AddFullyConnected();
    // resolver.AddGreater();
    // resolver.AddGreaterEqual();
    // resolver.AddHardSwish();
    // resolver.AddL2Normalization();
    // resolver.AddL2Pool2D();
    resolver.AddLeakyRelu();
    // resolver.AddLess();
    // resolver.AddLessEqual();
    // resolver.AddLog();
    // resolver.AddLogicalAnd();
    // resolver.AddLogicalNot();
    // resolver.AddLogicalOr();
    resolver.AddLogistic();
    // resolver.AddMaximum();
    resolver.AddMaxPool2D();
    resolver.AddMean();
    // resolver.AddMinimum();
    // resolver.AddMul();
    // resolver.AddNeg();
    // resolver.AddNotEqual();
    // resolver.AddPack();
    resolver.AddPad();
    // resolver.AddPadV2();
    // resolver.AddPrelu();
    // resolver.AddQuantize();
    // resolver.AddReadVariable();
    // resolver.AddReduceMax();
    resolver.AddRelu();
    resolver.AddRelu6();
    resolver.AddReshape();
    // resolver.AddResizeBilinear();
    // resolver.AddResizeNearestNeighbor();
    // resolver.AddRound();
    // resolver.AddRsqrt();
    resolver.AddShape();
    // resolver.AddSin();
    resolver.AddSoftmax();
    // resolver.AddSpaceToBatchNd();
    // resolver.AddSpaceToDepth();
    // resolver.AddSplit();
    // resolver.AddSplitV();
    // resolver.AddSqrt();
    // resolver.AddSquare();
    // resolver.AddSqueeze();
    // resolver.AddStridedSlice();
    resolver.AddSub();
    // resolver.AddSvdf();
    resolver.AddTanh();
    // resolver.AddTranspose();
    // resolver.AddTransposeConv();
    // resolver.AddUnpack();
    // resolver.AddVarHandle();
}

```

---

<div class="post-metadata">

**Author:** ![kwagyeman](https://yyz1.discourse-cdn.com/flex029/user_avatar/forums.openmv.io/kwagyeman/32/4_2.png) [@kwagyeman](https://forums.openmv.io/u/kwagyeman)\
**Post date:** [March 9, 2023, 10:57pm UTC](https://forums.openmv.io/t/crash-on-load-movenet-tensorflow-lite-tflite-model/8059/4 "2023-03-09T22:57:02Z")

</div>

It normally would. However, the TensorFlow code by Google is of such a low quality that it just segfaults.

I suppose we can do a patch on the library to support this.
