Example #1
0
    // Update all FM data to show on input or output canvas from different layers
    private void UpdateFms(string layertype, string inOrOut)
    {
        switch (layertype)
        {
        case "conv":
        case "pool":
        case "fc":
            break;

        default:
            Debug.Log("CanvasController - UpdateFms: invalid layertype: " + layertype + ". Valid layertypes: conv, pool, fc");
            return;
        }

        Sprite[] fmSprites;
        Button[] fmBtns;
        int      fmNum = 0;

        // Check if fms for input or output should be updated
        // load fms from Sprite Loader for input and/or output
        switch (inOrOut)
        {
        case "in":
            // if selectedLayer is first conv layer no fms have to be loaded
            // input is input image
            if (selectedLayer.GetLayerID() == 1)
            {
                return;
            }

            string layername = layers[selectedLayer.GetLayerID() - 1].GetLayerName();
            Debug.Log("Vorherige Layer: " + layername);

            fmSprites = spriteLoader.GetFmSprites(layername);
            fmBtns    = fmBtnsIn;
            fmNum     = selectedLayer.GetInputLength();

            // Set text for number of input fms
            inNum.text = fmNum.ToString() + " Feature Maps";
            break;

        case "out":
            fmSprites = spriteLoader.GetFmSprites(selectedLayer.GetLayerName());
            fmBtns    = fmBtnsOut;
            fmNum     = selectedLayer.GetOutputLength();

            // Set text for number of output fms
            outNum.text = fmNum.ToString() + " Feature Maps";
            break;

        default:
            fmSprites = new Sprite[1];
            fmBtns    = new Button[1];
            break;
        }

        if (fmSprites.Length < 2)
        {
            Debug.Log("CanvasController - UpdateFms(): No fm sprites loaded");
            return;
        }
        if (fmBtns.Length < 2)
        {
            Debug.Log("CanvasController - UpdateFms(): No Buttons for fms found");
            return;
        }

        // Add loaded fm sprites from resources to buttons
        if (fmBtns != null)
        {
            // depending on input ID show the fms for selected input image
            switch (selectedInput)
            {
            case 0:
                for (int i = 0; i < fmNum; i++)
                {
                    fmBtns[i].image.sprite = fmSprites[i];
                    fmBtns[i].gameObject.SetActive(true);
                }
                break;

            case 1:
                for (int i = fmNum, j = 0; i < (fmNum * 2); i++, j++)
                {
                    fmBtns[j].image.sprite = fmSprites[i];
                    fmBtns[j].gameObject.SetActive(true);
                }
                break;

            case 2:
                for (int i = (fmNum * 2), j = 0; i < (fmNum * 3); i++, j++)
                {
                    fmBtns[j].image.sprite = fmSprites[i];
                    fmBtns[j].gameObject.SetActive(true);
                }
                break;

            case 3:
                for (int i = (fmNum * 3), j = 0; i < (fmNum * 4); i++, j++)
                {
                    fmBtns[j].image.sprite = fmSprites[i];
                    fmBtns[j].gameObject.SetActive(true);
                }
                break;

            case 4:
                for (int i = (fmNum * 4), j = 0; i < (fmNum * 5); i++, j++)
                {
                    fmBtns[j].image.sprite = fmSprites[i];
                    fmBtns[j].gameObject.SetActive(true);
                }
                break;

            case 5:
                for (int i = (fmNum * 5), j = 0; i < (fmNum * 6); i++, j++)
                {
                    fmBtns[j].image.sprite = fmSprites[i];
                    fmBtns[j].gameObject.SetActive(true);
                }
                break;

            default:
                Debug.Log("No valid input index selected");
                break;
            }

            // If there are more Buttons than sprites set remaining buttons to inactive
            if (fmBtns.Length > fmNum)
            {
                for (int i = fmNum; i < fmBtns.Length; i++)
                {
                    fmBtns[i].gameObject.SetActive(false);
                }
            }
        }
    }