亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

解決方案:【目標檢測】英雄聯(lián)盟能用YOLOv5實(shí)時(shí)目標檢測了 支持onnx推理

優(yōu)采云 發(fā)布時(shí)間: 2022-11-30 10:53

  解決方案:【目標檢測】英雄聯(lián)盟能用YOLOv5實(shí)時(shí)目標檢測了 支持onnx推理

  目錄

  一、項目介紹

  dcmyolo(夢(mèng)想創(chuàng )造奇跡),中文:大智能物體檢測工具包。該項目基于pytorch構建。構建的目的是提供一個(gè)性能更好的YOLO版本。同時(shí)擁有豐富的中文教程和詳細的源碼解讀。提供了算法工具箱,給出了不同體積模型的實(shí)驗數據,為算法的實(shí)現提供了指導。來(lái)的方便。為了方便開(kāi)發(fā)者,項目開(kāi)箱即用。推理階段,直接把test dcmyolo目錄放到項目中,實(shí)例化一個(gè)類(lèi),然后調用。

  很多教程都是基于coco和voc數據集,我也會(huì )提供基于coco數據集的預訓練模型。為了增加趣味性,我將以英雄聯(lián)盟中英雄、小兵、塔的檢測為例,詳細介紹dcmyolo的使用。

  項目鏈接:

  資料鏈接: 提取碼:faye

  測試視頻: 提取碼:faye

  預訓練模型: 提取碼:faye

  標注工具: 提取碼:faye

  效果演示:英雄聯(lián)盟可以使用YOLOv5實(shí)時(shí)目標檢測_英雄聯(lián)盟

  2.項目結構

  dcmyolo項目主目錄

  +數據存儲訓練和測試數據

  - dcmyolo實(shí)現了項目的所有核心功能,移植時(shí)直接測試該目錄即可

  - 模型模型構建相關(guān)

  + backbone 各種backbone,目前只有CSPdarknet,未來(lái)會(huì )不斷豐富

  yolo_body.py構建模型的類(lèi),實(shí)例化后使用

  + model_data 存儲模型文件

  + utils 工具類(lèi)

  labelme2voc.py 將labelme的json文件轉為voc格式

  voc2annotation_txt.py 將VOC格式轉換成項目需要的格式

  make_anchors.py 生成數據集的anchors文件

  train_dcmyolo.py 執行訓練

  export.py 導出onnx等格式的文件

  predict_dcmyolo.py 推理演示

  predict_onnx.pypth 轉換onnx,onnx進(jìn)行推理demo

  3.準備數據

  我們需要制作三個(gè)文件train.txt、val.txt、test.txt,格式如下:

  data/wangzhe/JPEGImages/1.jpg 910,504,1035,633,0 1759,113,1920,383,2

data/wangzhe/JPEGImages/10.jpg 805,189,1060,570,0 1,649,273,935,2 1636,70,1823,182,2

data/wangzhe/JPEGImages/100.jpg 896,258,1254,550,3

