神經網絡是模仿人腦神經系統的組成方式與思惟過程而構成的信息處理系統,具備非線性、自學性、容錯性、聯想記憶和能夠訓練性等特色。在神經網絡中,知識和信息的傳遞是由神經元的相互鏈接來實現的,分類時採用非參數方法,不需對目標的機率分佈函數做某種假定或估計,所以網絡具有了良好的適應能力和複雜的映射能力。神經網絡的運行包括兩個階段:一是訓練或學習階段( Training or Learning Phase),向網絡提供一系列的輸入-輸出數據組,經過數值計算和參數優化,不斷調整網絡節點的鏈接權重和閾值,直到從給定的輸入能產生指望輸出爲止;二是預測(應用)階段( Generalization Phase),用訓練好的網絡對未知的數據進行預測。算法
PIE SDK支持算法功能的執行,下面對神經網絡聚類算法功能進行介紹。網絡
2.1. 實現步驟ide
第一步函數 |
算法參數設置學習 |
第二步測試 |
算法執行優化 |
第三步編碼 |
結果顯示spa |
2.2. 算法參數3d
算法名稱 |
神經網絡聚類 |
|
C#算法DLL |
PIE.CommonAlgo.dll |
|
C#算法名稱 |
PIE.CommonAlgo.NeuralNetworkClusterAlgo |
|
參數結構體 |
NeuralNetworkCluster_Exchange_Info |
|
參數說明 |
||
InputFilePath |
String |
輸入文件(*.tif;*.tiff; *.img) |
OutputFilePath |
String |
輸出文件路徑 (*.tif;*.tiff; *.img) |
AlgType |
Int |
分類方法(0表明交互傳播網絡;1表明自組織特徵映射網絡) |
ClassNum |
Int |
分類數(大於0正整數,默認5) |
Windowsize |
Int |
窗口大小(0表明1*1窗口,1表明3*3窗口,2表明5*5窗口) |
Traintimes |
Int |
迭代次數(大於0的正整數,默認10000) |
Ispeed |
Int |
收斂速率(大於0小於等於100的正整數) |
FuncName |
String |
功能名稱 |
FileTypeCode |
String |
根據輸出類型得到文件編碼類型 .tif/.tiff——GTiff .img—————HFA 其餘—————ENVI |
ListBands |
IList<Int> |
輸入影像的波段(至少選擇兩個波段,{ 0, 1, 2, 3 }) |
項目路徑 |
百度雲盤地址下/PIE示例程序/10.算法調用/圖像處理/10.算法調用/圖像處理/ ImageProcessing. NeuralNetworkClusterAlgo |
數據路徑 |
百度雲盤地址下/PIE示例數據/柵格數據/01.GF1/GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff |
視頻路徑 |
百度雲盤地址下/PIE視頻教程/10.算法調用/圖像處理/神經網絡聚類算法.avi |
示例代碼 |
|
![]() 1 /// <summary> 2 /// 神經網絡聚類算法測試,本算法實現了將GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff進行神經網絡聚類 3 ///預期類數爲5,分類方法爲交互傳播網絡,窗口大小爲1*1窗口,迭代次數爲10000,收斂速率爲100 4 /// </summary> 5 public override void OnClick() 6 { 7 #region 一、參數設置 8 PIE.CommonAlgo.NeuralNetworkCluster_Exchange_Info info = new PIE.CommonAlgo.NeuralNetworkCluster_Exchange_Info(); 9 10 info.InputFilePath = @"D:\Data\GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff"; 11 info.OutputFilePath = @"D:\Data\ip_result3.tif"; 12 info.ClassNum = 5; 13 info.AlgType = 0; 14 info.Windowsize = 0; 15 info.Traintimes = 10000; 16 info.Ispeed = 100; 17 info.FileTypeCode = "Gtiff"; 18 info.LowBands = new List<int> { 0, 1, 2, 3 }; 19 20 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.NeuralNetworkClusterAlgo"); 21 if (algo == null) return; 22 #endregion 23 //二、算法執行 24 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents; 25 algo.Name = " 神經網絡聚類"; 26 algo.Params = info; 27 bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo); 28 //三、結果顯示 29 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result3.tif"); 30 m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 31 } |