tfcoreml
TesorFlow(TF)toCoreMLCoverter
Depedeciestesorflow>=1.5.0
coremltools>=0.8
umpy>=1.6.2
protobuf>=3.1.0
six>=1.10.0
IstallatioIstallFromSourceTogetthelatestversioofthecoverter,cloethisrepoadistallfromsource.Thatis,
git cloe https://github.com/tf-coreml/tf-coreml.gitcd tf-coremlToistallasapackagewithpip,eitherru(attherootdirectory):
pip istall -e .orru:
pytho setup.py bdist_wheelThiswillgeerateapipistallablewheelisidethedistdirectory.
IstallFromPyPIToistallthePypipackage:
pip istall -U tfcoremlUsageSeeiPythootebooksithedirectoryexamples/forexamplesofhowtousethecoverter.
ThefollowigargumetsarerequiredbytheCoreMLcoverter:
pathtothefroze.pbgraphfiletobecoverted
pathwherethe.mlmodelshouldbewritte
alistofoutputtesoramespresetitheTFgraph
adictioaryofiputamesadtheirshapes(aslistofitegers).Thisisolyrequiredifiputtesors'shapesareotfullydefiedithefroze.pbfile(e.g.theycotaiNoeor?)
Notethatthefroze.pbfilecabeobtaiedfromthecheckpoitadgraphdeffilesbyusigthetesorflow.pytho.tools.freeze_graphutility.FordetailsoffreezigTFgraphs,pleaserefertotheTesorFlowdocumetatioadtheotebooksidirectoryexamples/ithisrepo.Therearescriptsitheutils/directoryforvisualizigadwritigoutatextsummaryofagivefrozeTFgraph.Thiscouldbeusefulidetermiigtheiput/outputamesadshapes.AotherusefultoolforvisualizigfrozeTFgraphsisNetro.
Thereareadditioalargumetsthatthecovertercatake.Fordetails,refertothefullfuctiodefiitiohere.
Forexample:
Wheiputshapesarefullydetermiedithefroze.pbfile:
import tfcoreml as tf_covertertf_coverter.covert(tf_model_path = 'my_model.pb', mlmodel_path = 'my_model.mlmodel', output_feature_ames = ['softmax:0'])Wheiputshapesareotfullyspecifiedithefroze.pbfile:
import tfcoreml as tf_covertertf_coverter.covert(tf_model_path = 'my_model.pb', mlmodel_path = 'my_model.mlmodel', output_feature_ames = ['softmax:0'], iput_ame_shape_dict = {'iput:0' : [1, 227, 227, 3]})Followigtopicsarediscussedithejupyterotebooksudertheexamples/folder:
iceptio_v1_preprocessig_steps.ipyb:Howtogeerateaclassifiermodelwithimageiputtypesadtheimportaceofproperlysettigthepreprocessigparameters.
iceptio_v3.ipyb:Howtostripthe"DecodeJpeg"opfromtheTFgraphtoprepareitforCoreMLcoversio.
liear_mist_example.ipyb:HowtogetafrozegraphfromthecheckpoitadgraphdescriptiofilesgeeratedbytraiigiTF.
ssd_example.ipyb:HowtoextractaportiooftheTFgraphthatcabecoverted,fromtheoverallgraphthatmayhaveusupportedops.
style_trasfer_example.ipyb:HowtoeditaCoreMLmodeltogetaimageoutputtype(bydefaulttheoutputsareMultiArrays).
custom_layer_examples.ipyb:AfewexamplestodemostratetheprocessofaddigcustomCoreMLlayersforusupportedTFops.
SupportedOpsListofTesorFlowopsthataresupportedcurretly(seetfcoreml/_ops_to_layers.py):
Abs
Add
ArgMax
AvgPool
BatchNormWithGlobalNormalizatio
BatchToSpaceND*
BiasAdd
CocatV2,Cocat
Cost
Cov2D
Cov2DBackpropIput
CropAdResize*
DepthToSpace
DepthwiseCov2dNative
Elu
Exp
ExtractImagePatches
FusedBatchNorm
Idetity
Log
LRN
MatMul
Max*
Maximum
MaxPool
Mea*
Mi*
Miimum
MirrorPad
Mul
Neg
OeHot
Pad
Placeholder
Pow*
Prod*
RealDiv
Reciprocal
Relu
Relu6
Reshape*
ResizeNearestNeighbor
ResizeBiliear
Rsqrt
Sigmoid
Slice*
Softmax
SpaceToBatchND*
SpaceToDepth
Split*
Sqrt
Square
SquaredDifferece
StridedSlice*
Sub
Sum*
Tah
Traspose*
Notethatcertaiparameterizatiosoftheseopsmayotbefullysupported.Foropsmarkedwithaasterisk,olyveryspecificusagepattersaresupported.Iadditio,thereareseveralotherops(otlistedabove)thatareskippedbythecoverterastheygeerallyhaveoeffectdurigiferece.Kidlyrefertothefilestfcoreml/_ops_to_layers.pyadtfcoreml/_layers.pyforfulldetails.Forusupportedopsorcofiguratios,thecustomlayerfeatureofCoreMLcabeused.Fordetails,refertotheexamples/custom_layer_examples.ipybotebook.
Scriptsforcovertigseveralofthefollowigpretraiedmodelscabefoudattests/test_pretraied_models.py.Othermodelswithsimilarstructuresadsupportedopscabecoverted.BelowisalistofpubliclyavailableTesorFlowfrozemodelsthatcabecovertedwiththiscoverter:
Iceptiov1(Slim)
Iceptiov2(Slim)
Iceptiov3(Slim)
Iceptiov4(Slim)
Iceptiov3(o-Slim)*
Iceptio/ResNetv2(Slim)
MobileNetvariatios(Slim):
Imagesize:128(1,2,3,4)
Imagesize:160(1,2,3,4)
Imagesize:192(1,2,3,4)
Imagesize:224(1,2,3,4)
Imagestylizatioetwork+
MobileetSSD*
*CovertigthesemodelsrequiresextrastepstoextractsubgraphsfromtheTFfrozegraphs.Seeexamples/fordetails.<br>+TherearekowissuesruigimagestylizatioetworkoGPU.(SeeIssue#26)
Limitatiostfcoremlcoverterhasthefollowigcostraits:
TFgraphmustbecyclefree(cyclesaregeerallycreatedduetocotrolflowopslikeif,while,map,etc.)
MusthaveNHWCorderig(Batchsize,Height,Width,Chaels)forimagefeaturemaptesors
Musthavetesorswithraklessthaorequalto4(le(tesor.shape)<=4)
ThecoverterproducesCoreMLmodelwithfloatvalues.AquatizedTFgraph(suchasthestyletrasferetworklikedabove)getscovertedtoafloatCoreMLmodel
RuigUitTestsIordertoruuittests,youeedpytest.
pip istall pytestToaddaewuittest,addittothetests/folder.Makesureyouamethefilewitha'test'astheprefix.Torualluittests,avigatetothetests/folderadru
pytestDirectories"tfcoreml":thetfcoremlpackage
"examples":examplestousethiscoverter
"tests":uittests
"utils":geeralscriptsforgraphispectio
LiceseApacheLicese2.0







评论