data/wangzhe/JPEGImages/101.jpg 869,416,1059,591,0 277,295,464,407,4 1024,311,1369,640,3

  文件中一張圖片為一行,一行中的每條信息以空格分隔。第一塊是圖片存放的路徑。這里我們放在項目中的data/wangzhe/JPEGImages目錄下;其余幾塊表示方框的位置和類(lèi)別,每段用逗號分成5個(gè)部分,分別代表左上x(chóng)、左上y、右下x、右下y,以及所屬類(lèi)別的索引他們屬于哪個(gè)。

  如果只有圖片,沒(méi)有標簽,我們需要進(jìn)行下面的數據標注和數據格式轉換步驟。這個(gè)過(guò)程非常簡(jiǎn)單,而且是體力勞動(dòng)。

  如果使用開(kāi)源數據集,我們需要自己將數據集的標注文件轉換成上述格式,不需要下面的步驟。

  如果你用的是我整理的英雄聯(lián)盟手游數據,直接下載數據解壓到項目的data目錄下,就可以直接使用了,不需要下面的步驟。

  1、數據標注

  這一步是用來(lái)制作我們自己的數據集的。我們使用 labelme 作為標注工具。標注好后,我們使用腳本將標注文件轉成voc格式,再從voc轉成我們需要的格式。上面是labelme的下載鏈接,解壓后使用方法如下:

 ?。?)雙擊main.exe打開(kāi)labelme

  (2) 選擇要標注的圖片目錄。這里我準備了100多張英雄聯(lián)盟的截圖,比如項目中的data/wangzhe_org/目錄。

 ?。?)右側會(huì )列出該文件夾下的所有圖片,選擇一張圖片,在圖片區域右擊選擇矩形

 ?。?)選擇一個(gè)矩形框的目標(英雄),填寫(xiě)類(lèi)別名稱(chēng),點(diǎn)擊確定完成一個(gè)目標的標注。注意:一定要選擇從左上角到右下角的邊框;在同一張圖片中標記盡可能多的目標,不要錯過(guò)它們;同一類(lèi)別的名稱(chēng)必須相同,不同類(lèi)別的名稱(chēng)不能相同;類(lèi)別名稱(chēng)使用英文(區分大小寫(xiě)),無(wú)標點(diǎn)符號。

  (5)標記一張圖片后,選擇下一張圖片時(shí),會(huì )提示保存json文件,保存到默認目錄即可,不要更改目錄。

  2.數據轉換格式

  我們已經(jīng)得到了labelme生成的json格式的標準文件,我們需要先將其轉換成VOC格式,然后再轉換成我們需要的格式。

  (1) 轉換成VOC格式

  執行工程中的labelme2voc.py文件,示例如下:

  '''

data/wangzhe_org/: 存放原圖片和labelme生成的json文件的目錄

data/wangzhe/:? ? ? 目標目錄

labels:? ? ? ? ? ? ?存放所有列表標簽的文件,英雄聯(lián)盟的數據集標簽文件已經(jīng)放在項目的dcmyolo/model_data/wangzhe_classes.txt文件中

'''

python labelme2voc.py data/wangzhe_org/ data/wangzhe/ --labels dcmyolo/model_data/wangzhe_classes.txt

  其中,dcmyolo/model_data/wangzhe_classes.txt文件,共有3種標簽文件如下:

  Hero

Solider

Tower

  VOC格式有以下4個(gè)文件,Annotations存放標簽文件,AnnotationsVisualization存放用方框標注的圖片,方便我們查看,JPEGImages存放圖片,class_names.txt存放所有類(lèi)別的標簽。接下來(lái)我們將只使用 Annotations 和 JPEGImages:

 ?。?)轉換工程需要的格式

  執行項目中的voc2annotation_txt.py文件,示例如下:

  '''

classes_path: ? ????存放標簽種類(lèi)的文件

data_dir: ? ????????存數據的目錄,寫(xiě)到Annotations上一級

trainval_percent: ? 用于指定(訓練集+驗證集)與測試集的比例,默認情況下 9:1

train_percent: ? ???用于指定(訓練集+驗證集)中訓練集與驗證集的比例,默認情況下 9:1

'''

python voc2annotation_txt.py --classes_path dcmyolo/model_data/wangzhe_classes.txt --data_dir data/wangzhe/ --trainval_percent 0.95 --train_percent 0.95

  至此我們已經(jīng)生成了項目需要的標簽文件,可以進(jìn)行訓練了。

  4.執行力訓練

  所有數據文件和配置文件的文件名和目錄都是可以自定義的,下面我會(huì )按照自己的習慣存放這些文件。

  

" />

  1.錨文件

  文件放在dcmyolo/model_data/wangzhe_classes.txt

  原來(lái)yolov5提到的改進(jìn)之一就是不需要手動(dòng)生成anchors。事實(shí)上,生成anchor的方法在訓練之前就被丟棄了。我比較習慣手動(dòng)生成anchor,也不麻煩。

  anchors的作用下一篇講原理的時(shí)候會(huì )提到,現在我們只需要生成即可,使用make_anchors.py生成:

  '''

txt_path: 標注文件txt

anchors_path: anchors文件txt

clusters: 聚類(lèi)的數目,一般情況下是9

input_size: 模型中圖像的輸入尺寸

'''

python make_anchors.py --txt_path data/wangzhe/train.txt --anchors_path dcmyolo/model_data/wangzhe_anchors.txt --clusters 9 --input_size 640

  生成的文件 wangzhe_anchors.txt 如下所示:

  25,44,30,58,37,64,50,68,42,91,55,104,71,113,62,141,91,256

  2.標簽文件

  文件放在dcmyolo/model_data/wangzhe_classes.txt,內容是標注三類(lèi),每行一類(lèi):

  Hero

