mirror of
https://gitee.com/nanjing-yimao-information/ieemoo-ai-gift.git
synced 2025-08-18 21:30:25 +00:00
merge_imgs
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@ -164,3 +164,5 @@ pnnx*
|
|||||||
|
|
||||||
# Autogenerated files for tests
|
# Autogenerated files for tests
|
||||||
/ultralytics/assets/
|
/ultralytics/assets/
|
||||||
|
confusion_gift_cls4_0.45/
|
||||||
|
*.jpg
|
80
prt/.txt
Normal file
80
prt/.txt
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
0
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.013 0.014 0.016 0.018 0.020 0.021 0.023 0.025 0.027 0.030 0.033 0.037 0.041 0.045 0.052 0.059 0.067 0.079 0.090 0.104 0.123 0.138 0.179 0.225 0.272 0.311 0.362 0.428 0.551 0.618
|
||||||
|
R 0.950 0.950 0.949 0.947 0.946 0.946 0.946 0.945 0.945 0.940 0.939 0.939 0.939 0.937 0.936 0.934 0.932 0.927 0.925 0.924 0.922 0.920 0.917 0.912 0.903 0.901 0.899 0.887 0.867 0.855
|
||||||
|
1
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.036 0.039 0.041 0.045 0.049 0.052 0.056 0.060 0.065 0.070 0.076 0.083 0.091 0.100 0.108 0.115 0.129 0.142 0.155 0.174 0.189 0.201 0.226 0.254 0.289 0.318 0.350 0.409 0.472 0.517
|
||||||
|
R 0.934 0.934 0.934 0.933 0.931 0.931 0.930 0.928 0.928 0.927 0.927 0.925 0.924 0.923 0.922 0.921 0.919 0.917 0.916 0.914 0.910 0.909 0.905 0.903 0.899 0.897 0.890 0.878 0.871 0.866
|
||||||
|
2
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.189 0.195 0.210 0.218 0.228 0.233 0.244 0.251 0.264 0.275 0.288 0.294 0.300 0.318 0.337 0.343 0.358 0.365 0.384 0.404 0.430 0.499 0.517 0.555 0.566 0.608 0.647 0.662 0.675 0.696
|
||||||
|
R 0.645 0.640 0.629 0.623 0.617 0.613 0.606 0.603 0.593 0.584 0.576 0.571 0.568 0.560 0.545 0.537 0.522 0.514 0.503 0.493 0.485 0.436 0.418 0.400 0.398 0.375 0.349 0.342 0.329 0.311
|
||||||
|
3
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.006 0.006 0.006 0.007 0.007 0.008 0.009 0.009 0.010 0.013 0.018 0.021 0.023 0.026 0.027 0.035 0.038 0.039 0.041 0.049 0.052 0.064 0.087
|
||||||
|
R 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984
|
||||||
|
0
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.013 0.014 0.016 0.018 0.020 0.021 0.023 0.025 0.027 0.030 0.033 0.037 0.041 0.045 0.052 0.059 0.067 0.079 0.090 0.104 0.123 0.138 0.179 0.225 0.272 0.311 0.362 0.428 0.551 0.618
|
||||||
|
R 0.950 0.950 0.949 0.947 0.946 0.946 0.946 0.945 0.945 0.940 0.939 0.939 0.939 0.937 0.936 0.934 0.932 0.927 0.925 0.924 0.922 0.920 0.917 0.912 0.903 0.901 0.899 0.887 0.867 0.855
|
||||||
|
1
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.036 0.039 0.041 0.045 0.049 0.052 0.056 0.060 0.065 0.070 0.076 0.083 0.091 0.100 0.108 0.115 0.129 0.142 0.155 0.174 0.189 0.201 0.226 0.254 0.289 0.318 0.350 0.409 0.472 0.517
|
||||||
|
R 0.934 0.934 0.934 0.933 0.931 0.931 0.930 0.928 0.928 0.927 0.927 0.925 0.924 0.923 0.922 0.921 0.919 0.917 0.916 0.914 0.910 0.909 0.905 0.903 0.899 0.897 0.890 0.878 0.871 0.866
|
||||||
|
2
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.189 0.195 0.210 0.218 0.228 0.233 0.244 0.251 0.264 0.275 0.288 0.294 0.300 0.318 0.337 0.343 0.358 0.365 0.384 0.404 0.430 0.499 0.517 0.555 0.566 0.608 0.647 0.662 0.675 0.696
|
||||||
|
R 0.645 0.640 0.629 0.623 0.617 0.613 0.606 0.603 0.593 0.584 0.576 0.571 0.568 0.560 0.545 0.537 0.522 0.514 0.503 0.493 0.485 0.436 0.418 0.400 0.398 0.375 0.349 0.342 0.329 0.311
|
||||||
|
3
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.006 0.006 0.006 0.007 0.007 0.008 0.009 0.009 0.010 0.013 0.018 0.021 0.023 0.026 0.027 0.035 0.038 0.039 0.041 0.049 0.052 0.064 0.087
|
||||||
|
R 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984
|
||||||
|
0
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.013 0.014 0.015 0.018 0.020 0.021 0.023 0.025 0.027 0.030 0.033 0.037 0.041 0.046 0.052 0.059 0.065 0.079 0.090 0.104 0.122 0.134 0.168 0.214 0.261 0.310 0.358 0.432 0.553 0.617
|
||||||
|
R 0.950 0.950 0.950 0.947 0.945 0.945 0.945 0.944 0.944 0.939 0.938 0.938 0.938 0.936 0.935 0.934 0.932 0.927 0.925 0.924 0.923 0.921 0.917 0.912 0.905 0.901 0.899 0.887 0.867 0.856
|
||||||
|
1
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.036 0.039 0.041 0.045 0.049 0.052 0.056 0.060 0.066 0.070 0.077 0.084 0.092 0.102 0.108 0.116 0.129 0.142 0.155 0.174 0.188 0.202 0.226 0.255 0.289 0.317 0.349 0.410 0.473 0.515
|
||||||
|
R 0.934 0.934 0.934 0.933 0.931 0.931 0.930 0.928 0.928 0.927 0.927 0.925 0.924 0.923 0.923 0.921 0.919 0.917 0.916 0.914 0.911 0.908 0.905 0.903 0.899 0.897 0.890 0.877 0.871 0.866
|
||||||
|
2
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.190 0.196 0.211 0.218 0.228 0.233 0.244 0.251 0.264 0.275 0.289 0.294 0.300 0.319 0.337 0.343 0.358 0.367 0.383 0.404 0.429 0.498 0.514 0.555 0.566 0.609 0.647 0.662 0.675 0.694
|
||||||
|
R 0.643 0.640 0.629 0.623 0.617 0.613 0.606 0.603 0.593 0.585 0.574 0.571 0.568 0.559 0.545 0.537 0.522 0.513 0.504 0.493 0.487 0.436 0.422 0.400 0.397 0.375 0.349 0.342 0.329 0.316
|
||||||
|
3
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.006 0.006 0.006 0.007 0.007 0.008 0.009 0.009 0.010 0.013 0.018 0.021 0.023 0.026 0.028 0.035 0.038 0.039 0.042 0.049 0.052 0.065 0.088
|
||||||
|
R 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984
|
||||||
|
0
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.013 0.014 0.015 0.018 0.020 0.021 0.023 0.025 0.027 0.030 0.033 0.037 0.041 0.046 0.052 0.059 0.065 0.079 0.090 0.104 0.122 0.134 0.168 0.214 0.261 0.310 0.358 0.432 0.553 0.617
|
||||||
|
R 0.950 0.950 0.950 0.947 0.945 0.945 0.945 0.944 0.944 0.939 0.938 0.938 0.938 0.936 0.935 0.934 0.932 0.927 0.925 0.924 0.923 0.921 0.917 0.912 0.905 0.901 0.899 0.887 0.867 0.856
|
||||||
|
1
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.036 0.039 0.041 0.045 0.049 0.052 0.056 0.060 0.066 0.070 0.077 0.084 0.092 0.102 0.108 0.116 0.129 0.142 0.155 0.174 0.188 0.202 0.226 0.255 0.289 0.317 0.349 0.410 0.473 0.515
|
||||||
|
R 0.934 0.934 0.934 0.933 0.931 0.931 0.930 0.928 0.928 0.927 0.927 0.925 0.924 0.923 0.923 0.921 0.919 0.917 0.916 0.914 0.911 0.908 0.905 0.903 0.899 0.897 0.890 0.877 0.871 0.866
|
||||||
|
2
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.190 0.196 0.211 0.218 0.228 0.233 0.244 0.251 0.264 0.275 0.289 0.294 0.300 0.319 0.337 0.343 0.358 0.367 0.383 0.404 0.429 0.498 0.514 0.555 0.566 0.609 0.647 0.662 0.675 0.694
|
||||||
|
R 0.643 0.640 0.629 0.623 0.617 0.613 0.606 0.603 0.593 0.585 0.574 0.571 0.568 0.559 0.545 0.537 0.522 0.513 0.504 0.493 0.487 0.436 0.422 0.400 0.397 0.375 0.349 0.342 0.329 0.316
|
||||||
|
3
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.006 0.006 0.006 0.007 0.007 0.008 0.009 0.009 0.010 0.013 0.018 0.021 0.023 0.026 0.028 0.035 0.038 0.039 0.042 0.049 0.052 0.065 0.088
|
||||||
|
R 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984
|
||||||
|
0
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.013 0.014 0.015 0.018 0.020 0.021 0.023 0.025 0.027 0.030 0.033 0.037 0.041 0.046 0.052 0.059 0.065 0.079 0.090 0.104 0.122 0.134 0.168 0.214 0.261 0.310 0.358 0.432 0.553 0.617
|
||||||
|
R 0.950 0.950 0.950 0.947 0.945 0.945 0.945 0.944 0.944 0.939 0.938 0.938 0.938 0.936 0.935 0.934 0.932 0.927 0.925 0.924 0.923 0.921 0.917 0.912 0.905 0.901 0.899 0.887 0.867 0.856
|
||||||
|
1
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.036 0.039 0.041 0.045 0.049 0.052 0.056 0.060 0.066 0.070 0.077 0.084 0.092 0.102 0.108 0.116 0.129 0.142 0.155 0.174 0.188 0.202 0.226 0.255 0.289 0.317 0.349 0.410 0.473 0.515
|
||||||
|
R 0.934 0.934 0.934 0.933 0.931 0.931 0.930 0.928 0.928 0.927 0.927 0.925 0.924 0.923 0.923 0.921 0.919 0.917 0.916 0.914 0.911 0.908 0.905 0.903 0.899 0.897 0.890 0.877 0.871 0.866
|
||||||
|
2
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.190 0.196 0.211 0.218 0.228 0.233 0.244 0.251 0.264 0.275 0.289 0.294 0.300 0.319 0.337 0.343 0.358 0.367 0.383 0.404 0.429 0.498 0.514 0.555 0.566 0.609 0.647 0.662 0.675 0.694
|
||||||
|
R 0.643 0.640 0.629 0.623 0.617 0.613 0.606 0.603 0.593 0.585 0.574 0.571 0.568 0.559 0.545 0.537 0.522 0.513 0.504 0.493 0.487 0.436 0.422 0.400 0.397 0.375 0.349 0.342 0.329 0.316
|
||||||
|
3
|
||||||
|
P 0.700 0.710 0.720 0.730 0.740 0.750 0.760 0.770 0.780 0.790 0.800 0.810 0.820 0.830 0.840 0.850 0.860 0.870 0.880 0.890 0.900 0.910 0.920 0.930 0.940 0.950 0.960 0.970 0.980 0.990
|
||||||
|
T 0.005 0.005 0.005 0.005 0.005 0.005 0.005 0.006 0.006 0.006 0.007 0.007 0.008 0.009 0.009 0.010 0.013 0.018 0.021 0.023 0.026 0.028 0.035 0.038 0.039 0.042 0.049 0.052 0.065 0.088
|
||||||
|
R 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984 0.984
|
@ -3,6 +3,7 @@
|
|||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
@ -10,8 +11,13 @@ from ultralytics.data import build_dataloader, build_yolo_dataset, converter
|
|||||||
from ultralytics.engine.validator import BaseValidator
|
from ultralytics.engine.validator import BaseValidator
|
||||||
from ultralytics.utils import LOGGER, ops
|
from ultralytics.utils import LOGGER, ops
|
||||||
from ultralytics.utils.checks import check_requirements
|
from ultralytics.utils.checks import check_requirements
|
||||||
from ultralytics.utils.metrics import ConfusionMatrix, DetMetrics, box_iou
|
# from ultralytics.utils.metrics import ConfusionMatrix, DetMetrics, box_iou
|
||||||
from ultralytics.utils.plotting import output_to_target, plot_images
|
from ultralytics.utils.metrics_confusion_visual import ConfusionMatrix, DetMetrics, box_iou
|
||||||
|
from ultralytics.utils.plotting import output_to_target, plot_images, Colors
|
||||||
|
|
||||||
|
### val时可视化图片增加
|
||||||
|
from ultralytics.utils.plotting import Annotator, Colors
|
||||||
|
colors = Colors()
|
||||||
|
|
||||||
|
|
||||||
class DetectionValidator(BaseValidator):
|
class DetectionValidator(BaseValidator):
|
||||||
@ -146,8 +152,40 @@ class DetectionValidator(BaseValidator):
|
|||||||
# Evaluate
|
# Evaluate
|
||||||
if nl:
|
if nl:
|
||||||
stat["tp"] = self._process_batch(predn, bbox, cls)
|
stat["tp"] = self._process_batch(predn, bbox, cls)
|
||||||
|
# ####===========增加匹配结果返回==================
|
||||||
|
# stat["tp"], matches, iou_list = self._process_batch(predn, bbox, cls) ### 生成gt和pred box匹配
|
||||||
|
# colors = Colors()
|
||||||
|
# if len(matches) > 0: ## 有匹配结果
|
||||||
|
# print('len(match)', len(matches))
|
||||||
|
# indl = matches[:, 0] ## label index
|
||||||
|
# indp = matches[:, 1] ## pred index
|
||||||
|
# # print('img', img)
|
||||||
|
# # img_name = batch['im_file']
|
||||||
|
# # print('img_name', img_name[0])
|
||||||
|
# # img = cv2.imread(img_name[0])
|
||||||
|
# img = cv2.imread(batch['im_file'][0])
|
||||||
|
# # annotator = Annotator(img, line_width=3)
|
||||||
|
# annotator = Annotator(img, line_width=3, font_size=3, pil=True, example=self.names)
|
||||||
|
# for ind, (*xyxy, conf, p_cls) in enumerate(predn):
|
||||||
|
# if ind in indp:
|
||||||
|
# p_ind = list(indp).index(ind) ## ind在match中的索引
|
||||||
|
# t_ind = indl[p_ind]
|
||||||
|
# iou = iou_list[t_ind, p_ind]
|
||||||
|
# conf_c = conf.cpu().item()
|
||||||
|
# label = self.names[int(p_cls)] + str(conf_c) + '_iou' + str(f'{iou:.2f}')
|
||||||
|
# annotator.box_label(xyxy, label, color=(128, 0, 128))
|
||||||
|
#
|
||||||
|
# img = annotator.result()
|
||||||
|
# path_save = 'tp'
|
||||||
|
# os.makedirs(path_save, exist_ok=True)
|
||||||
|
# save_path1 = os.path.join(path_save, batch['im_file'][0].split('/')[-1])
|
||||||
|
# print('save_path', save_path1)
|
||||||
|
# cv2.imwrite(save_path1, img)
|
||||||
|
####==================================
|
||||||
if self.args.plots:
|
if self.args.plots:
|
||||||
self.confusion_matrix.process_batch(predn, bbox, cls)
|
###=======修改可视化匹配框=============
|
||||||
|
# self.confusion_matrix.process_batch(predn, bbox, cls)
|
||||||
|
self.confusion_matrix.process_batch(predn, bbox, cls, batch['im_file'][0], self.names, Annotator, colors)
|
||||||
for k in self.stats.keys():
|
for k in self.stats.keys():
|
||||||
self.stats[k].append(stat[k])
|
self.stats[k].append(stat[k])
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import cv2
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
@ -11,13 +10,8 @@ from ultralytics.data import build_dataloader, build_yolo_dataset, converter
|
|||||||
from ultralytics.engine.validator import BaseValidator
|
from ultralytics.engine.validator import BaseValidator
|
||||||
from ultralytics.utils import LOGGER, ops
|
from ultralytics.utils import LOGGER, ops
|
||||||
from ultralytics.utils.checks import check_requirements
|
from ultralytics.utils.checks import check_requirements
|
||||||
# from ultralytics.utils.metrics import ConfusionMatrix, DetMetrics, box_iou
|
from ultralytics.utils.metrics import ConfusionMatrix, DetMetrics, box_iou
|
||||||
from ultralytics.utils.metrics_confusion_visual import ConfusionMatrix, DetMetrics, box_iou
|
from ultralytics.utils.plotting import output_to_target, plot_images
|
||||||
from ultralytics.utils.plotting import output_to_target, plot_images, Colors
|
|
||||||
|
|
||||||
### val时可视化图片增加
|
|
||||||
from ultralytics.utils.plotting import Annotator, Colors
|
|
||||||
colors = Colors()
|
|
||||||
|
|
||||||
|
|
||||||
class DetectionValidator(BaseValidator):
|
class DetectionValidator(BaseValidator):
|
||||||
@ -152,40 +146,8 @@ class DetectionValidator(BaseValidator):
|
|||||||
# Evaluate
|
# Evaluate
|
||||||
if nl:
|
if nl:
|
||||||
stat["tp"] = self._process_batch(predn, bbox, cls)
|
stat["tp"] = self._process_batch(predn, bbox, cls)
|
||||||
# ####===========增加匹配结果返回==================
|
|
||||||
# stat["tp"], matches, iou_list = self._process_batch(predn, bbox, cls) ### 生成gt和pred box匹配
|
|
||||||
# colors = Colors()
|
|
||||||
# if len(matches) > 0: ## 有匹配结果
|
|
||||||
# print('len(match)', len(matches))
|
|
||||||
# indl = matches[:, 0] ## label index
|
|
||||||
# indp = matches[:, 1] ## pred index
|
|
||||||
# # print('img', img)
|
|
||||||
# # img_name = batch['im_file']
|
|
||||||
# # print('img_name', img_name[0])
|
|
||||||
# # img = cv2.imread(img_name[0])
|
|
||||||
# img = cv2.imread(batch['im_file'][0])
|
|
||||||
# # annotator = Annotator(img, line_width=3)
|
|
||||||
# annotator = Annotator(img, line_width=3, font_size=3, pil=True, example=self.names)
|
|
||||||
# for ind, (*xyxy, conf, p_cls) in enumerate(predn):
|
|
||||||
# if ind in indp:
|
|
||||||
# p_ind = list(indp).index(ind) ## ind在match中的索引
|
|
||||||
# t_ind = indl[p_ind]
|
|
||||||
# iou = iou_list[t_ind, p_ind]
|
|
||||||
# conf_c = conf.cpu().item()
|
|
||||||
# label = self.names[int(p_cls)] + str(conf_c) + '_iou' + str(f'{iou:.2f}')
|
|
||||||
# annotator.box_label(xyxy, label, color=(128, 0, 128))
|
|
||||||
#
|
|
||||||
# img = annotator.result()
|
|
||||||
# path_save = 'tp'
|
|
||||||
# os.makedirs(path_save, exist_ok=True)
|
|
||||||
# save_path1 = os.path.join(path_save, batch['im_file'][0].split('/')[-1])
|
|
||||||
# print('save_path', save_path1)
|
|
||||||
# cv2.imwrite(save_path1, img)
|
|
||||||
####==================================
|
|
||||||
if self.args.plots:
|
if self.args.plots:
|
||||||
###=======修改可视化匹配框=============
|
self.confusion_matrix.process_batch(predn, bbox, cls)
|
||||||
# self.confusion_matrix.process_batch(predn, bbox, cls)
|
|
||||||
self.confusion_matrix.process_batch(predn, bbox, cls, batch['im_file'][0], self.names, Annotator, colors)
|
|
||||||
for k in self.stats.keys():
|
for k in self.stats.keys():
|
||||||
self.stats[k].append(stat[k])
|
self.stats[k].append(stat[k])
|
||||||
|
|
50
ultralytics/utils/img_joint.py
Normal file
50
ultralytics/utils/img_joint.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
from PIL import Image
|
||||||
|
import os
|
||||||
|
|
||||||
|
def merge_imgs(path1, path2, save_path):
|
||||||
|
for img_name in os.listdir(path1):
|
||||||
|
# img_dir1 = os.path.join(path1, img_dir)
|
||||||
|
# if os.path.isdir(img_dir1):
|
||||||
|
# img_dir2 = os.path.join(path2, img_dir)
|
||||||
|
# for img_name in os.listdir(img_dir1):
|
||||||
|
try:
|
||||||
|
img1_path = os.path.join(path1, img_name)
|
||||||
|
img2_path = os.path.join(path2, img_name)
|
||||||
|
|
||||||
|
img1 = Image.open(img1_path)
|
||||||
|
img2 = Image.open(img2_path)
|
||||||
|
print('img1_path',img1)
|
||||||
|
print('img2_path', img2)
|
||||||
|
assert img1.height == img2.height
|
||||||
|
|
||||||
|
|
||||||
|
new_img = Image.new('RGB', (img1.width + img2.width+10, img1.height))
|
||||||
|
|
||||||
|
# print('new_img', new_img)
|
||||||
|
new_img.paste(img1, (0, 0))
|
||||||
|
new_img.paste(img2, (img1.width+10, 0))
|
||||||
|
# save_dir = os.path.join(save_path, img_name)
|
||||||
|
os.makedirs(save_path, exist_ok=True)
|
||||||
|
img_save = os.path.join(save_path, img_name)
|
||||||
|
# print('img-save', img_save)
|
||||||
|
new_img.save(img_save)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
#print(img_name)
|
||||||
|
|
||||||
|
|
||||||
|
#path1 = '/home/yujia/yj/yolov5-6.1/0518_cls10_v5s_new_delTP0.5/labelFn_5/'
|
||||||
|
# path1 = 'predict5_ori_v10s/'
|
||||||
|
# path1 = 'predict_best0524/'
|
||||||
|
# path2 = 'predict_0613_epoch27/'
|
||||||
|
|
||||||
|
# path1 = 'predict_labels110_0524/'
|
||||||
|
# path2 = 'predict_labels110_0613/'
|
||||||
|
|
||||||
|
path1 = '/home/lc/ieemoo-ai-gift/confusion_gift_cls4_0.45/FN/FN_3'
|
||||||
|
path2 = '/home/lc/ieemoo-ai-gift/confusion_gift_cls4_0.45/allBox/allBox_1'
|
||||||
|
|
||||||
|
#save_path = '/home/yujia/yj/yolov5-6.1/0518_cls10_v5s_new_delTP0.5/labelFn_5_allBox_merge/'
|
||||||
|
save_path = '/home/lc/ieemoo-ai-gift/confusion_gift_cls4_0.45/FN/FN_3_joint/'
|
||||||
|
# os.makedirs(save_path, exist_ok=True)
|
||||||
|
merge_imgs(path1, path2, save_path)
|
@ -389,6 +389,7 @@ class ConfusionMatrix:
|
|||||||
cls = detect_cur_cpu[5]
|
cls = detect_cur_cpu[5]
|
||||||
c = int(cls)
|
c = int(cls)
|
||||||
label = f'{names[c]} {conf:.2f} iou:{float(iou):.2f}'
|
label = f'{names[c]} {conf:.2f} iou:{float(iou):.2f}'
|
||||||
|
print(">>>>>>>>>>>>>>>>>>> label: {} C: {}".format(label, c))
|
||||||
if fp_flag:
|
if fp_flag:
|
||||||
annotator.box_label(xyxy, label, color=(125, 0, 125)) ##fp iou匹配上,类别错误 紫色框
|
annotator.box_label(xyxy, label, color=(125, 0, 125)) ##fp iou匹配上,类别错误 紫色框
|
||||||
else:
|
else:
|
||||||
@ -465,7 +466,7 @@ class ConfusionMatrix:
|
|||||||
annotators_tp = self.create_annotator(images_tp, Annotator, names)
|
annotators_tp = self.create_annotator(images_tp, Annotator, names)
|
||||||
annotators_all = self.create_annotator(images_all, Annotator, names)
|
annotators_all = self.create_annotator(images_all, Annotator, names)
|
||||||
### 新建不同检测类别保存的文件夹,文件夹名称为类别索引
|
### 新建不同检测类别保存的文件夹,文件夹名称为类别索引
|
||||||
date_path = 'confusion_0717_cls10_' + str(self.iou_thres)
|
date_path = 'confusion_gift_cls4_' + str(self.iou_thres)
|
||||||
paths_fn = self.makdirs_file(date_path, img_name, self.nc, str_c='FN')
|
paths_fn = self.makdirs_file(date_path, img_name, self.nc, str_c='FN')
|
||||||
paths_fp = self.makdirs_file(date_path, img_name, self.nc, str_c='FP')
|
paths_fp = self.makdirs_file(date_path, img_name, self.nc, str_c='FP')
|
||||||
paths_fp_bg = self.makdirs_file(date_path, img_name, self.nc, str_c='FP_bg')
|
paths_fp_bg = self.makdirs_file(date_path, img_name, self.nc, str_c='FP_bg')
|
||||||
@ -485,7 +486,7 @@ class ConfusionMatrix:
|
|||||||
cls_flag_list_tp = [False for _ in range(self.nc)] ###混淆矩阵斜对角线上类别flag
|
cls_flag_list_tp = [False for _ in range(self.nc)] ###混淆矩阵斜对角线上类别flag
|
||||||
|
|
||||||
## 混淆矩阵可视化 flag 设置
|
## 混淆矩阵可视化 flag 设置
|
||||||
save_oneImg = False ### 将所有pred_box与gt_box匹配结果画在一张图片上
|
save_oneImg = True #pred_box与gt_box匹配结果画在一张图片上
|
||||||
save_byClass = True ### 将所有pred_box与gt_box匹配结果按box类别分类保存,其中tp、fn、fp按gt_box类别划分,fp_bg按pred_box划分
|
save_byClass = True ### 将所有pred_box与gt_box匹配结果按box类别分类保存,其中tp、fn、fp按gt_box类别划分,fp_bg按pred_box划分
|
||||||
cls_flag_list = []
|
cls_flag_list = []
|
||||||
###=========================
|
###=========================
|
||||||
|
@ -84,6 +84,7 @@ class Colors:
|
|||||||
|
|
||||||
def __call__(self, i, bgr=False):
|
def __call__(self, i, bgr=False):
|
||||||
"""Converts hex color codes to RGB values."""
|
"""Converts hex color codes to RGB values."""
|
||||||
|
i=0
|
||||||
c = self.palette[int(i) % self.n]
|
c = self.palette[int(i) % self.n]
|
||||||
return (c[2], c[1], c[0]) if bgr else c
|
return (c[2], c[1], c[0]) if bgr else c
|
||||||
|
|
||||||
|
4
val.py
4
val.py
@ -1,4 +1,4 @@
|
|||||||
from ultralytics import YOLOv10
|
from ultralytics import YOLOv10
|
||||||
|
|
||||||
model = YOLOv10('runs/detect/train/weights/last.pt')
|
model = YOLOv10('runs/detect/train/weights/best_gift_v10n.pt')
|
||||||
metrics = model.val(batch=8, data='gift.yaml')
|
metrics = model.val(batch=1, data='gift.yaml', imgsz=224)
|
||||||
|
Reference in New Issue
Block a user