Program Listing for File OpenVINO.hpp

Return to documentation for file (include/depthai/openvino/OpenVINO.hpp)

#pragma once

#include <algorithm>
#include <exception>
#include <map>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>

#include "depthai-shared/common/TensorInfo.hpp"
#include "depthai/utility/Path.hpp"

namespace dai {

class OpenVINO {
   public:
    enum Version { VERSION_2020_3, VERSION_2020_4, VERSION_2021_1, VERSION_2021_2, VERSION_2021_3, VERSION_2021_4, VERSION_2022_1, VERSION_UNIVERSAL };

    struct Blob {
        Blob(std::vector<uint8_t> data);
        Blob(const dai::Path& path);

        Version version;
        std::unordered_map<std::string, TensorInfo> networkInputs;
        std::unordered_map<std::string, TensorInfo> networkOutputs;
        uint32_t stageCount = 0;
        uint32_t numShaves = 0;
        uint32_t numSlices = 0;
        std::vector<uint8_t> data;
    };

    constexpr static const Version DEFAULT_VERSION = VERSION_2022_1;

    static std::vector<Version> getVersions();

    static std::string getVersionName(Version version);

    static Version parseVersionName(const std::string& versionString);

    static std::vector<Version> getBlobSupportedVersions(std::uint32_t majorVersion, std::uint32_t minorVersion);

    static Version getBlobLatestSupportedVersion(std::uint32_t majorVersion, std::uint32_t minorVersion);

    static Version getBlobVersion(std::uint32_t majorVersion, std::uint32_t minorVersion);

    static bool areVersionsBlobCompatible(Version v1, Version v2);

   private:
    static const std::map<std::pair<std::uint32_t, std::uint32_t>, Version> blobVersionToOpenvinoGuessMapping;
    static const std::map<std::pair<std::uint32_t, std::uint32_t>, std::vector<Version>> blobVersionToOpenvinoMapping;
};

}  // namespace dai