Solider

Tower

  3.預訓練模型

  下載好預訓練模型后,解壓放到dcmyolo/model_data/下。

  預訓練模型有兩種,backbone和yolov5。Backbone只是在imagenet上預訓練的分類(lèi)模型,yolov5是在coco數據集上訓練的yolov5模型。如果同時(shí)加載了backbone和yolov5預訓練模型,backbone參數會(huì )被覆蓋。yolov5預訓練模型收錄

了一些backbone沒(méi)有的卷積層。如果fine-tuning推薦使用yolov5預訓練模型,收斂會(huì )更快。

  4.訓練數據

  將上述數據集解壓,放到data目錄下。

  如果是自己標注的數據,將三個(gè)核心文件train.txt、val.txt、test.txt放在data/wangzhe/目錄下,同時(shí)保證這三個(gè)文件中的圖片路徑正確. 結構如下,其中ImageSets目錄為臨時(shí)目錄,不用于訓練,可以省略。

  5.修改配置

  所有參數的定義和注釋如下,為了節省篇幅,去掉了之前的parser.add_argument:

  ('--classes_path', type=str, default='dcmyolo/model_data/coco_classes.txt', help="類(lèi)別標簽文件路徑")

('--anchors_path', type=str, default='dcmyolo/model_data/coco_anchors.txt', help="anchors文件路徑")

('--train_annotation_path', type=str, default='data/coco/train.txt', help="存放訓練集圖片路徑和標簽的txt")

('--val_annotation_path', type=str, default='data/coco/val.txt', help="存放驗證圖片路徑和標簽的txt")

('--phi', type=str, default='s', help="所使用的YoloV5的版本。n、s、m、l、x")

# ---------------------------------------------------------------------#

# --backbone_model_dir參數

# 如果有backbone的預訓練模型,可以backbone預訓練模型目錄,當model_path不存在的時(shí)候不加載整個(gè)模型的權值。

# 只寫(xiě)到模型文件的上一級目錄即可,文件名會(huì )根據phi自動(dòng)計算(前提是從百度網(wǎng)盤(pán)下載的模型文件名沒(méi)改)

# ---------------------------------------------------------------------#

('--backbone_model_dir', type=str, default='dcmyolo/model_data/', help="backbone的預訓練模型,寫(xiě)到上一級目錄即可")

('--model_path', type=str, default='dcmyolo/model_data/pretrained.pth', help="yolov5預訓練模型的路徑")

('--save_period', type=int, default=10, help="多少個(gè)epoch保存一次權值")

('--save_dir', type=str, default='logs_wangzhe', help="權值與日志文件保存的文件夾")

('--input_shape', nargs='+', type=int, default=[640, 640], help="輸入的shape大小,一定要是32的倍數")

('--use_fp16', action='store_true', help="是否使用混合精度訓練")

#------------------------------------------------------------------#

# mosaic 馬賽克數據增強。

# mosaic_prob 每個(gè)step有多少概率使用mosaic數據增強,默認50%。

#

# mixup 是否使用mixup數據增強,僅在mosaic=True時(shí)有效。

# 只會(huì )對mosaic增強后的圖片進(jìn)行mixup的處理。

# mixup_prob 有多少概率在mosaic后使用mixup數據增強,默認50%。

# 總的mixup概率為mosaic_prob * mixup_prob。

#

# special_aug_ratio 參考YoloX,由于Mosaic生成的訓練圖片,遠遠脫離自然圖片的真實(shí)分布。

# 當mosaic=True時(shí),本代碼會(huì )在special_aug_ratio范圍內開(kāi)啟mosaic。

# 默認為前70%個(gè)epoch,100個(gè)世代會(huì )開(kāi)啟70個(gè)世代。

#------------------------------------------------------------------#

('--use_mosaic', action='store_true', help="是否使用馬賽克數據增強")

('--mosaic_prob', type=float, default=0.5, help="每個(gè)step有多少概率使用mosaic數據增強")

('--use_mixup', action='store_true', help="是否使用mixup數據增強,僅在mosaic=True時(shí)有效")

('--mixup_prob', type=float, default=0.5, help="有多少概率在mosaic后使用mixup數據增強")

