332 lines
14 KiB
Python
332 lines
14 KiB
Python
from pydantic import BaseModel, PositiveFloat, PositiveInt
|
||
import os
|
||
import pickle
|
||
from datetime import datetime
|
||
|
||
|
||
current_directory = os.getcwd()
|
||
|
||
|
||
|
||
class ModelParams():
|
||
config = {
|
||
'user': 'root',
|
||
'password': 'ai-station-root',
|
||
'host': '124.16.151.196',
|
||
'database': 'ai-station',
|
||
'port':12222
|
||
}
|
||
|
||
task_types_order = [
|
||
'回归预测任务',
|
||
'时序预测任务',
|
||
'计算机视觉任务',
|
||
'强化学习任务',
|
||
'自然语言处理任务',
|
||
'算法标注工具'
|
||
]
|
||
|
||
# 前缀:dmsb 地貌识别
|
||
#
|
||
|
||
|
||
dmsb_count = True
|
||
dmsb_name_classes = ["_background_", "Cropland", 'Forest', 'Grass', 'Shrub', 'Wetland', 'Water', 'Tundra', 'Impervious surface', 'Bareland', 'Ice/snow']
|
||
dmsb_colors = [
|
||
(0, 0, 0), # Background (黑色)
|
||
(252, 250, 205), # Cropland (淡黄色)
|
||
(0, 123, 79), # Forest (深绿色)
|
||
(157, 221, 106), # Grass (浅绿色)
|
||
(77, 208, 159), # Shrub (浅蓝绿色)
|
||
(111, 208, 242), # Wetland (浅蓝色)
|
||
(10, 78, 151), # Water (深蓝色)
|
||
(92, 106, 55), # Tundra (土黄色)
|
||
(155, 36, 22), # Impervious surface (红色)
|
||
(205, 205, 205), # Bareland (灰色)
|
||
(211, 242, 255) # Ice/snow (浅天蓝色)
|
||
]
|
||
|
||
|
||
dmsb_type = {
|
||
(0, 0, 0) : "背景", # Background (黑色)
|
||
(252, 250, 205) : "农田", # Cropland (淡黄色)
|
||
(0, 123, 79): "森林", # Forest (深绿色)
|
||
(157, 221, 106): "草地", # Grass (浅绿色)
|
||
(77, 208, 159): "灌木", # Shrub (浅蓝绿色)
|
||
(111, 208, 242): "湿地", # Wetland (浅蓝色)
|
||
(10, 78, 151): "水体", # Water (深蓝色)
|
||
(92, 106, 55): "苔原", # Tundra (土黄色)
|
||
(155, 36, 22): "建筑", # Impervious surface (红色)
|
||
(205, 205, 205): "裸地", # Bareland (灰色)
|
||
(211, 242, 255): "冰雪" # Ice/snow (浅天蓝色)
|
||
}
|
||
|
||
|
||
# 前缀 wdpv 屋顶光伏
|
||
wdpv_palette = [0, 0, 0, 255, 0, 0, 0, 255, 0]
|
||
|
||
wdpv_colors = [(0, 0, 0), # 黑色
|
||
(255, 0, 0), # 红色
|
||
(0, 255, 0)] # 绿色
|
||
|
||
wd_type = {
|
||
(0, 0, 0):"背景",
|
||
(255, 0, 0): "屋顶",
|
||
(0, 255, 0):'其他'
|
||
}
|
||
|
||
pv_type = {
|
||
(0, 0, 0):"背景",
|
||
(255, 0, 0): "光伏",
|
||
(0, 255, 0):'其他'
|
||
}
|
||
|
||
wdpv_type = {
|
||
(0, 0, 0):"背景",
|
||
(255, 0, 0): "屋顶光伏",
|
||
(0, 255, 0):'其他'
|
||
}
|
||
|
||
# 煤热解
|
||
meirejie_model_dict = {
|
||
"adb_char" : "model/char_ADB.joblib",
|
||
"dtr_char": "model/char_DTR.joblib",
|
||
"en_char":"model/char_ElasticNet.joblib",
|
||
"gp_char":"model/char_GaussianProcessRegressor.joblib",
|
||
"kn_char":"model/char_KNeighborsRegressor.joblib",
|
||
"lasso_char":"model/char_Lasso.joblib",
|
||
"lr_char":"model/char_LinearRegression.joblib",
|
||
"rfr_char":"model/char_RFR.joblib",
|
||
"ridge_char":"model/char_Ridge.joblib",
|
||
"svr_char":"model/char_SVR.joblib",
|
||
"xgb_char":"model/char_XGB.joblib",
|
||
|
||
"adb_gas" : "model/gas_ADB.joblib",
|
||
"dtr_gas": "model/gas_DTR.joblib",
|
||
"en_gas":"model/gas_ElasticNet.joblib",
|
||
"gp_gas":"model/gas_GaussianProcessRegressor.joblib",
|
||
"kn_gas":"model/gas_KNeighborsRegressor.joblib",
|
||
"lasso_gas":"model/gas_Lasso.joblib",
|
||
"lr_gas":"model/gas_LinearRegression.joblib",
|
||
"rfr_gas":"model/gas_RFR.joblib",
|
||
"ridge_gas":"model/gas_Ridge.joblib",
|
||
"svr_gas":"model/gas_SVR.joblib",
|
||
"xgb_gas":"model/gas_XGB.joblib",
|
||
|
||
"adb_water" : "model/water_ADB.joblib",
|
||
"dtr_water": "model/water_DTR.joblib",
|
||
"en_water":"model/water_ElasticNet.joblib",
|
||
"gp_water":"model/water_GaussianProcessRegressor.joblib",
|
||
"kn_water":"model/water_KNeighborsRegressor.joblib",
|
||
"lasso_water":"model/water_Lasso.joblib",
|
||
"lr_water":"model/water_LinearRegression.joblib",
|
||
"rfr_water":"model/water_RFR.joblib",
|
||
"ridge_water":"model/water_Ridge.joblib",
|
||
"svr_water":"model/water_SVR.joblib",
|
||
"xgb_water":"model/water_XGB.joblib",
|
||
|
||
"adb_tar" : "model/tar_ADB.joblib",
|
||
"dtr_tar": "model/tar_DTR.joblib",
|
||
"en_tar":"model/tar_ElasticNet.joblib",
|
||
"gp_tar":"model/tar_GaussianProcessRegressor.joblib",
|
||
"kn_tar":"model/tar_KNeighborsRegressor.joblib",
|
||
"lasso_tar":"model/tar_Lasso.joblib",
|
||
"lr_tar":"model/tar_LinearRegression.joblib",
|
||
"rfr_tar":"model/tar_RFR.joblib",
|
||
"ridge_tar":"model/tar_Ridge.joblib",
|
||
"svr_tar":"model/tar_SVR.joblib",
|
||
"xgb_tar":"model/tar_XGB.joblib"
|
||
|
||
}
|
||
|
||
index = ['mae', 'r2', 'result']
|
||
columns = [
|
||
'XGBoost(极端梯度提升)',
|
||
'Linear Regression(线性回归)',
|
||
'Ridge Regression(岭回归)',
|
||
'Gaussian Process Regression(高斯过程回归)',
|
||
'ElasticNet Regression(弹性网回归)',
|
||
'K-Nearest Neighbors(K最近邻)',
|
||
'Support Vector Regression(支持向量回归)',
|
||
'Decision Tree Regression(决策树回归)',
|
||
'Random Forest Regression(随机森林回归)',
|
||
'AdaBoost Regression(AdaBoost回归)'
|
||
]
|
||
meirejie_model_list_gas = ['xgb_gas','lr_gas','ridge_gas','gp_gas','en_gas','kn_gas','svr_gas','dtr_gas','rfr_gas','adb_gas']
|
||
meirejie_model_list_char = ['xgb_char','lr_char','ridge_char','gp_char','en_char','kn_char','svr_char','dtr_char','rfr_char','adb_char']
|
||
meirejie_model_list_water = ['xgb_water','lr_water','ridge_water','gp_water','en_water','kn_water','svr_water','dtr_water','rfr_water','adb_water']
|
||
meirejie_model_list_tar = ['xgb_tar','lr_tar','ridge_tar','gp_tar','en_tar','kn_tar','svr_tar','dtr_tar','rfr_tar','adb_tar']
|
||
|
||
|
||
meirejie_gas_mae = [1.93, 3.15, 3.15,1.51, 3.15, 2.15, 2.98, 2.4, 2.42, 3.0]
|
||
meirejie_gas_r2 = [0.78, 0.68, 0.68,0.89,0.68, 0.75, 0.65, 0.74, 0.69, 0.62]
|
||
|
||
meirejie_char_mae = [5.38, 7.0, 7.03, 2.91, 7.03, 3.94,13.5,12.55, 4.8,6.39]
|
||
meirejie_char_r2 = [0.09, 0.01, 0.01, 0.8, 0.01, 0.7, 0.1,0.13, 0.16, 0.16]
|
||
|
||
meirejie_water_mae = [1.74,4.33,4.35,1.47,0.83,4.18,2.51,1.38,1.42]
|
||
meirejie_water_r2 = [0.87,0.47,0.46,0.89,0.45,0.98,0.23,0.67,0.89,0.95]
|
||
|
||
meirejie_tar_mae = [0.93,2.09,2.09,1.31,2.09,1.28,1.51,1.24,0.96,1.49]
|
||
meirejie_tar_r2 = [0.78,0.32,0.33,0.6,0.33,0.55,0.57,0.48,0.74,0.6]
|
||
|
||
meirejie_test_data = {
|
||
'tar':'tar_data_test.csv',
|
||
'char':'char_data_test.csv',
|
||
'water':'water_data_test.csv',
|
||
'gas':'gas_data_test.csv',
|
||
}
|
||
|
||
|
||
|
||
# 煤基碳材料
|
||
meijitancailiao_model_dict = {
|
||
"adb_ssa" : "model/SSA_ADB.joblib",
|
||
"dtr_ssa": "model/SSA_DTR.joblib",
|
||
"en_ssa":"model/SSA_ElasticNet.joblib",
|
||
"gp_ssa":"model/SSA_GaussianProcessRegressor.joblib",
|
||
"kn_ssa":"model/SSA_KNeighborsRegressor.joblib",
|
||
"lasso_ssa":"model/SSA_Lasso.joblib",
|
||
"lr_ssa":"model/SSA_LinearRegression.joblib",
|
||
"rfr_ssa":"model/SSA_RFR.joblib",
|
||
"ridge_ssa":"model/SSA_Ridge.joblib",
|
||
"svr_ssa":"model/SSA_SVR.joblib",
|
||
"xgb_ssa":"model/SSA_XGB.joblib",
|
||
|
||
"adb_tpv" : "model/TPV_ADB.joblib",
|
||
"dtr_tpv": "model/TPV_DTR.joblib",
|
||
"en_tpv":"model/TPV_ElasticNet.joblib",
|
||
"gp_tpv":"model/TPV_GaussianProcessRegressor.joblib",
|
||
"gdbt_tpv":"model/TPV_GDBT.joblib",
|
||
"kn_tpv":"model/TPV_KNeighborsRegressor.joblib",
|
||
"lasso_tpv":"model/TPV_Lasso.joblib",
|
||
"lr_tpv":"model/TPV_LinearRegression.joblib",
|
||
"rfr_tpv":"model/TPV_RFR.joblib",
|
||
"ridge_tpv":"model/TPV_Ridge.joblib",
|
||
"svr_tpv":"model/TPV_SVR.joblib",
|
||
"xgb_tpv":"model/TPV_XGB.joblib",
|
||
|
||
"adb_meitan" : "model/meitan_ADB.joblib",
|
||
"dtr_meitan": "model/meitan_DTR.joblib",
|
||
"en_meitan":"model/meitan_ElasticNet.joblib",
|
||
"gp_meitan":"model/meitan_GaussianProcessRegressor.joblib",
|
||
"gdbt_meitan":"model/meitan_GDBT.joblib",
|
||
"kn_meitan":"model/meitan_KNeighborsRegressor.joblib",
|
||
"lasso_meitan":"model/meitan_Lasso.joblib",
|
||
"lr_meitan":"model/meitan_LinearRegression.joblib",
|
||
"rfr_meitan":"model/meitan_RFR.joblib",
|
||
"ridge_meitan":"model/meitan_Ridge.joblib",
|
||
"svr_meitan":"model/meitan_SVR.joblib",
|
||
"xgb_meitan":"model/meitan_XGB.joblib",
|
||
|
||
"adb_meiliqing" : "model/meiliqing_ADB.joblib",
|
||
"dtr_meiliqing": "model/meiliqing_DTR.joblib",
|
||
"en_meiliqing":"model/meiliqing_ElasticNet.joblib",
|
||
"gp_meiliqing":"model/meiliqing_GaussianProcessRegressor.joblib",
|
||
"gdbt_meiliqing":"model/meiliqing_GDBT.joblib",
|
||
"kn_meiliqing":"model/meiliqing_KNeighborsRegressor.joblib",
|
||
"lasso_meiliqing":"model/meiliqing_Lasso.joblib",
|
||
"lr_meiliqing":"model/meiliqing_LinearRegression.joblib",
|
||
"rfr_meiliqing":"model/meiliqing_RFR.joblib",
|
||
"ridge_meiliqing":"model/meiliqing_Ridge.joblib",
|
||
"svr_meiliqing":"model/meiliqing_SVR.joblib",
|
||
"xgb_meiliqing":"model/meiliqing_XGB.joblib",
|
||
|
||
}
|
||
columns_ssa = [
|
||
'XGBoost(极端梯度提升)',
|
||
'Linear Regression(线性回归)',
|
||
'Ridge Regression(岭回归)',
|
||
'Gaussian Process Regression(高斯过程回归)',
|
||
'ElasticNet Regression(弹性网回归)',
|
||
'K-Nearest Neighbors(最近邻居算法)',
|
||
'Support Vector Regression(支持向量回归)',
|
||
'Decision Tree Regression(决策树回归)',
|
||
'Random Forest Regression(随机森林回归)',
|
||
'AdaBoost Regression(自适应提升回归)'
|
||
]
|
||
meijitancailiao_model_list_ssa = ['xgb_ssa','lr_ssa','ridge_ssa','gp_ssa','en_ssa','kn_ssa','svr_ssa','dtr_ssa','rfr_ssa','adb_ssa']
|
||
meijitancailiao_ssa_mae = [258, 407,408 ,282 ,411 ,389, 405, 288,193, 330]
|
||
meijitancailiao_ssa_r2 = [0.92,0.82,0.82,0.89,0.81,0.82,0.87,0.88,0.95,0.88]
|
||
columns_tpv = [
|
||
'XGBoost(极端梯度提升)',
|
||
'Linear Regression(线性回归)',
|
||
'Ridge Regression(岭回归)',
|
||
'Gaussian Process Regression(高斯过程回归)',
|
||
'ElasticNet Regression(弹性网回归)',
|
||
'Gradient Boosting Regression(梯度提升回归)',
|
||
'Support Vector Regression(支持向量回归)',
|
||
'Decision Tree Regression(决策树回归)',
|
||
'Random Forest Regression(随机森林回归)',
|
||
'AdaBoost Regression(自适应提升回归)'
|
||
]
|
||
meijitancailiao_model_list_tpv = ['xgb_tpv', 'lr_tpv', 'ridge_tpv', 'gp_tpv', 'en_tpv', 'gdbt_tpv', 'svr_tpv', 'dtr_tpv', 'rfr_tpv', 'adb_tpv']
|
||
meijitancailiao_tpv_mae = [0.2, 0.2, 0.2, 0.2, 0.2, 0.23, 0.23, 0.21, 0.16, 0.21]
|
||
meijitancailiao_tpv_r2 = [0.81, 0.81, 0.81, 0.8, 0.82, 0.80, 0.78, 0.73, 0.85, 0.84]
|
||
|
||
columns_meitan = [
|
||
'XGBoost(极端梯度提升)',
|
||
'Linear Regression(线性回归)',
|
||
'Ridge Regression(岭回归)',
|
||
'Gaussian Process Regression(高斯过程回归)',
|
||
'ElasticNet Regression(弹性网回归)',
|
||
'Gradient Boosting Regression(梯度提升回归)',
|
||
'Support Vector Regression(支持向量回归)',
|
||
'Decision Tree Regression(决策树回归)',
|
||
'Random Forest Regression(随机森林回归)',
|
||
'AdaBoost Regression(自适应提升回归)'
|
||
]
|
||
meijitancailiao_model_list_meitan = ['xgb_meitan', 'lr_meitan', 'ridge_meitan', 'gp_meitan', 'en_meitan', 'gdbt_meitan', 'svr_meitan', 'dtr_meitan', 'rfr_meitan', 'adb_meitan']
|
||
meijitancailiao_meitan_mae = [8.17, 37.61, 37.66, 13.41, 20.96, 8.03, 14.89, 19.48, 12.53, 15.6]
|
||
meijitancailiao_meitan_r2 = [0.96, 0.19, 0.19, 0.91, 0.8, 0.96, 0.88, 0.86, 0.91, 0.91]
|
||
|
||
columns_meiliqing = [
|
||
'XGBoost(极端梯度提升)',
|
||
'Linear Regression(线性回归)',
|
||
'Ridge Regression(岭回归)',
|
||
'Gaussian Process Regression(高斯过程回归)',
|
||
'ElasticNet Regression(弹性网回归)',
|
||
'Gradient Boosting Regression(梯度提升回归)',
|
||
'Support Vector Regression(支持向量回归)',
|
||
'Decision Tree Regression(决策树回归)',
|
||
'Random Forest Regression(随机森林回归)',
|
||
'AdaBoost Regression(自适应提升回归)'
|
||
]
|
||
meijitancailiao_model_list_meiliqing = ['xgb_meiliqing', 'lr_meiliqing', 'ridge_meiliqing', 'gp_meiliqing', 'en_meiliqing', 'gdbt_meiliqing', 'svr_meiliqing', 'dtr_meiliqing', 'rfr_meiliqing', 'adb_meiliqing']
|
||
meijitancailiao_meiliqing_mae = [8.38, 35.02, 35.1, 11.02, 13.58, 7.04, 13.13, 13.13, 11.25, 9.99]
|
||
meijitancailiao_meiliqing_r2 = [0.95, 0.33, 0.33, 0.94, 0.91, 0.97, 0.88, 0.89, 0.92, 0.94]
|
||
|
||
|
||
meijitancailiao_test_data = {
|
||
'ssa':'test_ssa.csv',
|
||
'tpv':'test_tpv.csv',
|
||
'meitan':'test_meitan.csv',
|
||
'meiliqing':'test_meiliqing.csv',
|
||
}
|
||
|
||
|
||
simu_model_dict = {
|
||
"adb" : ["model/SSA_ADB.joblib","model/TPV_ADB.joblib"],
|
||
"dtr": ["model/SSA_DTR.joblib","model/TPV_DTR.joblib"],
|
||
"en":["model/SSA_ElasticNet.joblib","model/TPV_ElasticNet.joblib"],
|
||
"gp":["model/SSA_GaussianProcessRegressor.joblib","model/TPV_GaussianProcessRegressor.joblib"],
|
||
"kn":["model/SSA_KNeighborsRegressor.joblib","model/TPV_KNeighborsRegressor.joblib"],
|
||
"lasso":["model/SSA_Lasso.joblib","model/TPV_Lasso.joblib"],
|
||
"lr":["model/SSA_LinearRegression.joblib","model/TPV_LinearRegression.joblib"],
|
||
"rfr":["model/SSA_RFR.joblib","model/TPV_RFR.joblib"],
|
||
"ridge":["model/SSA_Ridge.joblib","model/TPV_Ridge.joblib"],
|
||
"svr":["model/SSA_SVR.joblib","model/TPV_SVR.joblib"],
|
||
"xgb":["model/SSA_XGB.joblib","model/TPV_XGB.joblib"],
|
||
"gdbt":["model/SSA_GDBT.joblib","model/TPV_GDBT.joblib"]
|
||
}
|
||
|
||
ALLOWED_EXTENSIONS = {'.jpg', '.jpeg', '.png', '.tif'}
|
||
MAX_FILE_SIZE = 100 * 1024 * 1024 # 100 MB
|
||
MAX_FILE_SAM_SIZE = 10 * 1024 * 1024
|
||
|
||
|
||
|
||
|
||
|
||
DEFAULT_MODEL_PATH = r"/home/xiazj/ai-station-code/segment_anything_model/weights/vit_b.pth"
|
||
|