安裝paddleSeq2.7.0版本模塊-筆記

安裝paddleSeq2.7.0版本模塊-筆記

先安裝conda和python版本
本機安裝的conda 22.9.0
python2.9.12
paddle2.4.2
paddlepaddle-gpu==2.4.2 cuda10.2
安裝matplotlib3.5.0版本
opencv_python-4.5.4.60-cp39-cp39-win_amd64.whl

測試采用分割模型名稱:BiSeNetv2

#BiSeNetv2保證速度的同時,也能保證精度
#2020年,相關學者基于可實現實時語義分割的雙向網絡BiSeNet(Bilateral Segmentation Network),
# 建設性地提出了BiSeNetv2,# 以期望獲得更好的語義分割精度。
# 通常來說,語義分割任務既需要低級細節,也需要高級語義。
# 就目前的語義分割模型而言,于精度相比,更多的是追求速度,因此存在著一定缺陷。
# 而BiSeNetv2則是兩方兼顧且行之有效的語義分割模型。
#(Bilateral Segmentation Network) 雙邊分割網絡

測試分割結果圖效果如下所示:
左圖為分割結果圖,中間圖是分割后合成圖,右圖是測試的原圖

在這里插入圖片描述
在這里插入圖片描述

一、第一步先激活環境
conda activate base

conda activate base

安裝完paddleSeq后要關閉conda激活環境
conda deactivate

conda deactivate

二、第二步安裝paddleSeq版本
本機選擇安裝paddleSeq2.7.0版本安裝沒有沖突OK
(base) D:\ProgramData\Anaconda3>pip install PaddleSeg==2.7.0
(base) D:\ProgramData\Anaconda3>

(base) D:\ProgramData\Anaconda3>pip install PaddleSeg==2.7.0
(base) D:\ProgramData\Anaconda3>

升級protobuf==3.20.0為3.20.0
(base) D:\ProgramData\Anaconda3>pip install protobuf==3.20.0