('--special_aug_ratio', type=float, default=0.7, help="當mosaic=True時(shí),會(huì )在該范圍內開(kāi)啟mosaic")

('--epoch', type=int, default=100, help="總迭代次數")

('--batch_size', type=int, default=128, help="每批次取多少張圖片")

('--label_smoothing', type=float, default=0, help="是否開(kāi)啟標簽平滑")

('--init_lr', type=float, default=1e-2, help="初始學(xué)習率")

('--min_lr', type=float, default=1e-4, help="最小學(xué)習率")

('--optimizer_type', type=str, default="sgd", help="使用到的優(yōu)化器種類(lèi),可選的有adam、sgd")

('--momentum', type=float, default=0.937, help="優(yōu)化器內部使用到的momentum參數")

('--weight_decay', type=float, default=5e-4, help="權值衰減,可防止過(guò)擬合")

('--lr_decay_type', type=str, default="step", help="使用到的學(xué)習率下降方式,可選的有step、cos")

('--eval_flag', action='store_true', help="是否在訓練時(shí)進(jìn)行評估,評估對象為驗證集")

('--eval_period', type=int, default=10, help="代表多少個(gè)epoch評估一次")

('--num_workers', type=int, default=4, help="多少個(gè)線(xiàn)程讀取數據")

  示例腳本 train_dcmyolo.sh:

  for i in $(ps -ax |grep train_dcmyolo |awk '{print }')

do

id=`echo $i |awk -F"/" '{print }'`

<p>

kill -9 $id

done

nohup python -u train_dcmyolo.py \

--classes_path dcmyolo/model_data/wangzhe_classes.txt \

--anchors_path dcmyolo/model_data/coco_anchors.txt \

--train_annotation_path data/wangzhe/train.txt \

--val_annotation_path data/wangzhe/val.txt \

--save_dir logs_wangzhe \

--phi s \

--backbone_model_dir dcmyolo/model_data \

--model_path dcmyolo/model_data/yolov5_s.pth \

--input_shape 640 640 \

--batch_size 4 \

--epoch 1000 \

--save_period 100 \

> log_train_dcmyolo.log &

tail -f log_train_dcmyolo.log

