ModelAsset.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/Asset/AssetCommon.h>
  10. #include <AzCore/Asset/AssetSerializer.h>
  11. #include <AzNetworking/Serialization/ISerializer.h>
  12. #include <AzFramework/Asset/GenericAssetHandler.h>
  13. #include <Models/Layer.h>
  14. namespace MachineLearning
  15. {
  16. class ModelAsset final
  17. : public AZ::Data::AssetData
  18. {
  19. public:
  20. static constexpr inline const char* DisplayName = "ModelAsset";
  21. static constexpr inline const char* Extension = "mlmodel";
  22. static constexpr inline const char* Group = "MachineLearning";
  23. AZ_RTTI(ModelAsset, "{4D8D3782-DC3A-499A-A59D-542B85F5EDE9}", AZ::Data::AssetData);
  24. AZ_CLASS_ALLOCATOR(ModelAsset, AZ::SystemAllocator);
  25. static void Reflect(AZ::ReflectContext* context);
  26. ~ModelAsset() = default;
  27. //! Base serialize method for all serializable structures or classes to implement.
  28. //! @param serializer ISerializer instance to use for serialization
  29. //! @return boolean true for success, false for serialization failure
  30. bool Serialize(AzNetworking::ISerializer& serializer);
  31. //! Returns the estimated size required to serialize this model.
  32. AZStd::size_t EstimateSerializeSize() const;
  33. //! The model name.
  34. AZStd::string m_name;
  35. //! The number of neurons in the activation layer.
  36. AZStd::size_t m_activationCount = 0;
  37. //! The set of layers in the network.
  38. AZStd::vector<Layer> m_layers;
  39. };
  40. class ModelAssetHandler final
  41. : public AzFramework::GenericAssetHandler<ModelAsset>
  42. {
  43. public:
  44. ModelAssetHandler();
  45. private:
  46. AZ::Data::AssetHandler::LoadResult LoadAssetData
  47. (
  48. const AZ::Data::Asset<AZ::Data::AssetData>& asset,
  49. AZStd::shared_ptr<AZ::Data::AssetDataStream> stream,
  50. const AZ::Data::AssetFilterCB& assetLoadFilterCB
  51. ) override;
  52. bool SaveAssetData(const AZ::Data::Asset<AZ::Data::AssetData>& asset, AZ::IO::GenericStream* stream) override;
  53. };
  54. }