ImageD  v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
d_makro_softmaxvisualization.h
Go to the documentation of this file.
1 /****************************************************
2  * added: 24.01.2021 *
3  * author: David Eilenstein *
4  * contact: David.Eilenstein@stud.h-da.de.de *
5  * project: ImageD *
6  * facility: Hochschule Darmstadt, Ger *
7  ****************************************************/
8 
9 #ifndef D_MAKRO_SOFTMAXVISUALIZATION_H
10 #define D_MAKRO_SOFTMAXVISUALIZATION_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_error_handler.h>
15 #include <d_visdat_proc.h>
16 #include <d_plot.h>
17 #include <d_stat.h>
18 #include <d_viewer.h>
19 #include <d_storage.h>
20 #include <d_table.h>
21 #include <d_img_proc.h>
22 #include <d_videowriter.h>
23 
24 //Qt
25 #include <QMainWindow>
26 #include <QFileDialog>
27 #include <QFileInfo>
28 #include <QFileInfoList>
29 #include <QDir>
30 #include <QDateTime>
31 #include <QComboBox>
32 #include <QCloseEvent>
33 #include <QResizeEvent>
34 #include <QInputDialog>
35 
36 //Qt::Charts
37 #include <QChartView>
38 #include <QChart>
39 
40 //general
41 #include <iostream>
42 #include <sstream>
43 #include <fstream>
44 #include <vector>
45 #include <algorithm>
46 
47 //openCV
48 #include <opencv2/core/core.hpp>
49 #include <opencv2/highgui/highgui.hpp>
50 #include <opencv2/imgproc/imgproc.hpp>
51 
52 //namespaces
53 using namespace std;
54 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
55 #include <d_opencv_typedefs.h>
56 
57 namespace Ui {
59 }
60 
61 class D_MAKRO_SoftmaxVisualization : public QMainWindow
62 {
63  Q_OBJECT
64 
65 public:
66  explicit D_MAKRO_SoftmaxVisualization(D_Storage *pStorage, QWidget *parent = nullptr);
68 
69  void closeEvent(QCloseEvent *event);
70  void resizeEvent(QResizeEvent *event);
71  void set_ClosingPossible(bool closeable) {ClosingPossible = closeable;}
72 
73 private slots:
74 
75  void Update_Ui();
76 
77  void Update_Views();
78  void Update_Images();
79 
80  void Load_File_CSV();
81  void Data_Vec2Mat();
82  void Data_InitMats_CorrectSize(bool init_x_and_y = true);
83 
84  void Init_W();
85 
86  void Set_MatrixViewDiemsnions();
87 
88  void Proc_Step();
89  void Proc_StepDetail();
90  void Proc_StepIteration();
91  void Proc_StepEndless();
92 
93  void Proc_SaveVideos();
94  void Proc_SaveVideo();
95  void Proc_SaveVideo(QDir DIR_Save, double lambda, double delta, double fps, size_t max_iterations);
96  void Proc_SaveVideos(QDir Path, double fps, size_t max_iterations, double lambda_min, double lambda_max, double lambda_step, double delta_min_exp, double delta_max_exp, double delta_step_exp);
97 
98  void Proc_s();
99  void Proc_s_normed();
100  void Proc_classify();
101  void Proc_accuracy();
102  void Proc_L();
103  void Proc_loss();
104  void Proc_L_partial();
105  void Proc_grad();
106  void Proc_W();
107 
108  void on_pushButton_LoadData_clicked();
109  void on_pushButton_Proc_Step_clicked();
110  void on_pushButton_Proc_Iteration_clicked();
111  void on_pushButton_Proc_Endless_clicked();
112  void on_pushButton_Proc_Stop_clicked();
113 
114  void on_pushButton_ResetAndInit_clicked();
115 
116 
117  void on_checkBox_lambda_stateChanged(int arg1);
118 
119 private:
120  Ui::D_MAKRO_SoftmaxVisualization *ui;
121  bool ClosingPossible = false;
122 
123  //dimensions
124  size_t K = 3;
125  size_t M = 5;
126  size_t N = 7;
127 
128  //Matrixes
129  Mat MA_x;
130  Mat MA_y;
131  Mat MA_W;
132  Mat MA_s;
133  Mat MA_s_normed;
134  Mat MA_classification;
135  Mat MA_L;
136  Mat MA_L_partial_s;
137  Mat MA_gradient;
138 
139  Mat MA_color_x;
140  Mat MA_color_y;
141  Mat MA_color_W;
142  Mat MA_color_s;
143  Mat MA_color_s_normed;
144  Mat MA_color_classification;
145  Mat MA_color_L;
146  Mat MA_color_L_partial_s;
147  Mat MA_color_gradient;
148 
149  //Viewers
150  D_Viewer Viewer_x;
151  D_Viewer Viewer_y;
152  D_Viewer Viewer_W;
153  D_Viewer Viewer_s;
154  D_Viewer Viewer_s_normed;
155  D_Viewer Viewer_classification;
156  D_Viewer Viewer_L;
157  D_Viewer Viewer_L_partial_s;
158  D_Viewer Viewer_gradient;
159 
160  //Stuff needed to display plots
161  QChartView *pChartView_Loss;
162  QChartView *pChartView_Accuracy;
163 
164  //Storage
165  D_Storage *pStore;
166 
167  //data vectors
168  vector<vector<double>> vvData_X;
169  vector<int> vData_Y;
170 
171  //data vectors default
172  vector<vector<double>> vvData_X_default = {
173  {0.866359,0.648724,0.915475,0.774046,0.29548,0.700584,0.664165,1},
174  {0.928156,0.714069,0.950374,0.790589,0.394482,0.755629,0.54843,1},
175  {0.859534,0.628962,0.927481,0.731163,0.249574,0.689212,0.575987,1},
176  {0.827632,0.592264,0.914473,0.708229,0.227076,0.676201,0.582829,1},
177  {0.931524,0.720506,0.936026,0.82236,0.411425,0.79493,0.595197,1},
178  {0.844312,0.597158,0.880445,0.770344,0.191811,0.705399,0.671659,1},
179  {0.82187,0.566162,0.884021,0.724462,0.10111,0.681813,0.647746,1},
180  {0.826701,0.577694,0.902557,0.709167,0.16867,0.669326,0.608026,1},
181  {0.876158,0.655822,0.933991,0.751797,0.251131,0.702768,0.591723,1},
182  {0.885632,0.671388,0.938044,0.763005,0.304516,0.724269,0.589883,1},
183  {0.856731,0.627637,0.920574,0.740614,0.261042,0.68192,0.6067,1},
184  {0.89496,0.679769,0.944439,0.762103,0.322769,0.722978,0.578113,1},
185  {0.86862,0.61673,0.896961,0.766564,0.249199,0.709011,0.583487,1},
186  {0.848867,0.602751,0.899702,0.744629,0.16704,0.70259,0.59923,1},
187  {0.80779,0.565745,0.898087,0.70143,0.175321,0.658018,0.594111,1},
188  {0.833912,0.596372,0.897724,0.739999,0.198475,0.684264,0.621166,1},
189  {0.818235,0.547453,0.882017,0.703708,0.141858,0.684256,0.594548,1},
190  {0.848497,0.619851,0.932614,0.712661,0.253004,0.690594,0.552916,1},
191 
192  {0.985175,0.878277,0.950167,0.972818,0.834999,0.782597,0.92665,1},
193  {0.987205,0.878681,0.95072,0.972132,0.813235,0.799759,0.91587,1},
194  {0.987195,0.889996,0.95817,0.9694,0.831583,0.803753,0.990909,1},
195  {0.985127,0.878145,0.949495,0.97405,0.888338,0.784302,1,1},
196  {0.989203,0.885642,0.952854,0.975451,0.855294,0.805421,0.915751,1},
197  {0.988613,0.885136,0.957021,0.966423,0.813052,0.79056,0.921053,1},
198  {0.9836,0.874373,0.952222,0.964318,0.848497,0.779409,0.949367,1},
199  {0.986967,0.886581,0.956612,0.968829,0.83314,0.78104,0.993333,1},
200  {0.986627,0.859847,0.957316,0.938232,0.680274,0.76569,0.742857,1},
201  {0.985711,0.882421,0.951451,0.974771,0.868461,0.802579,0.935065,1},
202  {0.988231,0.875756,0.950679,0.968981,0.798331,0.805016,0.87557,1},
203  {0.987317,0.885967,0.955766,0.969873,0.832722,0.795875,0.973684,1},
204  {0.989393,0.887392,0.958209,0.966484,0.790791,0.787293,0.855856,1},
205  {0.988157,0.888124,0.953339,0.977189,0.892848,0.795465,1,1},
206  {0.988299,0.882066,0.95144,0.974402,0.831782,0.788393,0.9625,1},
207  {0.988234,0.878626,0.952737,0.967961,0.78283,0.780456,0.849246,1},
208  {0.986832,0.883144,0.95187,0.974712,0.888545,0.795468,0.971831,1},
209  {0.986593,0.871116,0.949967,0.965293,0.798915,0.775214,0.905847,1},
210  {0.990771,0.896778,0.95498,0.983323,0.898937,0.785882,0.944444,1},
211 
212  {0.985785,0.727501,0.957502,0.793514,0.407978,0.769593,0.497326,1},
213  {0.985101,0.703588,0.952131,0.776113,0.37786,0.767275,0.473282,1},
214  {0.983257,0.710069,0.949994,0.78679,0.391829,0.785028,0.480505,1},
215  {0.988398,0.754014,0.955316,0.826201,0.488928,0.74822,0.515385,1},
216  {0.98551,0.76665,0.945564,0.857463,0.504937,0.820216,0.595652,1},
217  {0.989224,0.79441,0.953551,0.873689,0.540131,0.771232,0.623596,1},
218  {0.949833,0.597741,0.948322,0.664664,0.265085,0.774013,0.375053,1},
219  {0.983959,0.668986,0.947537,0.745117,0.378312,0.760697,0.451801,1},
220  {0.983792,0.71889,0.954615,0.788872,0.394541,0.730556,0.50309,1},
221  {0.984208,0.660396,0.96245,0.712933,0.329624,0.786978,0.391196,1},
222  {0.985829,0.719326,0.948457,0.799633,0.429681,0.738559,0.498866,1},
223  {0.985701,0.668001,0.946639,0.745433,0.374695,0.782016,0.413174,1},
224  {0.983176,0.725491,0.94679,0.809327,0.440624,0.758519,0.536817,1},
225  {0.985277,0.678122,0.948193,0.754247,0.365632,0.760595,0.449575,1},
226  {0.978861,0.70589,0.949681,0.782674,0.430535,0.716313,0.54386,1},
227  {0.976651,0.685715,0.947664,0.763545,0.366541,0.762839,0.470523,1},
228  {0.986969,0.76173,0.95535,0.834594,0.471337,0.771196,0.52459,1},
229  {0.987792,0.753577,0.951862,0.831726,0.470487,0.771024,0.51444,1},
230  {0.988111,0.727022,0.946377,0.811745,0.447654,0.760482,0.518008,1}};
231 
232  vector<int> vData_Y_default = {
233  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
234  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
235  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
236 
237  //loss/accuracy
238  double loss = 0;
239  double accuracy = 0;
240  vector<double> vLoss;
241  vector<double> vAccuracy;
242  size_t iteration = 0;
243 
244  //Statusbar
245  QLabel *pQL_ValueUnderCursor;
246  QLabel *pQL_CursorPosition;
247 
248  //proc chain
249  bool endless_proc_stop = false;
250  size_t step_next = STEP_s;
251  enum STEP {
252  STEP_s,
253  STEP_s_norm,
254  STEP_classify,
255  STEP_accuracy,
256  STEP_L,
257  STEP_loss,
258  STEP_L_partial,
259  STEP_grad,
260  STEP_W,
261  STEP_NUMBER_OF
262  };
263 };
264 
265 #endif // D_MAKRO_SOFTMAXVISUALIZATION_H
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
D_Storage::set_dir_M_Softmax
void set_dir_M_Softmax(QString path)
Definition: d_storage.h:121
ER_okay
@ ER_okay
Definition: d_enum.h:133
c_E
const double c_E
Definition: d_enum.h:2543
D_Viewer::Update_View
void Update_View()
D_Viewer::Update_View Starts the workflow to show an image.
Definition: d_viewer.cpp:2096
D_MAKRO_SoftmaxVisualization::D_MAKRO_SoftmaxVisualization
D_MAKRO_SoftmaxVisualization(D_Storage *pStorage, QWidget *parent=nullptr)
Definition: d_makro_softmaxvisualization.cpp:12
c_AXE_TRANS_LOG_10
@ c_AXE_TRANS_LOG_10
Definition: d_enum.h:2160
D_Viewer::Set_VisTrafo_Anchor
void Set_VisTrafo_Anchor(double anchor=127.5)
Definition: d_viewer.h:175
D_MAKRO_SoftmaxVisualization
Definition: d_makro_softmaxvisualization.h:62
d_viewer.h
d_plot.h
D_VideoWriter::set_Size
int set_Size(Size size_out)
Definition: d_videowriter.cpp:16
D_Viewer::Set_Aspect_Mode
void Set_Aspect_Mode(bool keep)
D_Viewer::Set_Aspect_Mode Set aspect ratio handling mode to fit an image to a viewer of different siz...
Definition: d_viewer.cpp:2227
D_Viewer
The D_Viewer class Display images (Mat) in QGraphicsView in the user interface.
Definition: d_viewer.h:58
D_Storage
The D_Storage class Used for storing data. There is only one instance in D_MainWindow .
Definition: d_storage.h:49
D_VideoWriter::init_VideoWriter
int init_VideoWriter()
Definition: d_videowriter.cpp:67
c_VIS_TRAFO_RANGE_FIXED
@ c_VIS_TRAFO_RANGE_FIXED
Definition: d_enum.h:724
D_Viewer::Update_Image
void Update_Image(Mat *MA_new)
D_Viewer::Update_Image Set and show image.
Definition: d_viewer.cpp:2079
D_MAKRO_SoftmaxVisualization::resizeEvent
void resizeEvent(QResizeEvent *event)
Definition: d_makro_softmaxvisualization.cpp:123
c_AXE_TRANS_LIN
@ c_AXE_TRANS_LIN
Definition: d_enum.h:2157
d_table.h
D_Viewer::Set_VisTrafo_Mode_Anchor
void Set_VisTrafo_Mode_Anchor(int mode=c_VIS_TRAFO_ANCHOR_DYNAMIC)
Definition: d_viewer.h:179
D_Viewer::Set_Transformation_Mode
void Set_Transformation_Mode(bool smooth)
D_Viewer::Set_Transformation_Mode Set transformation mode to fit an image to a viewer of different si...
Definition: d_viewer.cpp:2213
D_MAKRO_SoftmaxVisualization::set_ClosingPossible
void set_ClosingPossible(bool closeable)
Definition: d_makro_softmaxvisualization.h:71
D_Img_Proc::Convert_QImage_to_Mat
static int Convert_QImage_to_Mat(Mat *pMA_Out, QImage *pQI_In)
Definition: d_img_proc.cpp:1308
D_Viewer::Set_VisTrafo_Mode_Range
void Set_VisTrafo_Mode_Range(int mode=c_VIS_TRAFO_RANGE_DYNAMIC)
Definition: d_viewer.h:180
D_VideoWriter
The D_VideoWriter class Creates a video from a sequence of images and saves it as a file.
Definition: d_videowriter.h:53
d_img_proc.h
D_Viewer::Set_VisTrafo_ActiveInt
void Set_VisTrafo_ActiveInt(int active=1)
Definition: d_viewer.h:168
D_VideoWriter::EndVideoWriting
int EndVideoWriting()
Definition: d_videowriter.cpp:133
D_VideoWriter::set_PathOut
int set_PathOut(string S_OutPath)
Definition: d_videowriter.cpp:140
D_MAKRO_SoftmaxVisualization::~D_MAKRO_SoftmaxVisualization
~D_MAKRO_SoftmaxVisualization()
Definition: d_makro_softmaxvisualization.cpp:104
D_Img_Proc::Highlight_NumericalProblems
static int Highlight_NumericalProblems(Mat *pMA_Out, Mat *pMA_In)
Definition: d_img_proc.cpp:19450
D_Viewer::Set_VisTrafo_Range
void Set_VisTrafo_Range(double range=127.5)
Definition: d_viewer.h:176
D_VideoWriter::set_FPS
int set_FPS(double fps)
Definition: d_videowriter.cpp:42
D_MAKRO_SoftmaxVisualization::closeEvent
void closeEvent(QCloseEvent *event)
Definition: d_makro_softmaxvisualization.cpp:109
D_Viewer::set_GV
void set_GV(QGraphicsView *GV_ui)
Definition: d_viewer.cpp:49
Ui
Definition: d_analysiswindow.h:58
D_Storage::dir_M_Softmax
QDir * dir_M_Softmax()
Definition: d_storage.h:93
d_storage.h
D_Plot::Plot_Line_XY_Single
static int Plot_Line_XY_Single(QChartView *pChartView, vector< double > v_XY_Data, QString name_title, QString name_series, QString name_x, QString name_y, int x_trans=c_AXE_TRANS_LIN, int y_trans=c_AXE_TRANS_LIN, bool dots_visible=false, bool man_axis_style_x=false, bool man_axis_style_y=false, double man_min_x=0, double man_max_x=1, double man_min_y=0, double man_max_y=1, int ticks_x=AXE_TICK_COUNT_MAJOR_DEFAULT, int ticks_y=AXE_TICK_COUNT_MAJOR_DEFAULT)
Definition: d_plot.cpp:3432
d_opencv_typedefs.h
d_enum.h
D_VideoWriter::AddFrame
int AddFrame(Mat frame2add)
Definition: d_videowriter.cpp:101
d_error_handler.h
D_VideoWriter::is_Init
bool is_Init()
Definition: d_videowriter.cpp:90
d_videowriter.h
D_VideoWriter::set_isColor
int set_isColor(bool is_color)
Definition: d_videowriter.cpp:56
d_visdat_proc.h
c_VIS_TRAFO_ANCHOR_BLACK
@ c_VIS_TRAFO_ANCHOR_BLACK
Definition: d_enum.h:711
d_makro_softmaxvisualization.h
d_stat.h