</p>

  6.執行力訓練

  執行以下腳本進(jìn)行訓練,訓練結果會(huì )放在logs_wangzhe目錄下。

  ./train_dcmyolo.sh

  五、執行預測

  推理和預測方法都在predict_dcmyolo.py中,可以檢測圖片、檢測視頻和熱圖。所有參數定義如下。同樣為了節省空間,移除了parser.add_argument:

  (&#39;--operation_type&#39;, type=str, default=&#39;&#39;, help="操作類(lèi)型export_onnx / predict_image / predict_video")

(&#39;--model_path&#39;, type=str, default=&#39;&#39;, help="pth模型的路徑")

(&#39;--classes_path&#39;, type=str, default=&#39;&#39;, help="分類(lèi)標簽文件")

(&#39;--anchors_path&#39;, type=str, default=&#39;&#39;, help="anchors文件")

(&#39;--onnx_path&#39;, type=str, default=&#39;&#39;, help="onnx保存路徑")

(&#39;--video_path&#39;, type=str, default=&#39;&#39;, help="視頻時(shí)才會(huì )用到,視頻的路徑")

(&#39;--video_save_path&#39;, type=str, default=&#39;&#39;, help="視頻時(shí)才會(huì )用到,視頻檢測之后的保存路徑")

(&#39;--phi&#39;, type=str, default=&#39;&#39;, help="所使用的YoloV5的版本。n、s、m、l、x")

(&#39;--no_simplify&#39;, action=&#39;store_false&#39;, help="不使用onnxsim簡(jiǎn)化模型")

(&#39;--input_shape&#39;, nargs=&#39;+&#39;, type=int, default=[640, 640], help="輸入的shape大小,一定要是32的倍數")

(&#39;--append_nms&#39;, action=&#39;store_true&#39;, help="添加nms")

(&#39;--iou_threshold&#39;, type=float, default=0.3, help="兩個(gè)bbox的iou超過(guò)這個(gè)值會(huì )被認為是同一物體")

(&#39;--score_threshold&#39;, type=float, default=0.5, help="檢測物體的概率小于這個(gè)值將會(huì )被舍棄")

  1.檢測圖片

  檢測圖片,示例腳本如下:

  python predict_dcmyolo.py --operation_type predict_image --model_path dcmyolo/model_data/wangzhe_best_weights.pth --classes_path dcmyolo/model_data/wangzhe_classes.txt --anchors_path dcmyolo/model_data/coco_anchors.txt

  在控制臺輸入圖片路徑,會(huì )顯示檢測結果:

  2.檢測視頻

  測試視頻可以從上面的鏈接下載。示例腳本如下,檢測結果會(huì )放在指定的輸出位置:

  python predict_dcmyolo.py --operation_type predict_video --model_path dcmyolo/model_data/wangzhe_best_weights.pth --classes_path dcmyolo/model_data/wangzhe_classes.txt --anchors_path dcmyolo/model_data/coco_anchors.txt --video_path data/video/wangzhe1.mp4 --video_save_path_path data/video/wangzhe1_out.mp4

  3.熱圖

  示例腳本如下:

  python predict_dcmyolo.py --operation_type heatmap --model_path dcmyolo/model_data/wangzhe_best_weights.pth --classes_path dcmyolo/model_data/wangzhe_classes.txt --anchors_path dcmyolo/model_data/coco_anchors.txt --heatmap_save_path data/heatmap.jpg

  與檢測圖片類(lèi)似,在控制臺輸入圖片路徑,即可顯示熱圖??梢郧宄乜吹郊せ顓^域,證明模型確實(shí)很好地檢測到了目標。

  5.轉換onnx

  將模型導出為onnx格式,有利于模型加速,便于模型部署。所有onnx相關(guān)的方法都放在predict_onnx.py中??梢詫С鰋nnx文件,檢測圖片,檢測視頻。所有參數定義如下。同樣為了節省空間,移除了parser.add_argument:

  (&#39;--operation_type&#39;, type=str, default=&#39;&#39;, help="操作類(lèi)型export_onnx / predict_image / predict_video")

(&#39;--model_path&#39;, type=str, default=&#39;&#39;, help="pth模型的路徑")

(&#39;--classes_path&#39;, type=str, default=&#39;&#39;, help="分類(lèi)標簽文件")

(&#39;--anchors_path&#39;, type=str, default=&#39;&#39;, help="anchors文件")

(&#39;--onnx_path&#39;, type=str, default=&#39;&#39;, help="onnx保存路徑")

(&#39;--video_path&#39;, type=str, default=&#39;&#39;, help="視頻時(shí)才會(huì )用到,視頻的路徑")

(&#39;--video_save_path&#39;, type=str, default=&#39;&#39;, help="視頻時(shí)才會(huì )用到,視頻檢測之后的保存路徑")

(&#39;--phi&#39;, type=str, default=&#39;&#39;, help="所使用的YoloV5的版本。n、s、m、l、x")

(&#39;--no_simplify&#39;, action=&#39;store_false&#39;, help="不使用onnxsim簡(jiǎn)化模型")

(&#39;--input_shape&#39;, nargs=&#39;+&#39;, type=int, default=[640, 640], help="輸入的shape大小,一定要是32的倍數")

(&#39;--append_nms&#39;, action=&#39;store_true&#39;, help="添加nms")

(&#39;--iou_threshold&#39;, type=float, default=0.3, help="兩個(gè)bbox的iou超過(guò)這個(gè)值會(huì )被認為是同一物體")

(&#39;--score_threshold&#39;, type=float, default=0.5, help="檢測物體的概率小于這個(gè)值將會(huì )被舍棄")

  1.導出onnx文件

  建議導出的onnx收錄

nms,這樣可以直接使用onnx輸出的結果,不需要程序進(jìn)行后期處理。加上--append_nms參數,可以讓聯(lián)通nms導出,onnx結果會(huì )報有指定的輸出路徑。示例腳本如下:

  python predict_onnx.py --operation_type export_onnx --model_path dcmyolo/model_data/wangzhe_best_weights.pth --classes_path dcmyolo/model_data/wangzhe_classes.txt --anchors_path dcmyolo/model_data/coco_anchors.txt --onnx_path dcmyolo/model_data/wangzhe_best_weights.onnx --append_nms

  2.檢測圖片

  使用onnx模型檢測圖片,示例腳本如下:

  python predict_onnx.py --operation_type predict_image --onnx_path dcmyolo/model_data/wangzhe_best_weights.onnx --classes_path dcmyolo/model_data/wangzhe_classes.txt

  在控制臺輸入圖片路徑,即可顯示檢測結果??梢钥吹給nnx和pytorch的結果是一致的。

  3.檢測視頻

  測試視頻可以從上面的鏈接下載。示例腳本如下,檢測結果會(huì )放在指定的輸出位置:

  python predict_onnx.py --operation_type predict_video --onnx_path dcmyolo/model_data/wangzhe_best_weights.onnx --classes_path dcmyolo/model_data/wangzhe_classes.txt --video_path data/video/wangzhe1.mp4 --video_save_path data/video/wangzhe1_out1.mp4

  英雄聯(lián)盟YOLOv5實(shí)時(shí)檢測的功能這里簡(jiǎn)單介紹一下。下一篇我會(huì )介紹YOLOv5的實(shí)現原理。dcmyolo項目會(huì )持續維護,會(huì )增加越來(lái)越多的功能,敬請期待。

  解決方案:基于web的文章管理系統(完整源碼+論文全套+教學(xué)視頻)

  實(shí)現一個(gè)web文章管理系統,也就是說(shuō)可以基于瀏覽器管理各種數據信息。也可以看作是一個(gè)B/S架構的文章管理系統。系統分為前后臺,實(shí)現在線(xiàn)操作,實(shí)現文章管理系統的各項功能,實(shí)現用戶(hù)管理、登錄注冊、權限管理等功能,管理與各種文章相關(guān)的實(shí)體管理系統。

  文章管理系統是采用mvc設計模式開(kāi)發(fā)的B/S架構項目,采用分層架構對項目進(jìn)行架構,分為pojo+action+service,其中pojo表示文章的各個(gè)數據庫表對應的實(shí)體系統,文章管理系統經(jīng)過(guò)詳細的需求分析和數據庫設計,設計實(shí)現了以下模塊,分別是登錄模塊,權限管理模塊,用戶(hù)管理模塊,文章管理系統信息管理模塊等。并通過(guò)java實(shí)現抽象類(lèi)

  開(kāi)發(fā)環(huán)境系統需求分析及流程圖

  一般來(lái)說(shuō),這類(lèi)項目的主要目的是掌握基本的web開(kāi)發(fā)知識,所以在實(shí)施文章管理系統的課程設計時(shí),需要先

" target="_blank">采集

其他文章管理系統的產(chǎn)品分析,進(jìn)行深入的數據庫web系統的設計,并基于mvc模式編寫(xiě)代碼,使用layui搭建頁(yè)面,進(jìn)而完成文章管理系統各模塊的開(kāi)發(fā)

  數據庫課程設計

  數據庫設計是整個(gè)文章管理系統的關(guān)鍵。合理的數據庫設計直接影響文章管理系統能否完美運行不報錯。本系統采用mysql數據庫作為數據存儲,引擎采用innoddb。文章管理系統將按照數據庫設計原則進(jìn)行數據分表設計

  系統演示視頻運行截圖

  基于Web的文章管理系統-登錄功能接口-網(wǎng)站實(shí)現

  

" />

  基于Web的文章管理系統-前臺首頁(yè)-網(wǎng)頁(yè)設計

  基于Web的文章管理系統-后臺信息管理頁(yè)面-網(wǎng)頁(yè)設計

  文章管理系統系統架構圖

  預防措施

  基于web的文章管理系統項目自帶源碼、試卷、sql數據庫、答辯ppt、期中檢查報告

  

" />

  登錄地址:8080/login.jsp

  后臺地址:8080/admin/login.jsp

  測試用戶(hù)cswork admin bishe 密碼123456

  測試管理員admin密碼admin bishe

  函數列表

  文章管理系統系統登錄模塊,實(shí)現文章管理系統的登錄注冊功能

  文章管理系統用戶(hù)管理模塊實(shí)現文章管理系統的信息管理和角色管理功能

  前臺信息管理模塊,面向普通用戶(hù),實(shí)現普通用戶(hù)對文章管理系統自定義查詢(xún)的錄入和修改

  超級管理員管理,實(shí)現文章管理系統系統各模塊后臺管理員管理功能,同意核心數據最佳權限管理

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久