(base) D:\ProgramData\Anaconda3>pip install protobuf==3.20.0
Collecting protobuf==3.20.0Downloading protobuf-3.20.0-cp39-cp39-win_amd64.whl (904 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 904.1/904.1 kB 510.8 kB/s eta 0:00:00
Installing collected packages: protobufAttempting uninstall: protobufFound existing installation: protobuf 3.19.0Uninstalling protobuf-3.19.0:Successfully uninstalled protobuf-3.19.0
Successfully installed protobuf-3.20.0
If you cannot immediately regenerate your protos, some other possible workarounds are:1. Downgrade the protobuf package to 3.20.x or lower.2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

默認安裝paddleSeq最新版2.8.0時有版本沖突問題,如下所示:

(base) D:\ProgramData\Anaconda3>pip install PaddleSeg
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
anaconda-project 0.11.1 requires ruamel-yaml, which is not installed.
paddlepaddle-gpu 2.4.2 requires protobuf<=3.20.0,>=3.1.0, but you have protobuf 4.24.0 which is incompatible.
conda-repo-cli 1.0.20 requires clyent==1.2.1, but you have clyent 1.2.2 which is incompatible.
conda-repo-cli 1.0.20 requires nbformat==5.4.0, but you have nbformat 5.5.0 which is incompatible.

三、paddleSeq2.7.0安裝詳細情況

顯示Successfully installed PaddleSeg-2.7.0 sklearn-0.0
表示安裝成功

(base) D:\ProgramData\Anaconda3>pip install PaddleSeg==2.7.0
Collecting PaddleSeg==2.7.0Downloading paddleseg-2.7.0-py3-none-any.whl (349 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 349.4/349.4 kB 271.3 kB/s eta 0:00:00
Requirement already satisfied: prettytable in d:\programdata\anaconda3\lib\site-packages (from PaddleSeg==2.7.0) (3.8.0)
Requirement already satisfied: filelock in d:\programdata\anaconda3\lib\site-packages (from PaddleSeg==2.7.0) (3.6.0)
Requirement already satisfied: pyyaml>=5.1 in d:\programdata\anaconda3\lib\site-packages (from PaddleSeg==2.7.0) (6.0)
Requirement already satisfied: opencv-python in d:\programdata\anaconda3\lib\site-packages (from PaddleSeg==2.7.0) (4.5.4.60)
Requirement already satisfied: visualdl>=2.2.0 in d:\programdata\anaconda3\lib\site-packages (from PaddleSeg==2.7.0) (2.5.3)
Requirement already satisfied: scipy in d:\programdata\anaconda3\lib\site-packages (from PaddleSeg==2.7.0) (1.9.1)
Collecting sklearn==0.0Downloading sklearn-0.0.tar.gz (1.1 kB)Preparing metadata (setup.py) ... done
Requirement already satisfied: tqdm in d:\programdata\anaconda3\lib\site-packages (from PaddleSeg==2.7.0) (4.64.1)
Requirement already satisfied: scikit-learn in d:\programdata\anaconda3\lib\site-packages (from sklearn==0.0->PaddleSeg==2.7.0) (1.0.2)
Requirement already satisfied: numpy in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (1.21.5)
Requirement already satisfied: requests in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (2.28.1)
Requirement already satisfied: protobuf>=3.20.0 in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (4.24.0)
Requirement already satisfied: matplotlib in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (3.5.2)
Requirement already satisfied: bce-python-sdk in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (0.8.87)
Requirement already satisfied: packaging in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (21.3)
Requirement already satisfied: pandas in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (1.4.4)
Requirement already satisfied: flask>=1.1.1 in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (2.3.2)
Requirement already satisfied: Pillow>=7.0.0 in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (9.2.0)
Requirement already satisfied: six>=1.14.0 in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (1.16.0)
Requirement already satisfied: Flask-Babel>=3.0.0 in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (3.1.0)
Requirement already satisfied: rarfile in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (4.0)
Requirement already satisfied: psutil in d:\programdata\anaconda3\lib\site-packages (from visualdl>=2.2.0->PaddleSeg==2.7.0) (5.9.0)
Requirement already satisfied: wcwidth in d:\programdata\anaconda3\lib\site-packages (from prettytable->PaddleSeg==2.7.0) (0.2.5)
Requirement already satisfied: colorama in d:\programdata\anaconda3\lib\site-packages (from tqdm->PaddleSeg==2.7.0) (0.4.5)
Requirement already satisfied: itsdangerous>=2.1.2 in d:\programdata\anaconda3\lib\site-packages (from flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (2.1.2)
Requirement already satisfied: Jinja2>=3.1.2 in d:\programdata\anaconda3\lib\site-packages (from flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (3.1.2)
Requirement already satisfied: Werkzeug>=2.3.3 in d:\programdata\anaconda3\lib\site-packages (from flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (2.3.6)
Requirement already satisfied: click>=8.1.3 in d:\programdata\anaconda3\lib\site-packages (from flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (8.1.6)
Requirement already satisfied: blinker>=1.6.2 in d:\programdata\anaconda3\lib\site-packages (from flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (1.6.2)
Requirement already satisfied: importlib-metadata>=3.6.0 in d:\programdata\anaconda3\lib\site-packages (from flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (4.11.3)
Requirement already satisfied: Babel>=2.12 in d:\programdata\anaconda3\lib\site-packages (from Flask-Babel>=3.0.0->visualdl>=2.2.0->PaddleSeg==2.7.0) (2.12.1)
Requirement already satisfied: pytz>=2022.7 in d:\programdata\anaconda3\lib\site-packages (from Flask-Babel>=3.0.0->visualdl>=2.2.0->PaddleSeg==2.7.0) (2023.3)
Requirement already satisfied: pycryptodome>=3.8.0 in d:\programdata\anaconda3\lib\site-packages (from bce-python-sdk->visualdl>=2.2.0->PaddleSeg==2.7.0) (3.18.0)
Requirement already satisfied: future>=0.6.0 in d:\programdata\anaconda3\lib\site-packages (from bce-python-sdk->visualdl>=2.2.0->PaddleSeg==2.7.0) (0.18.2)
Requirement already satisfied: python-dateutil>=2.7 in d:\programdata\anaconda3\lib\site-packages (from matplotlib->visualdl>=2.2.0->PaddleSeg==2.7.0) (2.8.2)
Requirement already satisfied: cycler>=0.10 in d:\programdata\anaconda3\lib\site-packages (from matplotlib->visualdl>=2.2.0->PaddleSeg==2.7.0) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in d:\programdata\anaconda3\lib\site-packages (from matplotlib->visualdl>=2.2.0->PaddleSeg==2.7.0) (4.25.0)
Requirement already satisfied: pyparsing>=2.2.1 in d:\programdata\anaconda3\lib\site-packages (from matplotlib->visualdl>=2.2.0->PaddleSeg==2.7.0) (3.0.9)
Requirement already satisfied: kiwisolver>=1.0.1 in d:\programdata\anaconda3\lib\site-packages (from matplotlib->visualdl>=2.2.0->PaddleSeg==2.7.0) (1.4.2)
Requirement already satisfied: charset-normalizer<3,>=2 in d:\programdata\anaconda3\lib\site-packages (from requests->visualdl>=2.2.0->PaddleSeg==2.7.0) (2.0.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\programdata\anaconda3\lib\site-packages (from requests->visualdl>=2.2.0->PaddleSeg==2.7.0) (1.26.11)
Requirement already satisfied: idna<4,>=2.5 in d:\programdata\anaconda3\lib\site-packages (from requests->visualdl>=2.2.0->PaddleSeg==2.7.0) (3.3)
Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\anaconda3\lib\site-packages (from requests->visualdl>=2.2.0->PaddleSeg==2.7.0) (2022.9.14)
Requirement already satisfied: threadpoolctl>=2.0.0 in d:\programdata\anaconda3\lib\site-packages (from scikit-learn->sklearn==0.0->PaddleSeg==2.7.0) (2.2.0)
Requirement already satisfied: joblib>=0.11 in d:\programdata\anaconda3\lib\site-packages (from scikit-learn->sklearn==0.0->PaddleSeg==2.7.0) (1.1.0)
Requirement already satisfied: zipp>=0.5 in d:\programdata\anaconda3\lib\site-packages (from importlib-metadata>=3.6.0->flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (3.8.0)
Requirement already satisfied: MarkupSafe>=2.0 in d:\programdata\anaconda3\lib\site-packages (from Jinja2>=3.1.2->flask>=1.1.1->visualdl>=2.2.0->PaddleSeg==2.7.0) (2.1.3)
Building wheels for collected packages: sklearnBuilding wheel for sklearn (setup.py) ... doneCreated wheel for sklearn: filename=sklearn-0.0-py2.py3-none-any.whl size=1304 sha256=292bc45b32f83827cb71ee7501b63c818b0b845e39c063fe776f07399e395fd6Stored in directory: c:\users\hsgpc\appdata\local\pip\cache\wheels\e4\7b\98\b6466d71b8d738a0c547008b9eb39bf8676d1ff6ca4b22af1c
Successfully built sklearn
Installing collected packages: sklearn, PaddleSegAttempting uninstall: PaddleSegFound existing installation: paddleseg 2.8.0Uninstalling paddleseg-2.8.0:Successfully uninstalled paddleseg-2.8.0
Successfully installed PaddleSeg-2.7.0 sklearn-0.0(base) D:\ProgramData\Anaconda3>

四、測試訓練代碼

測試結果正常運行

PS E:\project\python> & D:/ProgramData/Anaconda3/python.exe e:/project/python/Seq/test.py
Connecting to https://paddleseg.bj.bcebos.com/dataset/optic_disc_seg.zip
Downloading optic_disc_seg.zip
[==================================================] 100.00%
Uncompress optic_disc_seg.zip
[==================================================] 100.00%
W0811 20:07:56.475862 16348 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 6.1, Driver API Version: 12.2, Runtime API Version: 10.2
W0811 20:07:56.523449 16348 gpu_resources.cc:91] device: 0, cuDNN Version: 7.6.
D:\ProgramData\Anaconda3\lib\site-packages\paddle\nn\layer\norm.py:712: UserWarning: When training, we now always track global mean and variance.warnings.warn(
D:\ProgramData\Anaconda3\lib\site-packages\paddle\fluid\dygraph\math_op_patch.py:275: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.float32, but right dtype is paddle.int64, the right dtype will convert to paddle.float32warnings.warn(
2023-08-11 20:08:09 [INFO]      [TRAIN] epoch: 1, iter: 10/1000, loss: 2.6801, lr: 0.009919, batch_cost: 1.0978, reader_cost: 0.09730, ips: 3.6436 samples/sec | ETA 00:18:06
2023-08-11 20:08:13 [INFO]      [TRAIN] epoch: 1, iter: 20/1000, loss: 0.6180, lr: 0.009829, batch_cost: 0.3860, reader_cost: 0.00010, ips: 10.3626 samples/sec | ETA 00:06:18
2023-08-11 20:08:17 [INFO]      [TRAIN] epoch: 1, iter: 30/1000, loss: 0.4047, lr: 0.009739, batch_cost: 0.4011, reader_cost: 0.00020, ips: 9.9725 samples/sec | ETA 00:06:29
2023-08-11 20:08:21 [INFO]      [TRAIN] epoch: 1, iter: 40/1000, loss: 0.3404, lr: 0.009648, batch_cost: 0.4061, reader_cost: 0.00030, ips: 9.8509 samples/sec | ETA 00:06:29
2023-08-11 20:08:25 [INFO]      [TRAIN] epoch: 1, iter: 50/1000, loss: 0.3043, lr: 0.009558, batch_cost: 0.3877, reader_cost: 0.00030, ips: 10.3161 samples/sec | ETA 00:06:08
2023-08-11 20:08:28 [INFO]      [TRAIN] epoch: 1, iter: 60/1000, loss: 0.2918, lr: 0.009467, batch_cost: 0.3862, reader_cost: 0.00010, ips: 10.3586 samples/sec | ETA 00:06:02
2023-08-11 20:08:32 [INFO]      [TRAIN] epoch: 2, iter: 70/1000, loss: 0.2548, lr: 0.009377, batch_cost: 0.4038, reader_cost: 0.01672, ips: 9.9049 samples/sec | ETA 00:06:15
2023-08-11 20:08:36 [INFO]      [TRAIN] epoch: 2, iter: 80/1000, loss: 0.2641, lr: 0.009286, batch_cost: 0.3905, reader_cost: 0.00015, ips: 10.2446 samples/sec | ETA 00:05:59
2023-08-11 20:08:40 [INFO]      [TRAIN] epoch: 2, iter: 90/1000, loss: 0.2426, lr: 0.009195, batch_cost: 0.3884, reader_cost: 0.00000, ips: 10.2990 samples/sec | ETA 00:05:53
2023-08-11 20:08:44 [INFO]      [TRAIN] epoch: 2, iter: 100/1000, loss: 0.2403, lr: 0.009104, batch_cost: 0.3864, reader_cost: 0.00000, ips: 10.3526 samples/sec | ETA 00:05:47
2023-08-11 20:08:48 [INFO]      [TRAIN] epoch: 2, iter: 110/1000, loss: 0.2847, lr: 0.009013, batch_cost: 0.3890, reader_cost: 0.00010, ips: 10.2830 samples/sec | ETA 00:05:46
2023-08-11 20:08:52 [INFO]      [TRAIN] epoch: 2, iter: 120/1000, loss: 0.2442, lr: 0.008922, batch_cost: 0.3874, reader_cost: 0.00010, ips: 10.3261 samples/sec | ETA 00:05:40
2023-08-11 20:08:56 [INFO]      [TRAIN] epoch: 2, iter: 130/1000, loss: 0.2243, lr: 0.008831, batch_cost: 0.3901, reader_cost: 0.00020, ips: 10.2547 samples/sec | ETA 00:05:39
2023-08-11 20:09:00 [INFO]      [TRAIN] epoch: 3, iter: 140/1000, loss: 0.2251, lr: 0.008740, batch_cost: 0.3946, reader_cost: 0.00559, ips: 10.1366 samples/sec | ETA 00:05:39
2023-08-11 20:09:04 [INFO]      [TRAIN] epoch: 3, iter: 150/1000, loss: 0.1888, lr: 0.008648, batch_cost: 0.3949, reader_cost: 0.00000, ips: 10.1292 samples/sec | ETA 00:05:35
2023-08-11 20:09:08 [INFO]      [TRAIN] epoch: 3, iter: 160/1000, loss: 0.2272, lr: 0.008557, batch_cost: 0.3883, reader_cost: 0.00030, ips: 10.3016 samples/sec | ETA 00:05:26
2023-08-11 20:09:11 [INFO]      [TRAIN] epoch: 3, iter: 170/1000, loss: 0.1854, lr: 0.008465, batch_cost: 0.3875, reader_cost: 0.00010, ips: 10.3239 samples/sec | ETA 00:05:21
2023-08-11 20:09:15 [INFO]      [TRAIN] epoch: 3, iter: 180/1000, loss: 0.2287, lr: 0.008374, batch_cost: 0.3893, reader_cost: 0.00020, ips: 10.2751 samples/sec | ETA 00:05:19
2023-08-11 20:09:19 [INFO]      [TRAIN] epoch: 3, iter: 190/1000, loss: 0.1802, lr: 0.008282, batch_cost: 0.4025, reader_cost: 0.00030, ips: 9.9373 samples/sec | ETA 00:05:26
2023-08-11 20:09:23 [INFO]      [TRAIN] epoch: 4, iter: 200/1000, loss: 0.1878, lr: 0.008190, batch_cost: 0.3942, reader_cost: 0.00663, ips: 10.1465 samples/sec | ETA 00:05:15
2023-08-11 20:09:23 [INFO]      Start evaluating (total_samples: 76, total_iters: 76)...
76/76 [==============================] - 2s 33ms/step - batch_cost: 0.0325 - reader cost: 3.1596e-04
2023-08-11 20:09:26 [INFO]      [EVAL] #Images: 76 mIoU: 0.7409 Acc: 0.9900 Kappa: 0.6546 Dice: 0.8271
2023-08-11 20:09:26 [INFO]      [EVAL] Class IoU: 
[0.9899 0.4919]
2023-08-11 20:09:26 [INFO]      [EVAL] Class Precision: 
[0.9912 0.8759]
2023-08-11 20:09:26 [INFO]      [EVAL] Class Recall:
[0.9986 0.5287]
2023-08-11 20:09:26 [INFO]      [EVAL] The model with the best validation mIoU (0.7409) was saved at iter 200.

test.py

# 構建訓練用的數據增強和預處理
import paddleseg.transforms as T
transforms = [T.Resize(target_size=(512, 512)),T.RandomHorizontalFlip(),T.Normalize()
]# 構建訓練集
from paddleseg.datasets import OpticDiscSeg
train_dataset = OpticDiscSeg(dataset_root='data/optic_disc_seg',transforms=transforms,mode='train'
)from paddleseg.models import BiSeNetV2
model = BiSeNetV2(num_classes=2,lambd=0.25,align_corners=False,pretrained=None)# 構建驗證用的數據增強和預處理
import paddleseg.transforms as T
transforms = [T.Resize(target_size=(512, 512)),T.Normalize()
]# 構建驗證集
from paddleseg.datasets import OpticDiscSeg
val_dataset = OpticDiscSeg(dataset_root='data/optic_disc_seg',transforms=transforms,mode='val'
)import paddle
# 設置學習率
base_lr = 0.01
lr = paddle.optimizer.lr.PolynomialDecay(base_lr, power=0.9, decay_steps=1000, end_lr=0)optimizer = paddle.optimizer.Momentum(lr, parameters=model.parameters(), momentum=0.9, weight_decay=4.0e-5)from paddleseg.models.losses import CrossEntropyLoss
losses = {}
losses['types'] = [CrossEntropyLoss()] * 5
losses['coef'] = [1]* 5print(losses)  #構造字典的值
#losses={
# 'types': [CrossEntropyLoss(), CrossEntropyLoss(), CrossEntropyLoss(), CrossEntropyLoss(), CrossEntropyLoss()], 
# 'coef': [1, 1, 1, 1, 1]
# }from paddleseg.core import train
train(model=model,train_dataset=train_dataset,val_dataset=val_dataset,optimizer=optimizer,save_dir='output',iters=1000,batch_size=4,save_interval=200,log_iters=10,num_workers=0,losses=losses,use_vdl=True)

五、評估結果

#optic disc seq 視盤分割  測試
import paddle
#模型評估
#============================================
#構建模型
from paddleseg.models import BiSeNetV2
model = BiSeNetV2(num_classes=2,lambd=0.25,align_corners=False,pretrained=None)
#============================================
#BiSeNetv2保證速度的同時,也能保證精度
#2020年,相關學者基于可實現實時語義分割的雙向網絡BiSeNet(Bilateral Segmentation Network),
# 建設性地提出了BiSeNetv2,# 以期望獲得更好的語義分割精度。
# 通常來說,語義分割任務既需要低級細節,也需要高級語義。
# 就目前的語義分割模型而言,于精度相比,更多的是追求速度,因此存在著一定缺陷。
# 而BiSeNetv2則是兩方兼顧且行之有效的語義分割模型。
#(Bilateral Segmentation Network) 雙邊分割網絡#加載模型參數
model_path = 'output/best_model/model.pdparams'
if model_path:para_state_dict = paddle.load(model_path)model.set_dict(para_state_dict)print('Loaded trained params of model successfully')
else: raise ValueError('The model_path is wrong: {}'.format(model_path))# 構建驗證集
# 構建驗證用的transforms
import paddleseg.transforms as T
transforms = [T.Resize(target_size=(512, 512)),T.Normalize()
]# 構建驗證集
from paddleseg.datasets import OpticDiscSeg
val_dataset = OpticDiscSeg(dataset_root='data/optic_disc_seg',transforms=transforms,mode='val'
)   #評估
from paddleseg.core import evaluate
#evaluate(model,val_dataset)
'''
評估結果:準確率Acc: 0.9942
平均交并比:mIoU: 0.8601=(0.9941+0.7262)/2
2023-08-12 12:06:05 [INFO]      [EVAL] #Images: 76 mIoU: 0.8601 Acc: 0.9942 Kappa: 0.8384 Dice: 0.9192
2023-08-12 12:06:05 [INFO]      [EVAL] Class IoU:      [0.9941 0.7262]
2023-08-12 12:06:05 [INFO]      [EVAL] Class Precision:[0.9969 0.8497]
2023-08-12 12:06:05 [INFO]      [EVAL] Class Recall:   [0.9972 0.8331]
'''#多尺度+翻轉評估
evaluate(model,val_dataset,aug_eval=True,scales=[0.75, 1.0, 1.25],flip_horizontal=True)#
'''
評估結果:準確率Acc: 0.9943
平均交并比:mIoU: 0.8629=(0.9942+0.7315)/2
2023-08-12 12:14:34 [INFO]      [EVAL] #Images: 76 mIoU: 0.8629 Acc: 0.9943 Kappa: 0.8421 Dice: 0.9210
2023-08-12 12:14:34 [INFO]      [EVAL] Class IoU:      [0.9942 0.7315]
2023-08-12 12:14:34 [INFO]      [EVAL] Class Precision:[0.9971 0.8459]
2023-08-12 12:14:34 [INFO]      [EVAL] Class Recall:   [0.9971 0.844 ]
'''   

六、預測結果代碼

#predict  預測
#效果可視化#構建模型
from paddleseg.models import BiSeNetV2
model = BiSeNetV2(num_classes=2,lambd=0.25,align_corners=False,pretrained=None)#創建transform
import paddleseg.transforms as T
transforms = T.Compose([T.Resize(target_size=(512, 512)),T.RandomHorizontalFlip(),T.Normalize()
])#構建待預測的圖像列表
import os
def get_image_list(image_path):"""Get image list"""valid_suffix = ['.JPEG', '.jpeg', '.JPG', '.jpg', '.BMP', '.bmp', '.PNG', '.png']image_list = []image_dir = Noneif os.path.isfile(image_path):if os.path.splitext(image_path)[-1] in valid_suffix:image_list.append(image_path)elif os.path.isdir(image_path):image_dir = image_pathfor root, dirs, files in os.walk(image_path):for f in files:if os.path.splitext(f)[-1] in valid_suffix:image_list.append(os.path.join(root, f))else:raise FileNotFoundError('`--image_path` is not found. it should be an image file or a directory including images')if len(image_list) == 0:raise RuntimeError('There are not image file in `--image_path`')return image_list, image_dir#====================================================================================
image_path = 'data/optic_disc_seg/JPEGImages/N0010.jpg' # 也可以輸入一個包含圖像的目錄   N0010.jpg/N0058/P0091
image_list, image_dir = get_image_list(image_path)    
#====================================================================================
#預測
#=========================================
#預測輸出結果保存到save_dir目錄下 
from paddleseg.core import predict
predict(model,model_path='output/best_model/model.pdparams',transforms=transforms,image_list=image_list,image_dir=image_dir,save_dir='Seq/output/results')
#=========================================
#copy old image to output dir
import os
from shutil import copyfile
copyfile(image_path,'Seq/output/'+os.path.basename(image_path))

—the—end—

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36763.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36763.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36763.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle 開發篇+Java調用OJDBC訪問Oracle數據庫

標簽&#xff1a;JAVA語言、Oracle數據庫、Java訪問Oracle數據庫釋義&#xff1a;OJDBC是Oracle公司提供的Java數據庫連接驅動程序 ★ 實驗環境 ※ Oracle 19c ※ OJDBC8 ※ JDK 8 ★ Java代碼案例 package PAC_001; import java.sql.Connection; import java.sql.ResultSet…

背上花里胡哨的書包準備面試之webpack篇(+一些常問的面試題)

目錄 webpack理解&#xff1f; webpack構建流程&#xff1f; loader解決什么問題&#xff1f; plugin解決什么問題&#xff1f; 編寫loader和plugin的思路&#xff1f; webpack熱更新&#xff1f; 如何提高webpack的構建速度&#xff1f; 問git常用命令&#xff1f; ht…

【TensorFlow】P0 Windows GPU 安裝 TensorFlow、CUDA Toolkit、cuDNN

Windows 安裝 TensorFlow、CUDA Toolkit、cuDNN 整體流程概述TensorFlow 與 CUDA ToolkitTensorFlow 是一個基于數據流圖的深度學習框架CUDA 充分利用 NIVIDIA GPU 的計算能力CUDA Toolkit cuDNN 安裝詳細流程整理流程一&#xff1a;安裝 CUDA Toolkit步驟一&#xff1a;獲取CU…

XML 數據傳輸格式

目錄 XML簡介 一、初識XML 1.什么是 XML&#xff1f; 2.XML 和 HTML 之間的差異 3.XML 不會做任何事情 4.通過 XML 您可以發明自己的標簽 5.XML 不是對 HTML 的替代 二、XML 用途 1.XML 把數據從 HTML 分離 2.XML 簡化數據共享 3.XML 簡化數據傳輸 三、XML 樹結構 1.一個 XML 文…

QML HTTP 請求

作者: 一去、二三里 個人微信號: iwaleon 微信公眾號: 高效程序員 在 Web 開發中,實現與服務器的通信至關重要,其中 HTTP 便是最常用的方式之一。它是一種客戶端 - 服務器協議,客戶端向服務器發送請求,服務器則返回響應。常被用于在瀏覽器/客戶端和 Web 服務器之間傳輸消…

mysql執行計劃—— explain

使用explain關鍵字可以直觀的查看一條SQL語句的執行計劃&#xff0c;可以幫助我們選擇合適的索引和優化SQL語句&#xff0c;查詢結構總共有12列。下面列舉幾種需要重點掌握的&#xff1a; 1.id select的標識符&#xff0c;id越大&#xff0c;表示優先級越高&#xff0c;越先執…

VB+SQL酒店客房管理設計與實現

摘要 二十一世紀是信息技術的時代,計算機已經應用到了各行各業中。采用計算機信息管理技術,可以有效的降低企業的管理成本,提高企業內部的工作效率。 本文從天天賓館客房客房管理的一般流程出發,設計了一套天天賓館客房管理信息系統,它可以管理天天賓館客房中所有的客房的…

1. 如何爬取自己的CSDN博客文章列表(獲取列表)(博客列表)(手動+python代碼方式)

文章目錄 寫在最前步驟打開chrome瀏覽器&#xff0c;登錄網頁按pagedown一直往下刷呀刷呀刷&#xff0c;直到把自己所有的博文刷出來然后我們按F12&#xff0c;點擊選取元素按鈕然后隨便點一篇博文&#xff0c;產生如下所示代碼然后往上翻&#xff0c;找到頭&#xff0c;復制然…

1.2 操作系統原理和常見命令

操作系統原理和常見命令 文章目錄 操作系統原理和常見命令操作系統原理操作系統的概述進程管理內存管理文件系統設備管理安全性操作系統的角色 操作系統中的常見命令和操作 操作系統原理 操作系統的概述&#xff1a; 定義&#xff1a;操作系統是控制和管理計算機硬件與軟件資源…

Java-類型和變量(基于C語言的補充)

一個簡單的Java程序 args){ System.out.println("Hello,world"); } }通過上述代碼&#xff0c;我們可以看到一個完整的Java程序的結構&#xff0c;Java程序的結構由如下三個部分組成&#xff1a; 1.源文件&#xff08;擴展名為*.java)&#xff1a;源文件帶有類的定義…

ios消息推送例子

通過Apple推送服務&#xff0c;將消息發送給特定的ios客戶端&#xff0c;這是服務器端實例代碼。需要客戶端的voip key值&#xff0c;以及相應的客戶端回調接口&#xff0c;支持ios9.0以上版本。 下載地址&#xff1a;https://download.csdn.net/download/m0_37567738/8821559…

[保研/考研機試] KY7 質因數的個數 清華大學復試上機題 C++實現

描述 求正整數N(N>1)的質因數的個數。 相同的質因數需要重復計算。如1202*2*2*3*5&#xff0c;共有5個質因數。 輸入描述&#xff1a; 可能有多組測試數據&#xff0c;每組測試數據的輸入是一個正整數N&#xff0c;(1<N<10^9)。 輸出描述&#xff1a; 對于每組數…

leetcode 6914. 翻倍以鏈表形式表示的數字

給你一個 非空 鏈表的頭節點 head &#xff0c;表示一個不含前導零的非負數整數。 將鏈表 翻倍 后&#xff0c;返回頭節點 head 。 示例 1&#xff1a; 輸入&#xff1a;head [1,8,9] 輸出&#xff1a;[3,7,8] 解釋&#xff1a;上圖中給出的鏈表&#xff0c;表示數字 189 。返…

Photoshop快捷鍵大全

Photoshop是一款非常強大的圖像處理軟件&#xff0c;它提供了許多快捷鍵&#xff0c;可以幫助用戶更快地完成操作。熟練掌握這些快捷鍵&#xff0c;可以大大提高工作效率&#xff0c;讓您更加專注于創作。 Photoshop快捷鍵匯總&#xff1a; 一、基本操作快捷鍵 1. 新建文檔…

什么是CSS中的漸變(gradient)?如何使用CSS創建線性漸變和徑向漸變?

聚沙成塔每天進步一點點 ? 專欄簡介? 漸變&#xff08;Gradient&#xff09;在CSS中的應用? 線性漸變&#xff08;Linear Gradient&#xff09;語法&#xff1a;示例&#xff1a; ? 徑向漸變&#xff08;Radial Gradient&#xff09;語法&#xff1a;示例&#xff1a; ? 寫…

第06天 靜態代理和動態代理

?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客 &#x1f49e;當前專欄&#xff1a;每天一個知識點 ?特色專欄&#xff1a…

36 | 銀行貸款數據分析

本文將以銀行貸款數據分析為主題,深入探討如何運用數據科學的方法,揭示銀行貸款領域的內在規律和趨勢。通過對貸款數據的分析,我們能夠洞察不同類型貸款的分布情況、貸款金額的變化趨勢,以及借款人的特征和還款情況等關鍵信息。 通過運用Python編程語言及相關的數據分析工…

arcgis定義投影與投影

1、定義 地理坐標系&#xff08;GCS&#xff09;&#xff1a;利用地球表面的經緯度表示的坐標系統。一般單位為度。投影坐標系&#xff08;PCS&#xff09;&#xff1a;利用數學換算將三維地球表面上的經緯度坐標轉換到二維平面上的坐標系統。一般單位為米。可以認為&#xff…

【ARM Cache 系列文章 9 番外篇 -- ARMv9 系列 Core 介紹】

文章目錄 ARMv9 系列CoreARM Cortex-A510 介紹ARM Cortex-A715ARM Cortex-A720 ARMv9 系列Core 2021年5月Arm公布了其最新3款CPU和3款GPU核心設計&#xff0c;三款新CPU分別是旗艦核心Cortex-X2、高性能核心Cortex-A710、高能效核心Cortex-A510 CPU&#xff0c;三款新GPU核心則…

【Unity每日一記】向量操作攝像機的移動(向量加減)

&#x1f468;?&#x1f4bb;個人主頁&#xff1a;元宇宙-秩沅 &#x1f468;?&#x1f4bb; hallo 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;?&#x1f4bb; 本文由 秩沅 原創 &#x1f468;?&#x1f4bb; 收錄于專欄&#xff1a;uni…