diff --git a/.gitignore b/.gitignore index f42bd93..0297ae9 100644 --- a/.gitignore +++ b/.gitignore @@ -90,12 +90,16 @@ fabric.properties !/20240410RGBtest1/super-tomato/defect_mask.bmp !/20240410RGBtest1/super-tomato/prediction.png /20240529RGBtest3/data/ -/20240627Actual_deployed/.idea/ -/20240627Actual_deployed/qt_test/ -/20240627Actual_deployed/封装exe/ -/20240627Actual_deployed/qt_test/ -/20240627Actual_deployed/qt_test/PF/ -/20240627Actual_deployed/image/ -/20240627Actual_deployed/pfzc/ -/20240627Actual_deployed/pfzz/ +/20240627test4/.idea/ +/20240627test4/qt_test/ +/20240627test4/封装exe/ +/20240627test4/qt_test/ +/20240627test4/qt_test/PF/ +/20240627test4/image/ +/20240627test4/pfzc/ +/20240627test4/pfzz/ /20240529RGBtest3/原图108测试过程图/ +/20240627test4/20240718test/ +/20240627test4/testimg_result/ +/20240627test4/zz_test/ +/20240627test4/误识别测试20240714/ diff --git a/.idea/supermachine--tomato-passion_fruit.iml b/.idea/supermachine--tomato-passion_fruit.iml index aab2221..79274b9 100644 --- a/.idea/supermachine--tomato-passion_fruit.iml +++ b/.idea/supermachine--tomato-passion_fruit.iml @@ -3,29 +3,29 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/20240627Actual_deployed/requirements.txt b/20240627Actual_deployed/requirements.txt deleted file mode 100644 index ac73d32..0000000 --- a/20240627Actual_deployed/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -joblib==1.2.0 -numpy==1.25.0 -Pillow==9.4.0 -pywin32==305 -scikit_learn==1.2.2 -opencv-python==4.6.0.66 -scikit-learn==1.2.2 \ No newline at end of file diff --git a/20240627Actual_deployed/tomato-passion_fruit.log b/20240627Actual_deployed/tomato-passion_fruit.log deleted file mode 100644 index 3935e3e..0000000 --- a/20240627Actual_deployed/tomato-passion_fruit.log +++ /dev/null @@ -1,166 +0,0 @@ -2024-06-28 11:30:05,483 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 11:35:36,240 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 11:36:24,181 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 11:51:27,970 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-06-28 11:51:27,971 main.py[line:82] - ERROR - 处理失败 -2024-06-28 11:51:27,977 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 11:55:18,328 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 11:59:41,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:03:47,921 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-06-28 12:03:47,922 main.py[line:82] - ERROR - 处理失败 -2024-06-28 12:03:47,922 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:06:28,421 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:12:04,287 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:14:07,667 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:15:23,671 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:17:16,305 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:18:43,577 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:20:46,118 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:22:39,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 12:26:07,385 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 14:52:26,065 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 14:55:54,058 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 14:56:51,979 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 15:18:10,133 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 15:20:59,777 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 15:23:38,138 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 15:31:44,479 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 15:48:30,938 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 16:03:04,564 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 16:07:31,464 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 16:25:01,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 16:29:57,905 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 16:49:10,627 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 16:50:30,739 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 16:52:40,850 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 17:01:43,963 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 17:05:56,524 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 17:09:33,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 17:12:01,788 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 17:13:27,639 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-28 17:20:43,034 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 15:43:42,727 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 15:52:02,852 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 16:08:30,885 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 16:21:17,909 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 16:31:42,830 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-06-29 16:31:42,831 main.py[line:92] - ERROR - 处理失败 -2024-06-29 16:31:42,831 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 16:35:42,748 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 16:44:57,631 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 16:49:04,069 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 16:53:18,366 utils.py[line:158] - ERROR - 图像指令转换失败,数据长度错误 -2024-06-29 17:17:24,471 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 17:44:57,312 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 17:48:31,343 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-06-29 17:48:31,344 main.py[line:95] - ERROR - 处理失败 -2024-06-29 17:48:31,344 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 17:52:27,224 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-29 18:40:34,394 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-06-29 18:40:34,395 main.py[line:95] - ERROR - 处理失败 -2024-06-29 18:40:34,395 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-30 12:45:15,007 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-30 12:57:37,170 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-30 13:01:35,413 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-30 14:14:42,010 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-30 14:24:06,845 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-06-30 14:35:07,953 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 15:27:37,749 utils.py[line:161] - ERROR - 图像指令转换失败,数据长度错误 -2024-07-01 16:23:59,608 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 16:27:39,666 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 16:45:20,986 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 16:49:36,061 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 16:57:25,351 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:01:32,692 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:22:45,049 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:25:23,065 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-01 17:25:23,065 main.py[line:101] - ERROR - 处理失败 -2024-07-01 17:25:23,065 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:27:39,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:29:37,321 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:31:32,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:33:22,204 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:35:32,399 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:46:20,681 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:47:51,507 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-01 17:51:45,559 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-01 17:51:45,559 main.py[line:101] - ERROR - 处理失败 -2024-07-01 17:51:45,560 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 14:08:48,265 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 14:08:48,265 main.py[line:108] - ERROR - 处理失败 -2024-07-04 14:08:49,453 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 14:08:49,453 main.py[line:108] - ERROR - 处理失败 -2024-07-04 14:08:50,744 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 14:08:50,744 main.py[line:108] - ERROR - 处理失败 -2024-07-04 14:08:50,744 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 14:27:19,068 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 16:41:47,465 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 16:45:24,931 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 16:49:02,620 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 16:51:48,679 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 16:53:58,252 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 17:00:49,493 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 17:08:10,792 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:10,793 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:12,041 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:12,042 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:13,179 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:13,179 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:14,424 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:14,425 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:15,606 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:15,606 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:16,934 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:16,934 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:18,134 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:18,134 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:19,383 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:19,383 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:20,639 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:20,639 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:21,809 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:08:21,809 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:08:21,810 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 17:18:14,994 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-04 17:20:39,388 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:39,388 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:40,562 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:40,563 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:41,738 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:41,738 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:43,017 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:43,017 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:44,275 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:44,275 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:45,548 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:45,548 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:46,743 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:46,743 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:47,987 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:47,987 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:49,183 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:49,183 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:50,393 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:50,394 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:51,724 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:51,724 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:52,901 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:52,901 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:54,161 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:54,161 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:55,332 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:55,333 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:56,561 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-04 17:20:56,561 main.py[line:110] - ERROR - 处理失败 -2024-07-04 17:20:56,561 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-05 14:23:17,274 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-05 14:52:48,462 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-05 14:59:25,432 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-05 14:59:25,433 main.py[line:110] - ERROR - 处理失败 -2024-07-05 14:59:25,433 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-05 15:21:42,677 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-07 16:11:16,751 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') -2024-07-07 16:11:16,752 main.py[line:125] - ERROR - 处理失败 -2024-07-07 16:11:16,752 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-07 16:25:38,533 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') -2024-07-07 16:34:38,764 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') diff --git a/20240627Actual_deployed/totest.py b/20240627Actual_deployed/totest.py deleted file mode 100644 index fba8382..0000000 --- a/20240627Actual_deployed/totest.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2024/7/7 下午4:33 -# @Author : TG -# @File : totest.py -# @Software: PyCharm -import time - -from detector import Detector_to -import numpy as np - -import os -from PIL import Image - - - - -def main(): - s = [] - path = r'D:\project\20240627Actual_deployed\to' - to = Detector_to() - i = 1 - for filename in os.listdir(path): - if filename.endswith('.bmp'): - img_path = os.path.join(path, filename) - image = Image.open(img_path) - img = np.array(image) - t = time.time() - result = to.run(img) - e = time.time() - print(f'第{i}张图时间:{e-t}') - print(f'图片名:{filename},结果:{result}') - s.append(result) - i += 1 - print(f'长度:{sum(s)}') - - -#0为褶皱,1为正常 - - -if __name__ == '__main__': - ''' - python与qt采用windows下的命名管道进行通信,数据流按照约定的通信协议进行 - 数据处理逻辑为:连续接收5张RGB图,然后根据解析出的指令部分决定是否接收一张光谱图,然后进行处理,最后将处理得到的指标结果进行编码回传 - ''' - main() \ No newline at end of file diff --git a/20240627test4/20240711lab.py b/20240627test4/20240711lab.py new file mode 100644 index 0000000..2523f54 --- /dev/null +++ b/20240627test4/20240711lab.py @@ -0,0 +1,71 @@ +import cv2 +import numpy as np +import os + +# 读取文件夹中的所有图片文件 +def read_images_from_folder(folder): + images = [] + for filename in os.listdir(folder): + img = cv2.imread(os.path.join(folder, filename)) + if img is not None: + images.append((filename, img)) + return images + +# Lab颜色空间的a阈值分割,同时处理灰度值大于190的像素 +def threshold_lab_a_and_high_gray(image, lower_threshold=0, upper_threshold=20): + lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab) + _, a, _ = cv2.split(lab_image) + + # 创建一个与a通道相同大小的黑色图像 + binary_image = np.zeros_like(a) + + # 将a通道中值在指定范围内的像素设置为白色(255) + binary_image[(a >= lower_threshold) & (a <= upper_threshold)] = 255 + + # 为灰度值大于190的像素创建二值图 + gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + high_gray_image = np.zeros_like(gray_image) + high_gray_image[gray_image > 170] = 255 + + # 从a通道阈值图中移除灰度值大于190的像素 + final_image = cv2.bitwise_and(binary_image, binary_image, mask=np.bitwise_not(high_gray_image)) + + return binary_image, high_gray_image, final_image + +# 拼接并显示所有图片 +def concatenate_images(original, images, filename, scale=0.5): + # 将所有单通道图像转换为三通道图像 + resized_imgs = [] + for img in images: + if len(img.shape) == 2: # 单通道图像 + img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) + # 缩放图像 + img = cv2.resize(img, (int(img.shape[1] * scale), int(img.shape[0] * scale))) + resized_imgs.append(img) + + # 将原图也转换为相同大小和缩放 + resized_original = cv2.resize(original, (int(original.shape[1] * scale), int(original.shape[0] * scale))) + + # 水平拼接第一行和第二行 + top_row = cv2.hconcat([resized_original, resized_imgs[0]]) + bottom_row = cv2.hconcat([resized_imgs[1], resized_imgs[2]]) + + # 垂直拼接所有行 + final_image = cv2.vconcat([top_row, bottom_row]) + + # 显示图片 + cv2.imshow(f"Combined Images - {filename}", final_image) + cv2.waitKey(0) + cv2.destroyAllWindows() + +def main(): + folder = r'F:\images' # 替换为你的文件夹路径 + images = read_images_from_folder(folder) + + for filename, image in images: + lab_thresh, high_gray, final_image = threshold_lab_a_and_high_gray(image, lower_threshold=115, upper_threshold=135) + concatenate_images(image, [lab_thresh, high_gray, final_image], filename, scale=0.5) # 添加缩放因子 + +if __name__ == "__main__": + main() + diff --git a/20240627Actual_deployed/classifer.py b/20240627test4/classifer.py similarity index 84% rename from 20240627Actual_deployed/classifer.py rename to 20240627test4/classifer.py index 2bceeb1..d3184ef 100644 --- a/20240627Actual_deployed/classifer.py +++ b/20240627test4/classifer.py @@ -5,8 +5,6 @@ # @Software: PyCharm import os -import time - import cv2 import pipe_utils import joblib @@ -17,6 +15,7 @@ from pipe_utils import Pipe from config import Config as setting from sklearn.ensemble import RandomForestRegressor from detector import Detector_to +from to_seg import TOSEG import torch import torch.nn as nn @@ -229,6 +228,24 @@ class Tomato: img_filled = cv2.bitwise_or(new_bin_img, img_filled_inv) return img_filled + def threshold_lab_a_and_high_gray(self, image, lower_threshold=0, upper_threshold=20): + lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab) + _, a, _ = cv2.split(lab_image) + # 创建一个与a通道相同大小的黑色图像 + binary_image = np.zeros_like(a) + # 将a通道中值在指定范围内的像素设置为白色(255) + binary_image[(a >= lower_threshold) & (a <= upper_threshold)] = 255 + # 为灰度值大于190的像素创建二值图 + gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + high_gray_image = np.zeros_like(gray_image) + high_gray_image[gray_image > 170] = 255 + # 从a通道阈值图中移除灰度值大于190的像素 + final_image = cv2.bitwise_and(binary_image, binary_image, mask=np.bitwise_not(high_gray_image)) + # 颜色反转之后,找到最大的连通区域(去除背景中的噪点干扰) + final_image = self.largest_connected_component(cv2.bitwise_not(final_image)) + + return final_image + #百香果RGB处理模型 class Passion_fruit: def __init__(self, hue_value=setting.hue_value, hue_delta=setting.hue_delta, @@ -331,9 +348,9 @@ class Passion_fruit: upper_green = np.array([setting.high_H, setting.high_S, setting.high_V]) # Convert the image to HSV hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV) - # Create the mask + # Create the leaf mask = cv2.inRange(hsv, lower_green, upper_green) - # Bitwise-AND mask and original image + # Bitwise-AND leaf and original image res = cv2.bitwise_and(image_rgb, image_rgb, mask=mask) # Convert result to BGR for display res_bgr = cv2.cvtColor(res, cv2.COLOR_RGB2BGR) @@ -570,6 +587,9 @@ class Data_processing: self.area_threshold = area_threshold self.density = density self.area_ratio = area_ratio + self.tomato = Tomato() + self.pf = Passion_fruit() + self.tos = TOSEG() pass def fill_holes(self, bin_img): @@ -678,35 +698,47 @@ class Data_processing: 返回: tuple: (长径, 短径, 缺陷区域个数, 缺陷区域总像素, 处理后的图像) """ - tomato = Tomato() # 创建 Tomato 类的实例 - img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR) - s_l = tomato.extract_s_l(img) - thresholded_s_l = tomato.threshold_segmentation(s_l, setting.threshold_s_l) - new_bin_img = tomato.largest_connected_component(thresholded_s_l) - filled_img, defect = self.fill_holes(new_bin_img) + # tomato = Tomato() # 创建 Tomato 类的实例 + # img0 = img.copy() + img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + img0 = img.copy() + s_l = self.tomato.extract_s_l(img) + thresholded_s_l = self.tomato.threshold_segmentation(s_l, setting.threshold_s_l) + new_bin_img = self.tomato.largest_connected_component(thresholded_s_l) + #下面为20240714工控机实际运行代码,缺少两个参数传递 + # white_defect = self.tomato.threshold_lab_a_and_high_gray(img) + white_defect = self.tomato.threshold_lab_a_and_high_gray(img, lower_threshold=115, upper_threshold=135) + new_bin_and_white_defect_img = cv2.bitwise_and(new_bin_img, white_defect) + filled_img, defect = self.fill_holes(new_bin_and_white_defect_img) # 绘制西红柿边缘并获取缺陷信息 - edge, mask = tomato.draw_tomato_edge(img, new_bin_img) - org_defect = tomato.bitwise_and_rgb_with_binary(edge, new_bin_img) - fore = tomato.bitwise_and_rgb_with_binary(img, mask) - fore_g_r_t = tomato.threshold_segmentation(tomato.extract_g_r(fore), threshold=setting.threshold_fore_g_r_t) - filled_img_nogreen = cv2.bitwise_or(filled_img, fore_g_r_t) - res = cv2.bitwise_or(new_bin_img, fore_g_r_t) - nogreen = tomato.bitwise_and_rgb_with_binary(edge, res) + edge, mask = self.tomato.draw_tomato_edge(img, new_bin_and_white_defect_img) + # org_defect = self.tomato.bitwise_and_rgb_with_binary(edge, new_bin_and_white_defect_img) + fore = self.tomato.bitwise_and_rgb_with_binary(img, mask) + fore_g_r_t = self.tomato.threshold_segmentation(self.tomato.extract_g_r(fore), threshold=setting.threshold_fore_g_r_t) + # filled_img_nogreen = cv2.bitwise_or(filled_img, fore_g_r_t) + + + safe_area = self.tos.toseg(img0) + filled_defect = cv2.bitwise_or(filled_img, safe_area) + + green = cv2.bitwise_or(fore_g_r_t, safe_area) + + + res = cv2.bitwise_or(new_bin_and_white_defect_img, safe_area) + nogreen = self.tomato.bitwise_and_rgb_with_binary(edge, res) # 统计白色像素点个数 - # print(np.sum(fore_g_r_t == 255)) - # print(np.sum(mask == 255)) - # print(np.sum(fore_g_r_t == 255) / np.sum(mask == 255)) + if np.sum(mask == 255) == 0: green_percentage = 0 else: - green_percentage = np.sum(fore_g_r_t == 255) / np.sum(mask == 255) + green_percentage = np.sum(green == 255) / np.sum(mask == 255) green_percentage = round(green_percentage, 2) # 获取西红柿的尺寸信息 long_axis, short_axis = self.analyze_ellipse(mask) # 获取缺陷信息 - _, total_pixels = self.analyze_defect(filled_img_nogreen) + _, total_pixels = self.analyze_defect(filled_defect) # print(filled_img.shape) - # print(f'缺陷数量:{number_defects}; 缺陷总面积:{total_pixels}') + # print(f'缺陷总面积:{total_pixels}') # cv2.imwrite('filled_img.jpg',filled_img) # 将处理后的图像转换为 RGB 格式 rp = cv2.cvtColor(nogreen, cv2.COLOR_BGR2RGB) @@ -722,7 +754,15 @@ class Data_processing: # total_pixels = 0 # rp = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), # dtype=np.uint8), cv2.COLOR_BGR2RGB) - return diameter, green_percentage, total_pixels, rp + + white_defect = cv2.cvtColor(white_defect, cv2.COLOR_GRAY2RGB) + new_bin_img = cv2.cvtColor(new_bin_img, cv2.COLOR_GRAY2RGB) + new_bin_and_white_defect_img = cv2.cvtColor(new_bin_and_white_defect_img, cv2.COLOR_GRAY2RGB) + filled_img = cv2.cvtColor(filled_img, cv2.COLOR_GRAY2RGB) + safe_area = cv2.cvtColor(safe_area, cv2.COLOR_GRAY2RGB) + filled_defect = cv2.cvtColor(filled_defect, cv2.COLOR_GRAY2RGB) + + return diameter, green_percentage, total_pixels, rp, white_defect, new_bin_img, new_bin_and_white_defect_img, filled_img, safe_area, filled_defect def analyze_passion_fruit(self, img): if img is None: @@ -730,18 +770,18 @@ class Data_processing: return None # 创建PassionFruit类的实例 - pf = Passion_fruit() + # pf = Passion_fruit() img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR) hsv_image = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) - combined_mask = pf.create_mask(hsv_image) - combined_mask = pf.apply_morphology(combined_mask) - max_mask = pf.find_largest_component(combined_mask) + combined_mask = self.pf.create_mask(hsv_image) + combined_mask = self.pf.apply_morphology(combined_mask) + max_mask = self.pf.find_largest_component(combined_mask) filled_img, defect = self.fill_holes(max_mask) contour_mask = self.contour_process(max_mask) - fore = pf.bitwise_and_rgb_with_binary(img, contour_mask) - mask = pf.extract_green_pixels_cv(fore) - green_img = pf.pixel_comparison(defect, mask) + fore = self.pf.bitwise_and_rgb_with_binary(img, contour_mask) + mask = self.pf.extract_green_pixels_cv(fore) + green_img = self.pf.pixel_comparison(defect, mask) if np.sum(contour_mask == 255) == 0: green_percentage = 0 else: @@ -758,8 +798,8 @@ class Data_processing: _, total_pixels = self.analyze_defect(filled_img) # img1 = img.copy() - edge = pf.draw_contours_on_image(img, contour_mask) - org_defect = pf.bitwise_and_rgb_with_binary(edge, max_mask) + edge = self.pf.draw_contours_on_image(img, contour_mask) + org_defect = self.pf.bitwise_and_rgb_with_binary(edge, max_mask) rp = cv2.cvtColor(org_defect, cv2.COLOR_BGR2RGB) #直径单位为cm # diameter = (long_axis + short_axis) * setting.pixel_length_ratio / 2 @@ -775,8 +815,8 @@ class Data_processing: # dtype=np.uint8), cv2.COLOR_BGR2RGB) return diameter, green_percentage, weight, total_pixels, rp - def process_data(seif, cmd: str, images: list, spec: any, pipe: Pipe, - detector: Spec_predict, to: Detector_to, impf: ImageClassifier) -> bool: + def process_data(seif, cmd: str, images: list, spec: any, pipe: Pipe, detector: Spec_predict, + to: Detector_to, impf: ImageClassifier, q) -> bool: """ 处理指令 @@ -795,12 +835,17 @@ class Data_processing: for i, img in enumerate(images): if cmd == 'TO': # 番茄 - diameter, green_percentage, total_pixels, rp = seif.analyze_tomato(img) - ss = time.time() + diameter, green_percentage, total_pixels, rp, white_defect, new_bin_img, new_bin_and_white_defect_img, filled_img, safe_area, filled_defect = seif.analyze_tomato(img) posun_num = to.run(img) - es = time.time() - print(f'破损判断时间:{es-ss}') - print(f'破损判断:{posun_num}') + cv2.imwrite(f'./testimg_result/{q}_{i+1}_white_defect.png', white_defect) + cv2.imwrite(f'./testimg_result/{q}_{i+1}_new_bin_img.png', new_bin_img) + cv2.imwrite(f'./testimg_result/{q}_{i+1}_white_defect.png', new_bin_and_white_defect_img) + cv2.imwrite(f'./testimg_result/{q}_{i+1}_filled_img.png', filled_img) + cv2.imwrite(f'./testimg_result/{q}_{i+1}_filled_defect.png', filled_defect) + cv2.imwrite(f'./testimg_result/{q}_{i+1}_safe_area.png', safe_area) + cv2.imwrite(f'./testimg_result/{q}_{i+1}_nogreen.png', cv2.cvtColor(rp, cv2.COLOR_RGB2BGR)) + cv2.imwrite(f'./testimg_result/{q}_{i+1}_img.png', cv2.cvtColor(img, cv2.COLOR_RGB2BGR)) + # print(f'破损判断:{posun_num}') if i <= 2: diameter_axis_list.append(diameter) ps.append(posun_num) @@ -841,8 +886,8 @@ class Data_processing: max_total_defect_area = 0 rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), dtype=np.uint8), cv2.COLOR_BGR2RGB) - print(f'预测的brix值为:{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{gp};' - f' 破损判别结果为:{ps_sum}; 预测的总缺陷面积为:{max_total_defect_area};') + # print(f'预测的brix值为:{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{gp};' + # f' 破损判别结果为:{ps_sum}; 预测的总缺陷面积为:{max_total_defect_area};') response = pipe.send_data(cmd=cmd, brix=brix, diameter=diameter, green_percentage=gp, weight=weight, defect_num=ps_sum, total_defect_area=max_total_defect_area, rp=rp_result) return response @@ -853,14 +898,22 @@ class Data_processing: diameter = 0 gp = 0 weight = 0 - zz_sum = 0 + zz_sum = 1 max_total_defect_area = 0 rp_result = cv2.cvtColor(np.ones((setting.n_rgb_rows, setting.n_rgb_cols, setting.n_rgb_bands), dtype=np.uint8), cv2.COLOR_BGR2RGB) - print(f'预测的brix值为:{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{green_percentage};' - f' 褶皱判别结果为:{zz_sum}; 预测的总缺陷面积为:{max_total_defect_area};') + # print(f'预测的brix值为:{brix}; 预测的直径为:{diameter}; 预测的重量为:{weight}; 预测的绿色比例为:{green_percentage};' + # f' 褶皱判别结果为:{zz_sum}; 预测的总缺陷面积为:{max_total_defect_area};') response = pipe.send_data(cmd=cmd, brix=brix, green_percentage=gp, diameter=diameter, weight=weight, defect_num=zz_sum, total_defect_area=max_total_defect_area, rp=rp_result) return response +# if __name__ == "__main__": +# img = cv2.imread(r'D:\project\20240714Actual_deployed\testimg\4-10-3.bmp') +# img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) +# data = Data_processing() +# diameter, green_percentage, total_pixels, rp, white_defect, new_bin_img, new_bin_and_white_defect_img, filled_img, safe_area, filled_defect = data.analyze_tomato(img) +# cv2.imshow("area", safe_area) +# cv2.waitKey(0) +# cv2.destroyAllWindows() \ No newline at end of file diff --git a/20240627Actual_deployed/config.py b/20240627test4/config.py similarity index 69% rename from 20240627Actual_deployed/config.py rename to 20240627test4/config.py index 294e90b..76cc182 100644 --- a/20240627Actual_deployed/config.py +++ b/20240627test4/config.py @@ -20,8 +20,24 @@ class Config: imgclassifier_model_path = ROOT_DIR / 'models' / 'resnet18pf20240705.pth' imgclassifier_class_indices_path = ROOT_DIR / 'models' / 'class_indices.json' - #番茄破损模型 - tomato_model_path = ROOT_DIR / 'weights' / 'best.pt' + #番茄初版实例分割叶片模型,实例分割叶片 + # toseg_weights = ROOT_DIR / 'weights' / 'raw_seg_best.pt' + + #20240711番茄新版实例分割模型,实例分割叶片、果蒂、果脐处 + toseg_weights = ROOT_DIR / 'weights' / '20240711_seg_best.pt' + + + + + #番茄初版裂口目标检测模型,原始包含刀划伤的模型 + # toobj_path = ROOT_DIR / 'weights' / 'raw_obj_best.pt' + + #20240711番茄新版裂口目标检测模型,去除刀划伤的模型 + # toobj_path = ROOT_DIR / 'weights' / '20240711_obj_best.pt' + + #20240712番茄新版裂口目标检测模型,去除刀划伤的模型,新增加坑状破损样本 + toobj_path = ROOT_DIR / 'weights' / '20240712_obj_best.pt' + #classifer.py参数 #tomato diff --git a/20240627test4/data_processing/imgcopy.py b/20240627test4/data_processing/imgcopy.py new file mode 100644 index 0000000..0440b76 --- /dev/null +++ b/20240627test4/data_processing/imgcopy.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# @Time : 2024/7/14 下午5:11 +# @Author : TG +# @File : imgcopy.py +# @Software: PyCharm +import os +import shutil + +def copy_images_recursively(source_folder, target_folder): + # 遍历源文件夹中的所有内容 + for item in os.listdir(source_folder): + item_path = os.path.join(source_folder, item) + if os.path.isdir(item_path): + # 如果是文件夹,递归调用当前函数 + copy_images_recursively(item_path, target_folder) + elif item.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')): + # 如果是图片文件,则复制到目标文件夹 + shutil.copy(item_path, target_folder) + print(f"Copied {item_path} to {target_folder}") + +# 源文件夹路径 +source_folder = r'D:\project\20240714Actual_deployed\20240718test\T' +# 目标文件夹路径 +target_folder = r'D:\project\20240714Actual_deployed\20240718test\01img' + +# 调用函数 +copy_images_recursively(source_folder, target_folder) diff --git a/20240627test4/data_processing/name.py b/20240627test4/data_processing/name.py new file mode 100644 index 0000000..c072fef --- /dev/null +++ b/20240627test4/data_processing/name.py @@ -0,0 +1,34 @@ +import os +import re + +def natural_sort_key(s): + """提取文本中的数字作为排序键""" + return [int(text) if text.isdigit() else text.lower() for text in re.split('(\d+)', s)] + +def rename_bmp_images(folder_path, prefix, suffix): + # 获取文件夹中的所有文件 + files = os.listdir(folder_path) + # 过滤出BMP图像文件并进行自然排序 + bmp_files = sorted([f for f in files if f.lower().endswith('.bmp')], key=natural_sort_key) + + # 对每个BMP图像文件进行重命名 + for index, bmp_file in enumerate(bmp_files): + old_path = os.path.join(folder_path, bmp_file) + # 格式化新文件名,例如:1-1-1.bmp, 1-2-1.bmp, ... + new_name = f"{prefix}-{index + 1}-{suffix}.bmp" + new_path = os.path.join(folder_path, new_name) + + # 重命名文件 + os.rename(old_path, new_path) + print(f'Renamed {old_path} to {new_path}') + +# 指定文件夹路径 +folder_path = r'D:\project\20240714Actual_deployed\20240718test\T\bottom' +folder_path1 = r'D:\project\20240714Actual_deployed\20240718test\T\middle' +folder_path2 = r'D:\project\20240714Actual_deployed\20240718test\T\top' + +num = '1' +# 调用函数进行重命名 +rename_bmp_images(folder_path, prefix=num, suffix='1') +rename_bmp_images(folder_path1, prefix=num, suffix='2') +rename_bmp_images(folder_path2, prefix=num, suffix='3') \ No newline at end of file diff --git a/20240627Actual_deployed/detector.py b/20240627test4/detector.py similarity index 92% rename from 20240627Actual_deployed/detector.py rename to 20240627test4/detector.py index 0a65ed6..8ca5066 100644 --- a/20240627Actual_deployed/detector.py +++ b/20240627test4/detector.py @@ -15,14 +15,14 @@ from utils.dataloaders import letterbox from config import Config as setting class Detector_to: - def __init__(self, weights=Path(setting.tomato_model_path), + def __init__(self, weights=Path(setting.toobj_path), device="", half=False): self.device = select_device(device) self.model = DetectMultiBackend(weights, device=self.device, fp16=half) self.stride = int(self.model.stride) # get stride from the model self.fp16 = half - def run(self, img, imgsz=(640, 640), conf_thres=0.25, iou_thres=0.45, max_det=1000): + def run(self, img, imgsz=(640, 640), conf_thres=0.45, iou_thres=0.45, max_det=1000): """Runs YOLOv5 detection inference on a numpy array and returns the number of detections.""" imgsz = check_img_size(imgsz, s=self.stride) # check image size diff --git a/20240627Actual_deployed/export.py b/20240627test4/export.py similarity index 100% rename from 20240627Actual_deployed/export.py rename to 20240627test4/export.py diff --git a/20240627Actual_deployed/main.py b/20240627test4/main.py similarity index 74% rename from 20240627Actual_deployed/main.py rename to 20240627test4/main.py index 712d320..94d1199 100644 --- a/20240627Actual_deployed/main.py +++ b/20240627test4/main.py @@ -17,7 +17,8 @@ import numpy as np from config import Config import time from detector import Detector_to -# from clspredict import runcls +from to_seg import TOSEG + def main(is_debug=False): setting = Config() @@ -33,24 +34,18 @@ def main(is_debug=False): detector.load(path=setting.brix_model_path) dp = Data_processing() to = Detector_to() + tos = TOSEG() #impf为百香果褶皱判别模型,0为褶皱,1为正常 impf = ImageClassifier(model_path=setting.imgclassifier_model_path, class_indices_path=setting.imgclassifier_class_indices_path) print('系统初始化中...') #模型预热 - hh = time.time() #与qt_test测试时需要注释掉预热,模型接收尺寸为(25,30,13),qt_test发送的数据为(30,30,224),需要对数据进行切片(classifer.py第379行) _ = detector.predict(np.ones((setting.n_spec_rows, setting.n_spec_cols, setting.n_spec_bands), dtype=np.uint16)) - hk = time.time() - print(f'brix模型预热时间:{hk-hh}') #run函数为番茄破损判别模型,返回0表示无破损,1、2、3即表示1、2、3处破损 _ = to.run(np.ones((800, 613, 3), dtype=np.uint8)) - hi = time.time() - print(f'run模型预热时间:{hi-hk}') + _ = tos.toseg(np.ones((800, 613, 3), dtype=np.uint8)) _ = impf.predict(np.ones((800, 613, 3), dtype=np.uint8)) - gg = time.time() - print(f'impf模型预热时间:{gg-hi}') - time.sleep(1) print('系统初始化完成') @@ -70,23 +65,23 @@ def main(is_debug=False): #主循环 q = 1 while True: - st = time.time() + # st = time.time() #RGB图像部分 images = [] cmd = None for i in range(3): - start_time = time.time() + # start_time = time.time() data = pipe.receive_rgb_data(rgb_receive) - end_time = time.time() - print(f'接收第{q}个果子第{i+1}张图数据时间:{end_time-start_time}') - print(f'接收第{q}个果子第{i+1}张图数据长度:{len(data)}') + # end_time = time.time() + # print(f'接收第{q}个果子第{i+1}张图数据时间:{end_time-start_time}') + # print(f'接收第{q}个果子第{i+1}张图数据长度:{len(data)}') cmd, img = pipe.parse_img(data) - end_time1 = time.time() - img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) - print(f'解码第{q}个果子第{i + 1}张图数据时间:{end_time1 - end_time}') - print(f'接收第{q}个果子第{i+1}张图:{img.shape}') + # end_time1 = time.time() + # img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + # print(f'解码第{q}个果子第{i + 1}张图数据时间:{end_time1 - end_time}') + # print(f'接收第{q}个果子第{i+1}张图:{img.shape}') # cv2.imwrite(f'./{q}_{i}.png', img) - img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + # img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #默认全为有果 prediction = 1 @@ -105,21 +100,13 @@ def main(is_debug=False): #Spec数据部分 spec = None if cmd == 'PF': - sp = time.time() spec_data = pipe.receive_spec_data(spec_receive) - ep = time.time() - print(f'接收到第{q}个果子的光谱数据时间:{ep-sp}') - print(f'接收到第{q}个果子的光谱数据长度:{len(spec_data)}') + # print(f'接收到第{q}个果子的光谱数据长度:{len(spec_data)}') _, spec = pipe.parse_spec(spec_data) - ep1 = time.time() - print(f'解码第{q}个果子的光谱数据时间:{ep1-ep}') - print(f'接收到第{q}个果子的光谱数据尺寸:{spec.shape}') + # print(f'接收到第{q}个果子的光谱数据尺寸:{spec.shape}') #数据处理部分 if images: # 确保images不为空 - sg = time.time() - response = dp.process_data(cmd, images, spec, pipe, detector, to, impf) - eg = time.time() - print(f'第{q}个果子数据处理时间:{eg-sg}') + response = dp.process_data(cmd, images, spec, pipe, detector, to, impf, q) if response: logging.info(f'处理成功,响应为: {response}') else: @@ -127,9 +114,10 @@ def main(is_debug=False): else: logging.error("没有有效的图像进行处理") print(f'第{q}个果子处理完成') + # end_time2 = time.time() + # print(f'第{q}个果子全流程时间:{(end_time2-st) * 1000}毫秒') q += 1 - end_time2 = time.time() - print(f'第{q}个果子全流程时间:{end_time2-st}') + if __name__ == '__main__': diff --git a/20240627Actual_deployed/models/PF.bmp b/20240627test4/models/PF.bmp similarity index 100% rename from 20240627Actual_deployed/models/PF.bmp rename to 20240627test4/models/PF.bmp diff --git a/20240627Actual_deployed/models/TO.bmp b/20240627test4/models/TO.bmp similarity index 100% rename from 20240627Actual_deployed/models/TO.bmp rename to 20240627test4/models/TO.bmp diff --git a/20240627Actual_deployed/models/__init__.py b/20240627test4/models/__init__.py similarity index 100% rename from 20240627Actual_deployed/models/__init__.py rename to 20240627test4/models/__init__.py diff --git a/20240627Actual_deployed/models/class_indices.json b/20240627test4/models/class_indices.json similarity index 100% rename from 20240627Actual_deployed/models/class_indices.json rename to 20240627test4/models/class_indices.json diff --git a/20240627Actual_deployed/models/common.py b/20240627test4/models/common.py similarity index 99% rename from 20240627Actual_deployed/models/common.py rename to 20240627test4/models/common.py index 049dfc0..25dd1c3 100644 --- a/20240627Actual_deployed/models/common.py +++ b/20240627test4/models/common.py @@ -1047,9 +1047,9 @@ class Detections: class Proto(nn.Module): - # YOLOv5 mask Proto module for segmentation models + # YOLOv5 leaf Proto module for segmentation models def __init__(self, c1, c_=256, c2=32): - """Initializes YOLOv5 Proto module for segmentation with input, proto, and mask channels configuration.""" + """Initializes YOLOv5 Proto module for segmentation with input, proto, and leaf channels configuration.""" super().__init__() self.cv1 = Conv(c1, c_, k=3) self.upsample = nn.Upsample(scale_factor=2, mode="nearest") diff --git a/20240627Actual_deployed/models/experimental.py b/20240627test4/models/experimental.py similarity index 100% rename from 20240627Actual_deployed/models/experimental.py rename to 20240627test4/models/experimental.py diff --git a/20240627Actual_deployed/models/hub/anchors.yaml b/20240627test4/models/hub/anchors.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/anchors.yaml rename to 20240627test4/models/hub/anchors.yaml diff --git a/20240627Actual_deployed/models/hub/yolov3-spp.yaml b/20240627test4/models/hub/yolov3-spp.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov3-spp.yaml rename to 20240627test4/models/hub/yolov3-spp.yaml diff --git a/20240627Actual_deployed/models/hub/yolov3-tiny.yaml b/20240627test4/models/hub/yolov3-tiny.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov3-tiny.yaml rename to 20240627test4/models/hub/yolov3-tiny.yaml diff --git a/20240627Actual_deployed/models/hub/yolov3.yaml b/20240627test4/models/hub/yolov3.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov3.yaml rename to 20240627test4/models/hub/yolov3.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5-bifpn.yaml b/20240627test4/models/hub/yolov5-bifpn.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5-bifpn.yaml rename to 20240627test4/models/hub/yolov5-bifpn.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5-fpn.yaml b/20240627test4/models/hub/yolov5-fpn.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5-fpn.yaml rename to 20240627test4/models/hub/yolov5-fpn.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5-p2.yaml b/20240627test4/models/hub/yolov5-p2.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5-p2.yaml rename to 20240627test4/models/hub/yolov5-p2.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5-p34.yaml b/20240627test4/models/hub/yolov5-p34.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5-p34.yaml rename to 20240627test4/models/hub/yolov5-p34.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5-p6.yaml b/20240627test4/models/hub/yolov5-p6.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5-p6.yaml rename to 20240627test4/models/hub/yolov5-p6.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5-p7.yaml b/20240627test4/models/hub/yolov5-p7.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5-p7.yaml rename to 20240627test4/models/hub/yolov5-p7.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5-panet.yaml b/20240627test4/models/hub/yolov5-panet.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5-panet.yaml rename to 20240627test4/models/hub/yolov5-panet.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5l6.yaml b/20240627test4/models/hub/yolov5l6.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5l6.yaml rename to 20240627test4/models/hub/yolov5l6.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5m6.yaml b/20240627test4/models/hub/yolov5m6.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5m6.yaml rename to 20240627test4/models/hub/yolov5m6.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5n6.yaml b/20240627test4/models/hub/yolov5n6.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5n6.yaml rename to 20240627test4/models/hub/yolov5n6.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5s-LeakyReLU.yaml b/20240627test4/models/hub/yolov5s-LeakyReLU.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5s-LeakyReLU.yaml rename to 20240627test4/models/hub/yolov5s-LeakyReLU.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5s-ghost.yaml b/20240627test4/models/hub/yolov5s-ghost.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5s-ghost.yaml rename to 20240627test4/models/hub/yolov5s-ghost.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5s-transformer.yaml b/20240627test4/models/hub/yolov5s-transformer.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5s-transformer.yaml rename to 20240627test4/models/hub/yolov5s-transformer.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5s6.yaml b/20240627test4/models/hub/yolov5s6.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5s6.yaml rename to 20240627test4/models/hub/yolov5s6.yaml diff --git a/20240627Actual_deployed/models/hub/yolov5x6.yaml b/20240627test4/models/hub/yolov5x6.yaml similarity index 100% rename from 20240627Actual_deployed/models/hub/yolov5x6.yaml rename to 20240627test4/models/hub/yolov5x6.yaml diff --git a/20240627Actual_deployed/models/passion_fruit.joblib b/20240627test4/models/passion_fruit.joblib similarity index 100% rename from 20240627Actual_deployed/models/passion_fruit.joblib rename to 20240627test4/models/passion_fruit.joblib diff --git a/20240627Actual_deployed/models/resnet18pf.pth b/20240627test4/models/resnet18pf.pth similarity index 100% rename from 20240627Actual_deployed/models/resnet18pf.pth rename to 20240627test4/models/resnet18pf.pth diff --git a/20240627test4/models/resnet18pf20240705.pth b/20240627test4/models/resnet18pf20240705.pth new file mode 100644 index 0000000..0a72796 Binary files /dev/null and b/20240627test4/models/resnet18pf20240705.pth differ diff --git a/20240627Actual_deployed/models/segment/yolov5l-seg.yaml b/20240627test4/models/segment/yolov5l-seg.yaml similarity index 100% rename from 20240627Actual_deployed/models/segment/yolov5l-seg.yaml rename to 20240627test4/models/segment/yolov5l-seg.yaml diff --git a/20240627Actual_deployed/models/segment/yolov5m-seg.yaml b/20240627test4/models/segment/yolov5m-seg.yaml similarity index 100% rename from 20240627Actual_deployed/models/segment/yolov5m-seg.yaml rename to 20240627test4/models/segment/yolov5m-seg.yaml diff --git a/20240627Actual_deployed/models/segment/yolov5n-seg.yaml b/20240627test4/models/segment/yolov5n-seg.yaml similarity index 100% rename from 20240627Actual_deployed/models/segment/yolov5n-seg.yaml rename to 20240627test4/models/segment/yolov5n-seg.yaml diff --git a/20240627Actual_deployed/models/segment/yolov5s-seg.yaml b/20240627test4/models/segment/yolov5s-seg.yaml similarity index 100% rename from 20240627Actual_deployed/models/segment/yolov5s-seg.yaml rename to 20240627test4/models/segment/yolov5s-seg.yaml diff --git a/20240627Actual_deployed/models/segment/yolov5x-seg.yaml b/20240627test4/models/segment/yolov5x-seg.yaml similarity index 100% rename from 20240627Actual_deployed/models/segment/yolov5x-seg.yaml rename to 20240627test4/models/segment/yolov5x-seg.yaml diff --git a/20240627Actual_deployed/models/tf.py b/20240627test4/models/tf.py similarity index 100% rename from 20240627Actual_deployed/models/tf.py rename to 20240627test4/models/tf.py diff --git a/20240627Actual_deployed/models/yolo.py b/20240627test4/models/yolo.py similarity index 99% rename from 20240627Actual_deployed/models/yolo.py rename to 20240627test4/models/yolo.py index de9c301..78be90f 100644 --- a/20240627Actual_deployed/models/yolo.py +++ b/20240627test4/models/yolo.py @@ -129,7 +129,7 @@ class Detect(nn.Module): class Segment(Detect): # YOLOv5 Segment head for segmentation models def __init__(self, nc=80, anchors=(), nm=32, npr=256, ch=(), inplace=True): - """Initializes YOLOv5 Segment head with options for mask count, protos, and channel adjustments.""" + """Initializes YOLOv5 Segment head with options for leaf count, protos, and channel adjustments.""" super().__init__(nc, anchors, ch, inplace) self.nm = nm # number of masks self.npr = npr # number of protos diff --git a/20240627Actual_deployed/models/yolov5l.yaml b/20240627test4/models/yolov5l.yaml similarity index 100% rename from 20240627Actual_deployed/models/yolov5l.yaml rename to 20240627test4/models/yolov5l.yaml diff --git a/20240627Actual_deployed/models/yolov5m.yaml b/20240627test4/models/yolov5m.yaml similarity index 100% rename from 20240627Actual_deployed/models/yolov5m.yaml rename to 20240627test4/models/yolov5m.yaml diff --git a/20240627Actual_deployed/models/yolov5n.yaml b/20240627test4/models/yolov5n.yaml similarity index 100% rename from 20240627Actual_deployed/models/yolov5n.yaml rename to 20240627test4/models/yolov5n.yaml diff --git a/20240627Actual_deployed/models/yolov5s.yaml b/20240627test4/models/yolov5s.yaml similarity index 100% rename from 20240627Actual_deployed/models/yolov5s.yaml rename to 20240627test4/models/yolov5s.yaml diff --git a/20240627Actual_deployed/models/yolov5x.yaml b/20240627test4/models/yolov5x.yaml similarity index 100% rename from 20240627Actual_deployed/models/yolov5x.yaml rename to 20240627test4/models/yolov5x.yaml diff --git a/20240627test4/pf_zz_test.py b/20240627test4/pf_zz_test.py new file mode 100644 index 0000000..62428d2 --- /dev/null +++ b/20240627test4/pf_zz_test.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +# @Time : 2024/7/16 下午8:58 +# @Author : GG +# @File : pf_zz_test.py +# @Software: PyCharm +# -*- coding: utf-8 -*- +# @Time : 2024/7/7 下午4:33 +# @Author : TG +# @File : totest.py +# @Software: PyCharm +import time +import cv2 +import numpy as np +import os +import pandas as pd +from PIL import Image +import re +from classifer import ImageClassifier +from config import Config as setting + + +def tryint(s): + try: + return int(s) + except ValueError: + return s + + +def natural_sort_key(s): + return [tryint(c) for c in re.split('([0-9]+)', s)] + + + # "0": "De" 褶皱 + # "1": "N" 正常 + + +def main(): + image_dir = r'D:\project\20240714Actual_deployed\zz_test\TEST' + pf_zz = ImageClassifier(model_path=setting.imgclassifier_model_path, + class_indices_path=setting.imgclassifier_class_indices_path) # 假设 TOSEG 是已定义好的类,可以处理图片分割 + # 获取所有.bmp文件,并进行自然排序 + rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.bmp')] + rgb_files.sort(key=natural_sort_key) + + # 准备保存到 Excel 的数据 + records = [] + + for idx, image_path in enumerate(rgb_files): + img = cv2.imread(image_path, cv2.IMREAD_COLOR) + + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + + t = time.time() + result = pf_zz.predict(img) + e = time.time() + + process_time = (e - t) * 1000 + print(f'第{idx + 1}张图时间:{process_time}') + print(f'结果:{result}') + + ## 控制台显示识别结果 + # records.append(result) + # print(f'识别为正常未褶皱的数量:{sum(records)}') + + + ## 将结果及原始文件信息写入excel + # 获取原始文件名 + original_filename = os.path.splitext(os.path.basename(image_path))[0] + + # 添加记录到列表 + records.append({ + "图片序号": idx + 1, + "图片名": original_filename, + "识别结果(0为褶皱,1为正常)": result, + "处理时间(ms)": process_time + }) + + # 创建 DataFrame 并写入 Excel 文件 + df = pd.DataFrame(records) + df.to_excel(r'./zz_result.xlsx', index=False) + + + + +if __name__ == '__main__': + main() + + diff --git a/20240627Actual_deployed/pipe_utils.py b/20240627test4/pipe_utils.py similarity index 96% rename from 20240627Actual_deployed/pipe_utils.py rename to 20240627test4/pipe_utils.py index e14354e..82ae69d 100644 --- a/20240627Actual_deployed/pipe_utils.py +++ b/20240627test4/pipe_utils.py @@ -46,9 +46,9 @@ class Pipe: ) print("pipe管道创建成功,等待连接...") time.sleep(0.5) - print('Fruit1程序启动成功,Fruit2程序正在启动中,预计需要30秒') + print('Fruit正在启动中,预计需要30秒') time.sleep(0.5) - print('请勿关闭Fruit1程序,否则Fruit2程序将无法正常运行!') + print('请勿关闭Fruit程序,否则程序将无法正常运行!') time.sleep(0.5) print('等待中..........') # 等待发送端连接 @@ -59,7 +59,7 @@ class Pipe: print("rgb_send connected.") win32pipe.ConnectNamedPipe(self.spec_receive, None) print("spec_receive connected.") - print('Fruit2程序启动成功!') + print('Fruit程序启动成功!') return self.rgb_receive, self.rgb_send, self.spec_receive except Exception as e: @@ -89,9 +89,9 @@ class Pipe: try: # 读取光谱数据长度 len_spec = win32file.ReadFile(spec_receive, 4, None) - print(f'len_data:{len_spec}') + # print(f'len_data:{len_spec}') data_size = int.from_bytes(len_spec[1], byteorder='big') - print(f'所需读取数据长度:{data_size}') + # print(f'所需读取数据长度:{data_size}') # 读取光谱数据 result, spec_data = win32file.ReadFile(spec_receive, data_size, None) # 检查读取操作是否成功 @@ -152,7 +152,7 @@ class Pipe: n_rows, n_cols, n_bands, spec = data[:2], data[2:4], data[4:6], data[6:] try: n_rows, n_cols, n_bands = [int.from_bytes(x, byteorder='big') for x in [n_rows, n_cols, n_bands]] - print(f'高度:{n_rows}, 宽度:{n_cols}, 谱段数:{n_bands}') + # print(f'高度:{n_rows}, 宽度:{n_cols}, 谱段数:{n_bands}') except Exception as e: logging.error(f'长宽转换失败, 错误代码{e}, 报文大小: n_rows:{n_rows}, n_cols:{n_cols}, n_bands:{n_bands}') return '', None diff --git a/20240627Actual_deployed/qt_test.py b/20240627test4/qt_test.py similarity index 62% rename from 20240627Actual_deployed/qt_test.py rename to 20240627test4/qt_test.py index 86b5edc..d258636 100644 --- a/20240627Actual_deployed/qt_test.py +++ b/20240627test4/qt_test.py @@ -12,6 +12,9 @@ import win32file from PIL import Image import numpy as np import cv2 +import pandas as pd +import re + class MainWindow(QMainWindow): def __init__(self): @@ -63,32 +66,63 @@ class MainWindow(QMainWindow): None ) + def save_results_to_excel(self, results, file_path='./testimg_result/results.xlsx'): + # 创建一个 DataFrame + df = pd.DataFrame([results]) # results 是一个字典 + + # 检查文件是否存在,如果存在就加载旧的 DataFrame,然后追加新数据 + try: + with pd.ExcelWriter(file_path, mode='a', engine='openpyxl', if_sheet_exists='overlay') as writer: + old_df = pd.read_excel(file_path) + new_df = pd.concat([old_df, df], ignore_index=True) + new_df.to_excel(writer, index=False, sheet_name='Results') + print("结果保存到 Excel 成功") + except FileNotFoundError: + # 如果文件不存在,直接写入新的 DataFrame + df.to_excel(file_path, index=False, sheet_name='Results') + print("结果保存到 Excel 成功") + except Exception as e: + print(f"保存到 Excel 失败,错误原因: {e}") + + + + def tryint(self, s): + try: + return int(s) + except: + return s + + def natural_sort_key(self, s): + return [self.tryint(c) for c in re.split('([0-9]+)', s)] + def send_image_group(self, image_dir): ''' 发送图像数据 - :param image_dir: bmp和raw文件所在文件夹 + :param image_dir: bmp文件所在文件夹 :return: ''' - rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith(('.bmp'))][:3] - spec_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.raw')][:1] + # 获取所有.bmp文件,并进行自然排序 + rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.bmp')] + rgb_files.sort(key=self.natural_sort_key) - self.send_YR() - for _ in range(100): - for image_path in rgb_files: + self.send_YR() # 发送预热指令 + + total_files = len(rgb_files) + for i in range(0, total_files, 3): + current_batch = rgb_files[i:i + 3] # 每次处理3张图片 + + for image_path in current_batch: img = cv2.imread(image_path, cv2.IMREAD_COLOR) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = np.asarray(img, dtype=np.uint8) - try: - # win32file.WriteFile(self.rgb_send, len(img_data).to_bytes(4, byteorder='big')) height = img.shape[0] width = img.shape[1] height = height.to_bytes(2, byteorder='big') width = width.to_bytes(2, byteorder='big') img_data = img.tobytes() length = (len(img_data) + 6).to_bytes(4, byteorder='big') - # cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据 cmd = 'TO' data_send = length + cmd.upper().encode('ascii') + height + width + img_data win32file.WriteFile(self.rgb_send, data_send) @@ -96,29 +130,33 @@ class MainWindow(QMainWindow): except Exception as e: print(f"数据发送失败. 错误原因: {e}") - if spec_files: - spec_file = spec_files[0] - with open(spec_file, 'rb') as f: - spec_data = f.read() + print(f"当前处理的图片: {os.path.basename(image_path)}") # 打印当前正在处理的图片名称 - try: - # win32file.WriteFile(self.spec_send, len(spec_data).to_bytes(4, byteorder='big')) - # print(f"发送的光谱数据长度: {len(spec_data)}") - heigth = 30 - weight = 30 - bands = 224 - heigth = heigth.to_bytes(2, byteorder='big') - weight = weight.to_bytes(2, byteorder='big') - bands = bands.to_bytes(2, byteorder='big') - length = (len(spec_data)+8).to_bytes(4, byteorder='big') - # cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据 - cmd = 'TO' - data_send = length + cmd.upper().encode('ascii') + heigth + weight + bands + spec_data - win32file.WriteFile(self.spec_send, data_send) - print(f'发送的光谱数据长度: {len(data_send)}') - print(f'spec长度: {len(spec_data)}') - except Exception as e: - print(f"数据发送失败. 错误原因: {e}") + + + # if spec_files: + # spec_file = spec_files[0] + # with open(spec_file, 'rb') as f: + # spec_data = f.read() + # + # try: + # # win32file.WriteFile(self.spec_send, len(spec_data).to_bytes(4, byteorder='big')) + # # print(f"发送的光谱数据长度: {len(spec_data)}") + # heigth = 30 + # weight = 30 + # bands = 224 + # heigth = heigth.to_bytes(2, byteorder='big') + # weight = weight.to_bytes(2, byteorder='big') + # bands = bands.to_bytes(2, byteorder='big') + # length = (len(spec_data)+8).to_bytes(4, byteorder='big') + # # cmd = 'TO':测试番茄数据;cmd = 'PF':测试百香果数据 + # cmd = 'TO' + # data_send = length + cmd.upper().encode('ascii') + heigth + weight + bands + spec_data + # win32file.WriteFile(self.spec_send, data_send) + # print(f'发送的光谱数据长度: {len(data_send)}') + # print(f'spec长度: {len(spec_data)}') + # except Exception as e: + # print(f"数据发送失败. 错误原因: {e}") self.receive_result() @@ -158,6 +196,20 @@ class MainWindow(QMainWindow): width = int.from_bytes(data[16:18], byteorder='big') rp = data[18:] img = np.frombuffer(rp, dtype=np.uint8).reshape(heigth, width, -1) + + results = { + 'Cmd': data[:2].decode('ascii').strip().upper(), + 'Brix': (int.from_bytes(data[2:4], byteorder='big')) / 1000, + 'Green Percentage': (int.from_bytes(data[4:5], byteorder='big')) / 100, + 'Diameter': (int.from_bytes(data[5:7], byteorder='big')) / 100, + 'Weight': int.from_bytes(data[7:8], byteorder='big'), + 'Defect Number': int.from_bytes(data[8:10], byteorder='big'), + 'Total Defect Area': (int.from_bytes(data[10:14], byteorder='big')) / 1000 + } + + # 调用保存到 Excel 的函数 + self.save_results_to_excel(results) + print(f"指令:{cmd_result}, 糖度值:{brix}, 绿色占比:{green_percentage}, 直径:{diameter}cm, " f"预估重量:{weight}g, 缺陷个数:{defect_num}, 缺陷面积:{total_defect_area}cm^2, 结果图的尺寸:{img.shape}") diff --git a/20240627test4/requirements.txt b/20240627test4/requirements.txt new file mode 100644 index 0000000..0e3fda7 --- /dev/null +++ b/20240627test4/requirements.txt @@ -0,0 +1,44 @@ +albumentations==1.4.11 +comet_ml==3.44.1 +coremltools==7.2 +Flask==3.0.3 +GitPython==3.1.43 +ipython==8.12.3 +joblib==1.2.0 +matplotlib==3.7.1 +mss==9.0.1 +nncf==2.11.0 +numpy==1.25.0 +onnx==1.16.1 +onnxruntime==1.18.1 +onnxsim==0.4.36 +opencv_contrib_python==4.10.0.84 +opencv_python==4.10.0.84 +opencv_python_headless==4.10.0.84 +openvino==2024.2.0 +pafy==0.5.5 +pandas==1.5.3 +Pillow==9.4.0 +psutil==5.9.0 +PyQt5==5.15.10 +PyQt5_sip==12.11.0 +pywin32==305 +PyYAML==6.0 +Requests==2.32.3 +scikit_learn==1.2.2 +scipy==1.10.1 +seaborn==0.13.2 +setuptools==60.2.0 +tensorflow==2.17.0 +tensorflowjs==4.20.0 +tensorrt==10.2.0.post1 +tflite_runtime==2.14.0 +tflite_support==0.4.4 +torch==2.0.1 +torchvision==0.15.2 +tqdm==4.65.2 +train==0.0.5 +tritonclient==2.47.0 +ultralytics==8.2.48 +ultralytics_thop==2.0.0 +x2paddle==1.4.1 diff --git a/20240627Actual_deployed/root_dir.py b/20240627test4/root_dir.py similarity index 100% rename from 20240627Actual_deployed/root_dir.py rename to 20240627test4/root_dir.py diff --git a/20240627test4/to_leaf_test.py b/20240627test4/to_leaf_test.py new file mode 100644 index 0000000..a8c8746 --- /dev/null +++ b/20240627test4/to_leaf_test.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# @Time : 2024/7/7 下午4:33 +# @Author : TG +# @File : totest.py +# @Software: PyCharm +import time +import cv2 +import numpy as np +import os +import pandas as pd +from PIL import Image +import re +from to_seg import TOSEG + + +def tryint(s): + try: + return int(s) + except ValueError: + return s + + +def natural_sort_key(s): + return [tryint(c) for c in re.split('([0-9]+)', s)] + + +def main(): + image_dir = r'D:\project\20240714Actual_deployed\testimg' + to = TOSEG() # 假设 TOSEG 是已定义好的类,可以处理图片分割 + # 获取所有.bmp文件,并进行自然排序 + rgb_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith('.bmp')] + rgb_files.sort(key=natural_sort_key) + + # 准备保存到 Excel 的数据 + records = [] + + for idx, image_path in enumerate(rgb_files): + img = cv2.imread(image_path, cv2.IMREAD_COLOR) + + # img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + t = time.time() + result = to.toseg(img) # 假设 toseg 方法接受一个图片数组,并返回处理后的图片 + e = time.time() + result = cv2.cvtColor(result, cv2.COLOR_GRAY2BGR) + process_time = e - t + print(f'第{idx + 1}张图时间:{process_time}') + + # 获取原始文件名并添加“mask”后缀 + original_filename = os.path.splitext(os.path.basename(image_path))[0] + output_filename = f'{original_filename}_leaf.png' + cv2.imwrite(os.path.join(r'D:\project\20240714Actual_deployed\leaf', + output_filename), result) + + # 添加记录到列表 + records.append({ + "Image Index": idx + 1, + "File Name": original_filename, + "Processing Time (s)": process_time + }) + + # cv2.imshow('result', result) + # cv2.waitKey(0) + # cv2.destroyAllWindows() + + # 创建 DataFrame 并写入 Excel 文件 + df = pd.DataFrame(records) + df.to_excel(r'D:\project\20240714Actual_deployed\leaf\leaf_processing_times.xlsx', index=False) + + +if __name__ == '__main__': + main() + + diff --git a/20240627test4/to_seg.py b/20240627test4/to_seg.py new file mode 100644 index 0000000..bb19a8d --- /dev/null +++ b/20240627test4/to_seg.py @@ -0,0 +1,186 @@ +import os +import sys +from pathlib import Path +import torch +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative +from models.common import DetectMultiBackend +from utils.general import check_img_size, non_max_suppression, scale_boxes +from utils.segment.general import process_mask, process_mask_native +from utils.torch_utils import select_device, smart_inference_mode +import cv2 +import numpy as np +from config import Config as setting + +def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32): + # This function remains the same as defined previously + shape = img.shape[:2] # current shape [height, width] + if isinstance(new_shape, int): + new_shape = (new_shape, new_shape) + + r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) + if not scaleup: + r = min(r, 1.0) + + ratio = r, r + new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) + dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] + if auto: + dw, dh = np.mod(dw, stride), np.mod(dh, stride) + elif scaleFill: + dw, dh = 0.0, 0.0 + new_unpad = new_shape + ratio = new_shape[0] / shape[1], new_shape[1] / shape[0] + + dw /= 2 + dh /= 2 + + if shape[::-1] != new_unpad: + img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR) + top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) + left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) + img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) + + return img, ratio, (dw, dh) +def process_image(img0, img_size=640, stride=32, auto=True): + """ + Processes an image by resizing and padding it to the required size. + + Args: + - img0 (np.array): Original image as a numpy array. + - img_size (int, optional): Desired size of the image. Defaults to 640. + - stride (int, optional): Stride size for padding. Defaults to 32. + - auto (bool, optional): If True, automatically adjusts padding to meet stride requirements. Defaults to True. + + Returns: + - np.array: The processed image ready for model input. + """ + # Resize and pad the image + im, _, _ = letterbox(img0, new_shape=img_size, stride=stride, auto=auto) + + # Convert image from HWC to CHW format and from BGR to RGB + im = im.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB + im = np.ascontiguousarray(im) + + return im + +class TOSEG: + def __init__(self, weights=Path(setting.toseg_weights), device='', dnn=False, data=None, half=False, imgsz=(640, 640)): + self.device = select_device(device) + self.model = DetectMultiBackend(weights, device=self.device, dnn=dnn, data=data, fp16=half) + self.stride, self.names, self.pt = self.model.stride, self.model.names, self.model.pt + self.imgsz = check_img_size(imgsz, s=self.stride) + self.model.warmup(imgsz=(1 if self.pt else 1, 3, *self.imgsz)) + + @smart_inference_mode() + #返回结果图像 + # def visualize(self, image, results, line_thickness=3, hide_labels=False, hide_conf=False): + # annotator = Annotator(image, line_width=line_thickness) + # + # # 获取原始图像尺寸 + # h, w = image.shape[:2] + # + # # 准备 im_gpu 参数 + # im_gpu = torch.as_tensor(image, dtype=torch.float16, device=self.device).permute(2, 0, 1).flip( + # 0).contiguous() / 255 + # + # for r in results: + # box = r['xyxy'] + # leaf = r['leaf'] + # label = None if hide_labels else (r['label'] if hide_conf else f"{r['label']} {r['conf']:.2f}") + # annotator.box_label(box, label, color=colors(r['cls'], True)) + # + # # 确保 leaf 是正确的格式并调整大小 + # if isinstance(leaf, np.ndarray): + # leaf = torch.from_numpy(leaf).to(self.device) + # elif isinstance(leaf, list): + # leaf = torch.tensor(leaf, device=self.device) + # + # # 如果 leaf 是 2D,添加批次维度 + # if leaf.ndim == 2: + # leaf = leaf.unsqueeze(0) + # + # # 调整掩码大小以匹配原始图像 + # leaf = torch.nn.functional.interpolate(leaf.unsqueeze(1).float(), size=(h, w), mode='bilinear', + # align_corners=False).squeeze(1) + # + # annotator.masks(leaf, colors=[colors(r['cls'], True)], im_gpu=im_gpu) + # + # return annotator.result() + #返回掩码图像 + def visualize(self, image, results, line_thickness=3, hide_labels=False, hide_conf=False): + # 创建一个全白的背景图像 + background = np.zeros_like(image) * 255 # 将背景设置为白色 + + h, w = image.shape[:2] # 获取图像尺寸 + + for r in results: + mask = r['leaf'] + if isinstance(mask, np.ndarray): + mask = torch.from_numpy(mask).to(self.device) + elif isinstance(mask, list): + mask = torch.tensor(mask, device=self.device) + + if mask.ndim == 2: + mask = mask.unsqueeze(0) + + # 调整掩码大小以匹配原始图像 + mask = torch.nn.functional.interpolate(mask.unsqueeze(1).float(), size=(h, w), mode='bilinear', + align_corners=False).squeeze(1) + + # 将遮罩应用于背景 + black_mask = (mask.cpu().numpy() > 0.5) # 创建一个黑色遮罩 + for i in range(3): # 对每个颜色通道进行操作 + background[:, :, i] = np.where(black_mask, 255, background[:, :, i]) # 在遮罩区域应用黑色 + + return background + + def predict(self, source, conf_thres=0.25, iou_thres=0.45, max_det=1000, classes=None, + agnostic_nms=False, augment=False, retina_masks=False): + # dataset = LoadImages(source, img_size=self.imgsz, stride=self.stride, auto=self.pt) + + + # for path, im, im0s, vid_cap, s in dataset: + im0s = source + im = process_image(im0s, img_size=self.imgsz, stride=self.stride, auto=self.pt) + im = torch.from_numpy(im).to(self.model.device) + im = im.half() if self.model.fp16 else im.float() # uint8 to fp16/32 + im /= 255 # 0 - 255 to 0.0 - 1.0 + if len(im.shape) == 3: + im = im[None] # expand for batch dim + + pred, proto = self.model(im, augment=augment)[:2] + pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det, nm=32) + + results = [] + for i, det in enumerate(pred): # per image + if len(det): + if retina_masks: + det[:, :4] = scale_boxes(im.shape[2:], det[:, :4], im0s.shape).round() + masks = process_mask_native(proto[i], det[:, 6:], det[:, :4], im0s.shape[:2]) + else: + masks = process_mask(proto[i], det[:, 6:], det[:, :4], im.shape[2:], upsample=True) + det[:, :4] = scale_boxes(im.shape[2:], det[:, :4], im0s.shape).round() + + for j, (*xyxy, conf, cls) in enumerate(reversed(det[:, :6])): + c = int(cls) + label = f'{self.names[c]} {conf:.2f}' + mask = masks[j] + results.append({ + 'xyxy': xyxy, + 'conf': conf, + 'cls': c, + 'label': label, + 'leaf': mask + }) + + return results, im0s + + def toseg(self, img): + results, image = self.predict(img) + vaa = self.visualize(image, results) + mask = cv2.cvtColor(vaa, cv2.COLOR_RGB2GRAY) + return mask \ No newline at end of file diff --git a/20240627test4/tomato-passion_fruit.log b/20240627test4/tomato-passion_fruit.log new file mode 100644 index 0000000..3f1a989 --- /dev/null +++ b/20240627test4/tomato-passion_fruit.log @@ -0,0 +1,457 @@ +2024-06-28 11:30:05,483 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 11:35:36,240 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 11:36:24,181 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 11:51:27,970 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-06-28 11:51:27,971 main.py[line:82] - ERROR - 处理失败 +2024-06-28 11:51:27,977 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 11:55:18,328 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 11:59:41,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:03:47,921 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-06-28 12:03:47,922 main.py[line:82] - ERROR - 处理失败 +2024-06-28 12:03:47,922 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:06:28,421 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:12:04,287 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:14:07,667 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:15:23,671 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:17:16,305 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:18:43,577 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:20:46,118 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:22:39,747 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 12:26:07,385 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 14:52:26,065 utils.py[line:101] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 14:55:54,058 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 14:56:51,979 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 15:18:10,133 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 15:20:59,777 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 15:23:38,138 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 15:31:44,479 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 15:48:30,938 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 16:03:04,564 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 16:07:31,464 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 16:25:01,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 16:29:57,905 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 16:49:10,627 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 16:50:30,739 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 16:52:40,850 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 17:01:43,963 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 17:05:56,524 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 17:09:33,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 17:12:01,788 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 17:13:27,639 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-28 17:20:43,034 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 15:43:42,727 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 15:52:02,852 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 16:08:30,885 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 16:21:17,909 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 16:31:42,830 utils.py[line:227] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-06-29 16:31:42,831 main.py[line:92] - ERROR - 处理失败 +2024-06-29 16:31:42,831 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 16:35:42,748 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 16:44:57,631 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 16:49:04,069 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 16:53:18,366 utils.py[line:158] - ERROR - 图像指令转换失败,数据长度错误 +2024-06-29 17:17:24,471 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 17:44:57,312 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 17:48:31,343 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-06-29 17:48:31,344 main.py[line:95] - ERROR - 处理失败 +2024-06-29 17:48:31,344 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 17:52:27,224 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-29 18:40:34,394 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-06-29 18:40:34,395 main.py[line:95] - ERROR - 处理失败 +2024-06-29 18:40:34,395 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-30 12:45:15,007 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-30 12:57:37,170 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-30 13:01:35,413 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-30 14:14:42,010 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-30 14:24:06,845 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-06-30 14:35:07,953 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 15:27:37,749 utils.py[line:161] - ERROR - 图像指令转换失败,数据长度错误 +2024-07-01 16:23:59,608 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 16:27:39,666 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 16:45:20,986 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 16:49:36,061 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 16:57:25,351 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:01:32,692 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:22:45,049 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:25:23,065 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-01 17:25:23,065 main.py[line:101] - ERROR - 处理失败 +2024-07-01 17:25:23,065 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:27:39,278 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:29:37,321 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:31:32,282 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:33:22,204 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:35:32,399 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:46:20,681 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:47:51,507 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-01 17:51:45,559 utils.py[line:230] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-01 17:51:45,559 main.py[line:101] - ERROR - 处理失败 +2024-07-01 17:51:45,560 utils.py[line:84] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 14:08:48,265 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 14:08:48,265 main.py[line:108] - ERROR - 处理失败 +2024-07-04 14:08:49,453 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 14:08:49,453 main.py[line:108] - ERROR - 处理失败 +2024-07-04 14:08:50,744 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 14:08:50,744 main.py[line:108] - ERROR - 处理失败 +2024-07-04 14:08:50,744 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 14:27:19,068 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 16:41:47,465 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 16:45:24,931 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 16:49:02,620 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 16:51:48,679 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 16:53:58,252 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 17:00:49,493 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 17:08:10,792 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:10,793 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:12,041 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:12,042 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:13,179 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:13,179 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:14,424 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:14,425 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:15,606 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:15,606 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:16,934 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:16,934 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:18,134 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:18,134 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:19,383 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:19,383 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:20,639 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:20,639 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:21,809 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:08:21,809 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:08:21,810 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 17:18:14,994 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-04 17:20:39,388 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:39,388 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:40,562 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:40,563 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:41,738 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:41,738 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:43,017 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:43,017 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:44,275 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:44,275 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:45,548 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:45,548 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:46,743 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:46,743 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:47,987 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:47,987 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:49,183 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:49,183 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:50,393 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:50,394 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:51,724 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:51,724 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:52,901 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:52,901 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:54,161 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:54,161 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:55,332 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:55,333 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:56,561 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-04 17:20:56,561 main.py[line:110] - ERROR - 处理失败 +2024-07-04 17:20:56,561 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-05 14:23:17,274 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-05 14:52:48,462 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-05 14:59:25,432 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-05 14:59:25,433 main.py[line:110] - ERROR - 处理失败 +2024-07-05 14:59:25,433 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-05 15:21:42,677 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 15:39:01,858 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 15:46:25,324 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 16:31:01,725 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 16:32:57,727 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 16:35:39,825 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 16:57:43,916 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 17:28:44,904 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 17:42:03,094 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-06 17:42:03,094 main.py[line:110] - ERROR - 处理失败 +2024-07-06 17:42:04,263 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-06 17:42:04,263 main.py[line:110] - ERROR - 处理失败 +2024-07-06 17:42:05,507 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-06 17:42:05,507 main.py[line:110] - ERROR - 处理失败 +2024-07-06 19:07:46,189 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 20:33:21,028 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 20:43:24,359 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-06 20:45:53,598 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-06 20:45:53,599 main.py[line:110] - ERROR - 处理失败 +2024-07-06 20:45:54,751 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-06 20:45:54,751 main.py[line:110] - ERROR - 处理失败 +2024-07-06 20:45:56,017 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-06 20:45:56,017 main.py[line:110] - ERROR - 处理失败 +2024-07-06 20:45:56,017 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 09:05:50,186 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:50,186 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:51,382 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:51,382 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:52,583 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:52,584 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:53,909 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:53,909 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:55,070 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:55,070 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:56,335 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:56,335 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:57,471 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:57,471 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:58,682 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:58,682 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:05:59,811 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:05:59,812 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:00,961 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:00,961 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:02,190 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:02,190 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:03,350 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:03,350 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:04,553 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:04,553 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:05,659 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:05,660 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:06,869 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:06,870 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:07,986 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:07,986 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:09,130 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 09:06:09,130 main.py[line:110] - ERROR - 处理失败 +2024-07-07 09:06:09,132 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 09:12:39,560 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 09:16:16,776 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 11:33:16,851 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 11:40:33,833 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 11:42:59,905 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 11:48:01,402 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 11:50:49,976 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 11:55:37,758 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 12:03:52,555 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 12:48:51,656 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误 +2024-07-07 12:57:58,164 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 14:31:13,151 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 15:14:10,012 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:10,012 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:11,366 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:11,367 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:12,667 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:12,667 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:13,975 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:13,975 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:15,163 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:15,163 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:16,442 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:16,443 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:17,700 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:17,700 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:18,901 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:18,901 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:20,195 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:20,195 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:21,538 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:21,538 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:22,842 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:22,842 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:24,019 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:24,020 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:25,346 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:25,346 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:26,540 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:26,541 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:27,750 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:27,750 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:29,060 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:29,060 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:30,259 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:14:30,259 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:14:30,280 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 15:29:47,675 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:47,676 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:48,883 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:48,883 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:50,076 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:50,077 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:51,389 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:51,389 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:52,601 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:52,601 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:53,893 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:53,893 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:55,103 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:55,104 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:56,406 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:56,406 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:57,596 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:57,596 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:29:58,841 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:29:58,841 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:00,179 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:30:00,179 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:01,409 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:30:01,410 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:02,697 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:30:02,698 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:03,898 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:30:03,899 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:05,199 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:30:05,199 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:06,427 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:30:06,427 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:07,616 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 15:30:07,616 main.py[line:110] - ERROR - 处理失败 +2024-07-07 15:30:07,637 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 16:18:38,077 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 16:18:38,078 main.py[line:110] - ERROR - 处理失败 +2024-07-07 16:18:39,022 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 16:18:39,023 main.py[line:110] - ERROR - 处理失败 +2024-07-07 16:18:40,052 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 16:18:40,053 main.py[line:110] - ERROR - 处理失败 +2024-07-07 16:18:41,201 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 16:18:41,201 main.py[line:110] - ERROR - 处理失败 +2024-07-07 16:18:42,336 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 16:18:42,336 main.py[line:110] - ERROR - 处理失败 +2024-07-07 16:18:43,586 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 16:18:43,587 main.py[line:110] - ERROR - 处理失败 +2024-07-07 16:18:44,791 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-07 16:18:44,791 main.py[line:110] - ERROR - 处理失败 +2024-07-07 16:28:01,454 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 16:50:24,922 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 17:37:51,829 pipe_utils.py[line:104] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 17:55:04,504 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 17:59:48,356 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 18:25:13,744 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 18:55:15,790 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-07 19:10:32,354 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 09:24:38,903 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 09:39:36,127 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 09:45:37,431 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 11:09:16,559 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 11:13:06,783 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 11:27:00,565 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 11:40:36,810 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 12:02:35,135 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 12:42:16,270 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 12:44:05,091 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 13:00:54,572 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 13:04:07,171 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 13:08:00,371 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 13:12:10,509 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 14:40:30,277 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 14:43:28,816 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 15:17:54,843 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 15:55:38,941 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 15:59:18,181 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 16:01:33,259 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 16:08:34,599 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 16:11:00,155 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 16:43:42,636 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 16:50:43,173 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 17:08:09,783 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 17:16:04,619 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 17:40:47,970 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 17:48:37,988 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 17:57:01,928 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 18:34:11,766 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-08 18:35:40,659 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 08:55:35,459 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 09:02:26,287 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误 +2024-07-09 09:10:57,173 pipe_utils.py[line:104] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 09:15:43,719 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误 +2024-07-09 09:23:08,794 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 10:18:50,702 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误 +2024-07-09 10:38:34,151 pipe_utils.py[line:162] - ERROR - 图像指令转换失败,数据长度错误 +2024-07-09 10:45:15,487 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 11:03:10,520 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 11:09:11,430 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 11:16:00,876 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 15:22:28,025 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 15:27:28,876 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 15:49:20,318 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 16:14:06,963 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 17:12:28,074 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 17:21:46,134 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 18:42:35,725 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 18:48:46,486 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 18:49:59,862 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 18:53:36,014 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 18:55:27,600 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 19:04:17,082 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-09 19:08:17,174 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 06:26:42,776 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 07:01:40,315 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 08:26:27,343 pipe_utils.py[line:231] - ERROR - 发送指令失败,错误类型:(232, 'WriteFile', '管道正在被关闭。') +2024-07-10 08:26:27,343 main.py[line:113] - ERROR - 处理失败 +2024-07-10 08:26:27,345 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 09:09:42,450 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 10:06:33,515 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 11:43:46,982 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 12:09:14,853 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 12:12:40,941 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 12:18:01,000 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 12:25:47,254 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 14:14:58,422 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 14:18:28,047 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 14:21:52,725 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 14:24:46,863 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 14:35:13,271 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 14:38:22,932 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-10 17:21:05,363 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 11:41:03,215 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 11:43:19,922 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 11:48:49,239 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 11:51:05,972 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 11:53:49,877 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 12:06:22,516 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:18:06,630 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:24:32,560 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:27:28,554 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:31:09,505 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:35:34,850 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:39:31,434 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:46:11,927 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:49:21,103 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:52:53,712 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 13:57:44,190 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 15:43:52,570 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 16:09:54,143 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 17:43:57,577 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:15:56,608 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:19:34,912 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:24:31,666 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:28:53,782 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:32:02,373 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:36:43,949 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:42:14,595 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-12 18:46:56,102 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 18:55:44,441 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 19:10:42,177 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 19:39:08,500 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 20:13:21,091 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 20:15:58,584 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 20:21:29,532 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 20:26:05,871 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 20:31:43,184 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 21:55:12,612 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 21:57:48,492 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 22:03:20,562 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-14 22:05:51,415 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-15 23:29:16,269 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-15 23:34:33,796 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-15 23:49:43,143 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-16 00:44:00,856 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-16 17:41:22,234 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-16 19:23:17,696 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 12:18:32,533 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 12:20:15,008 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 12:24:47,331 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 13:05:01,439 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 13:05:42,329 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 13:06:17,381 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 13:16:35,878 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 13:22:42,129 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 14:07:31,788 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 14:08:39,988 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 14:09:56,546 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 14:10:55,811 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 14:11:57,781 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 14:12:58,772 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') +2024-07-18 14:25:50,717 pipe_utils.py[line:85] - ERROR - 数据接收失败,错误原因: (109, 'ReadFile', '管道已结束。') diff --git a/20240627Actual_deployed/utils/__init__.py b/20240627test4/utils/__init__.py similarity index 100% rename from 20240627Actual_deployed/utils/__init__.py rename to 20240627test4/utils/__init__.py diff --git a/20240627Actual_deployed/utils/activations.py b/20240627test4/utils/activations.py similarity index 100% rename from 20240627Actual_deployed/utils/activations.py rename to 20240627test4/utils/activations.py diff --git a/20240627Actual_deployed/utils/augmentations.py b/20240627test4/utils/augmentations.py similarity index 99% rename from 20240627Actual_deployed/utils/augmentations.py rename to 20240627test4/utils/augmentations.py index 4a6e441..6b51b9c 100644 --- a/20240627Actual_deployed/utils/augmentations.py +++ b/20240627test4/utils/augmentations.py @@ -287,7 +287,7 @@ def cutout(im, labels, p=0.5): xmax = min(w, xmin + mask_w) ymax = min(h, ymin + mask_h) - # apply random color mask + # apply random color leaf im[ymin:ymax, xmin:xmax] = [random.randint(64, 191) for _ in range(3)] # return unobscured labels diff --git a/20240627Actual_deployed/utils/autoanchor.py b/20240627test4/utils/autoanchor.py similarity index 100% rename from 20240627Actual_deployed/utils/autoanchor.py rename to 20240627test4/utils/autoanchor.py diff --git a/20240627Actual_deployed/utils/autobatch.py b/20240627test4/utils/autobatch.py similarity index 100% rename from 20240627Actual_deployed/utils/autobatch.py rename to 20240627test4/utils/autobatch.py diff --git a/20240627Actual_deployed/utils/aws/__init__.py b/20240627test4/utils/aws/__init__.py similarity index 100% rename from 20240627Actual_deployed/utils/aws/__init__.py rename to 20240627test4/utils/aws/__init__.py diff --git a/20240627Actual_deployed/utils/aws/mime.sh b/20240627test4/utils/aws/mime.sh similarity index 100% rename from 20240627Actual_deployed/utils/aws/mime.sh rename to 20240627test4/utils/aws/mime.sh diff --git a/20240627Actual_deployed/utils/aws/resume.py b/20240627test4/utils/aws/resume.py similarity index 100% rename from 20240627Actual_deployed/utils/aws/resume.py rename to 20240627test4/utils/aws/resume.py diff --git a/20240627Actual_deployed/utils/aws/userdata.sh b/20240627test4/utils/aws/userdata.sh similarity index 100% rename from 20240627Actual_deployed/utils/aws/userdata.sh rename to 20240627test4/utils/aws/userdata.sh diff --git a/20240627Actual_deployed/utils/callbacks.py b/20240627test4/utils/callbacks.py similarity index 100% rename from 20240627Actual_deployed/utils/callbacks.py rename to 20240627test4/utils/callbacks.py diff --git a/20240627Actual_deployed/utils/dataloaders.py b/20240627test4/utils/dataloaders.py similarity index 100% rename from 20240627Actual_deployed/utils/dataloaders.py rename to 20240627test4/utils/dataloaders.py diff --git a/20240627Actual_deployed/utils/docker/Dockerfile b/20240627test4/utils/docker/Dockerfile similarity index 100% rename from 20240627Actual_deployed/utils/docker/Dockerfile rename to 20240627test4/utils/docker/Dockerfile diff --git a/20240627Actual_deployed/utils/docker/Dockerfile-arm64 b/20240627test4/utils/docker/Dockerfile-arm64 similarity index 100% rename from 20240627Actual_deployed/utils/docker/Dockerfile-arm64 rename to 20240627test4/utils/docker/Dockerfile-arm64 diff --git a/20240627Actual_deployed/utils/docker/Dockerfile-cpu b/20240627test4/utils/docker/Dockerfile-cpu similarity index 100% rename from 20240627Actual_deployed/utils/docker/Dockerfile-cpu rename to 20240627test4/utils/docker/Dockerfile-cpu diff --git a/20240627Actual_deployed/utils/downloads.py b/20240627test4/utils/downloads.py similarity index 100% rename from 20240627Actual_deployed/utils/downloads.py rename to 20240627test4/utils/downloads.py diff --git a/20240627Actual_deployed/utils/flask_rest_api/README.md b/20240627test4/utils/flask_rest_api/README.md similarity index 100% rename from 20240627Actual_deployed/utils/flask_rest_api/README.md rename to 20240627test4/utils/flask_rest_api/README.md diff --git a/20240627Actual_deployed/utils/flask_rest_api/example_request.py b/20240627test4/utils/flask_rest_api/example_request.py similarity index 100% rename from 20240627Actual_deployed/utils/flask_rest_api/example_request.py rename to 20240627test4/utils/flask_rest_api/example_request.py diff --git a/20240627Actual_deployed/utils/flask_rest_api/restapi.py b/20240627test4/utils/flask_rest_api/restapi.py similarity index 100% rename from 20240627Actual_deployed/utils/flask_rest_api/restapi.py rename to 20240627test4/utils/flask_rest_api/restapi.py diff --git a/20240627Actual_deployed/utils/general.py b/20240627test4/utils/general.py similarity index 99% rename from 20240627Actual_deployed/utils/general.py rename to 20240627test4/utils/general.py index 95a7664..a7b9caf 100644 --- a/20240627Actual_deployed/utils/general.py +++ b/20240627test4/utils/general.py @@ -1048,7 +1048,7 @@ def non_max_suppression( merge = False # use merge-NMS t = time.time() - mi = 5 + nc # mask start index + mi = 5 + nc # leaf start index output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs for xi, x in enumerate(prediction): # image index, image inference # Apply constraints diff --git a/20240627Actual_deployed/utils/google_app_engine/Dockerfile b/20240627test4/utils/google_app_engine/Dockerfile similarity index 100% rename from 20240627Actual_deployed/utils/google_app_engine/Dockerfile rename to 20240627test4/utils/google_app_engine/Dockerfile diff --git a/20240627Actual_deployed/utils/google_app_engine/additional_requirements.txt b/20240627test4/utils/google_app_engine/additional_requirements.txt similarity index 100% rename from 20240627Actual_deployed/utils/google_app_engine/additional_requirements.txt rename to 20240627test4/utils/google_app_engine/additional_requirements.txt diff --git a/20240627Actual_deployed/utils/google_app_engine/app.yaml b/20240627test4/utils/google_app_engine/app.yaml similarity index 100% rename from 20240627Actual_deployed/utils/google_app_engine/app.yaml rename to 20240627test4/utils/google_app_engine/app.yaml diff --git a/20240627Actual_deployed/utils/loggers/__init__.py b/20240627test4/utils/loggers/__init__.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/__init__.py rename to 20240627test4/utils/loggers/__init__.py diff --git a/20240627Actual_deployed/utils/loggers/clearml/README.md b/20240627test4/utils/loggers/clearml/README.md similarity index 100% rename from 20240627Actual_deployed/utils/loggers/clearml/README.md rename to 20240627test4/utils/loggers/clearml/README.md diff --git a/20240627Actual_deployed/utils/loggers/clearml/__init__.py b/20240627test4/utils/loggers/clearml/__init__.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/clearml/__init__.py rename to 20240627test4/utils/loggers/clearml/__init__.py diff --git a/20240627Actual_deployed/utils/loggers/clearml/clearml_utils.py b/20240627test4/utils/loggers/clearml/clearml_utils.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/clearml/clearml_utils.py rename to 20240627test4/utils/loggers/clearml/clearml_utils.py diff --git a/20240627Actual_deployed/utils/loggers/clearml/hpo.py b/20240627test4/utils/loggers/clearml/hpo.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/clearml/hpo.py rename to 20240627test4/utils/loggers/clearml/hpo.py diff --git a/20240627Actual_deployed/utils/loggers/comet/README.md b/20240627test4/utils/loggers/comet/README.md similarity index 100% rename from 20240627Actual_deployed/utils/loggers/comet/README.md rename to 20240627test4/utils/loggers/comet/README.md diff --git a/20240627Actual_deployed/utils/loggers/comet/__init__.py b/20240627test4/utils/loggers/comet/__init__.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/comet/__init__.py rename to 20240627test4/utils/loggers/comet/__init__.py diff --git a/20240627Actual_deployed/utils/loggers/comet/comet_utils.py b/20240627test4/utils/loggers/comet/comet_utils.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/comet/comet_utils.py rename to 20240627test4/utils/loggers/comet/comet_utils.py diff --git a/20240627Actual_deployed/utils/loggers/comet/hpo.py b/20240627test4/utils/loggers/comet/hpo.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/comet/hpo.py rename to 20240627test4/utils/loggers/comet/hpo.py diff --git a/20240627Actual_deployed/utils/loggers/comet/optimizer_config.json b/20240627test4/utils/loggers/comet/optimizer_config.json similarity index 100% rename from 20240627Actual_deployed/utils/loggers/comet/optimizer_config.json rename to 20240627test4/utils/loggers/comet/optimizer_config.json diff --git a/20240627Actual_deployed/utils/loggers/wandb/__init__.py b/20240627test4/utils/loggers/wandb/__init__.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/wandb/__init__.py rename to 20240627test4/utils/loggers/wandb/__init__.py diff --git a/20240627Actual_deployed/utils/loggers/wandb/wandb_utils.py b/20240627test4/utils/loggers/wandb/wandb_utils.py similarity index 100% rename from 20240627Actual_deployed/utils/loggers/wandb/wandb_utils.py rename to 20240627test4/utils/loggers/wandb/wandb_utils.py diff --git a/20240627Actual_deployed/utils/loss.py b/20240627test4/utils/loss.py similarity index 100% rename from 20240627Actual_deployed/utils/loss.py rename to 20240627test4/utils/loss.py diff --git a/20240627Actual_deployed/utils/metrics.py b/20240627test4/utils/metrics.py similarity index 100% rename from 20240627Actual_deployed/utils/metrics.py rename to 20240627test4/utils/metrics.py diff --git a/20240627Actual_deployed/utils/plots.py b/20240627test4/utils/plots.py similarity index 100% rename from 20240627Actual_deployed/utils/plots.py rename to 20240627test4/utils/plots.py diff --git a/20240627Actual_deployed/utils/segment/__init__.py b/20240627test4/utils/segment/__init__.py similarity index 100% rename from 20240627Actual_deployed/utils/segment/__init__.py rename to 20240627test4/utils/segment/__init__.py diff --git a/20240627Actual_deployed/utils/segment/augmentations.py b/20240627test4/utils/segment/augmentations.py similarity index 100% rename from 20240627Actual_deployed/utils/segment/augmentations.py rename to 20240627test4/utils/segment/augmentations.py diff --git a/20240627Actual_deployed/utils/segment/dataloaders.py b/20240627test4/utils/segment/dataloaders.py similarity index 98% rename from 20240627Actual_deployed/utils/segment/dataloaders.py rename to 20240627test4/utils/segment/dataloaders.py index c2be5f0..b1464aa 100644 --- a/20240627Actual_deployed/utils/segment/dataloaders.py +++ b/20240627test4/utils/segment/dataloaders.py @@ -103,7 +103,7 @@ class LoadImagesAndLabelsAndMasks(LoadImagesAndLabels): # for training/testing rank=-1, seed=0, ): - """Initializes the dataset with image, label, and mask loading capabilities for training/testing.""" + """Initializes the dataset with image, label, and leaf loading capabilities for training/testing.""" super().__init__( path, img_size, @@ -317,7 +317,7 @@ def polygon2mask(img_size, polygons, color=1, downsample_ratio=1): cv2.fillPoly(mask, polygons, color=color) nh, nw = (img_size[0] // downsample_ratio, img_size[1] // downsample_ratio) # NOTE: fillPoly firstly then resize is trying the keep the same way - # of loss calculation when mask-ratio=1. + # of loss calculation when leaf-ratio=1. mask = cv2.resize(mask, (nw, nh)) return mask @@ -338,7 +338,7 @@ def polygons2masks(img_size, polygons, color, downsample_ratio=1): def polygons2masks_overlap(img_size, segments, downsample_ratio=1): - """Return a (640, 640) overlap mask.""" + """Return a (640, 640) overlap leaf.""" masks = np.zeros( (img_size[0] // downsample_ratio, img_size[1] // downsample_ratio), dtype=np.int32 if len(segments) > 255 else np.uint8, diff --git a/20240627Actual_deployed/utils/segment/general.py b/20240627test4/utils/segment/general.py similarity index 100% rename from 20240627Actual_deployed/utils/segment/general.py rename to 20240627test4/utils/segment/general.py diff --git a/20240627Actual_deployed/utils/segment/loss.py b/20240627test4/utils/segment/loss.py similarity index 98% rename from 20240627Actual_deployed/utils/segment/loss.py rename to 20240627test4/utils/segment/loss.py index d4bc9d3..8d8826f 100644 --- a/20240627Actual_deployed/utils/segment/loss.py +++ b/20240627test4/utils/segment/loss.py @@ -48,7 +48,7 @@ class ComputeLoss: def __call__(self, preds, targets, masks): # predictions, targets, model """Evaluates YOLOv5 model's loss for given predictions, targets, and masks; returns total loss components.""" p, proto = preds - bs, nm, mask_h, mask_w = proto.shape # batch size, number of masks, mask height, mask width + bs, nm, mask_h, mask_w = proto.shape # batch size, number of masks, leaf height, leaf width lcls = torch.zeros(1, device=self.device) lbox = torch.zeros(1, device=self.device) lobj = torch.zeros(1, device=self.device) @@ -89,7 +89,7 @@ class ComputeLoss: # Mask regression if tuple(masks.shape[-2:]) != (mask_h, mask_w): # downsample masks = F.interpolate(masks[None], (mask_h, mask_w), mode="nearest")[0] - marea = xywhn[i][:, 2:].prod(1) # mask width, height normalized + marea = xywhn[i][:, 2:].prod(1) # leaf width, height normalized mxyxy = xywh2xyxy(xywhn[i] * torch.tensor([mask_w, mask_h, mask_w, mask_h], device=self.device)) for bi in b.unique(): j = b == bi # matching index @@ -115,7 +115,7 @@ class ComputeLoss: return loss * bs, torch.cat((lbox, lseg, lobj, lcls)).detach() def single_mask_loss(self, gt_mask, pred, proto, xyxy, area): - """Calculates and normalizes single mask loss for YOLOv5 between predicted and ground truth masks.""" + """Calculates and normalizes single leaf loss for YOLOv5 between predicted and ground truth masks.""" pred_mask = (pred @ proto.view(self.nm, -1)).view(-1, *proto.shape[1:]) # (n,32) @ (32,80,80) -> (n,80,80) loss = F.binary_cross_entropy_with_logits(pred_mask, gt_mask, reduction="none") return (crop_mask(loss, xyxy).mean(dim=(1, 2)) / area).mean() diff --git a/20240627Actual_deployed/utils/segment/metrics.py b/20240627test4/utils/segment/metrics.py similarity index 96% rename from 20240627Actual_deployed/utils/segment/metrics.py rename to 20240627test4/utils/segment/metrics.py index 6f57dec..d5615a3 100644 --- a/20240627Actual_deployed/utils/segment/metrics.py +++ b/20240627test4/utils/segment/metrics.py @@ -169,22 +169,22 @@ class Metrics: self.metric_mask.update(list(results["masks"].values())) def mean_results(self): - """Computes and returns the mean results for both box and mask metrics by summing their individual means.""" + """Computes and returns the mean results for both box and leaf metrics by summing their individual means.""" return self.metric_box.mean_results() + self.metric_mask.mean_results() def class_result(self, i): - """Returns the sum of box and mask metric results for a specified class index `i`.""" + """Returns the sum of box and leaf metric results for a specified class index `i`.""" return self.metric_box.class_result(i) + self.metric_mask.class_result(i) def get_maps(self, nc): - """Calculates and returns the sum of mean average precisions (mAPs) for both box and mask metrics for `nc` + """Calculates and returns the sum of mean average precisions (mAPs) for both box and leaf metrics for `nc` classes. """ return self.metric_box.get_maps(nc) + self.metric_mask.get_maps(nc) @property def ap_class_index(self): - """Returns the class index for average precision, shared by both box and mask metrics.""" + """Returns the class index for average precision, shared by both box and leaf metrics.""" return self.metric_box.ap_class_index diff --git a/20240627Actual_deployed/utils/segment/plots.py b/20240627test4/utils/segment/plots.py similarity index 100% rename from 20240627Actual_deployed/utils/segment/plots.py rename to 20240627test4/utils/segment/plots.py diff --git a/20240627Actual_deployed/utils/torch_utils.py b/20240627test4/utils/torch_utils.py similarity index 100% rename from 20240627Actual_deployed/utils/torch_utils.py rename to 20240627test4/utils/torch_utils.py diff --git a/20240627Actual_deployed/utils/triton.py b/20240627test4/utils/triton.py similarity index 100% rename from 20240627Actual_deployed/utils/triton.py rename to 20240627test4/utils/triton.py diff --git a/20240627test4/weights/20240711_obj_best.pt b/20240627test4/weights/20240711_obj_best.pt new file mode 100644 index 0000000..93a09a1 Binary files /dev/null and b/20240627test4/weights/20240711_obj_best.pt differ diff --git a/20240627test4/weights/20240711_seg_best.pt b/20240627test4/weights/20240711_seg_best.pt new file mode 100644 index 0000000..8386377 Binary files /dev/null and b/20240627test4/weights/20240711_seg_best.pt differ diff --git a/20240627test4/weights/20240712_obj_best.pt b/20240627test4/weights/20240712_obj_best.pt new file mode 100644 index 0000000..ccc0fd7 Binary files /dev/null and b/20240627test4/weights/20240712_obj_best.pt differ diff --git a/20240627Actual_deployed/weights/best.pt b/20240627test4/weights/raw_obj_best.pt similarity index 100% rename from 20240627Actual_deployed/weights/best.pt rename to 20240627test4/weights/raw_obj_best.pt diff --git a/20240627test4/weights/raw_seg_best.pt b/20240627test4/weights/raw_seg_best.pt new file mode 100644 index 0000000..69eb51c Binary files /dev/null and b/20240627test4/weights/raw_seg_best.pt differ