// 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); } } } }