
1. 項目概述當YOLOv7遇見甲骨文最近在整理一些歷史文獻資料時發(fā)現(xiàn)一個挺有意思的挑戰(zhàn)如何從一堆考古發(fā)掘的拓片或照片里快速、準確地找出那些刻在龜甲獸骨上的古老文字——也就是甲骨文。這活兒要是純靠人眼不僅效率低還容易因為視覺疲勞看漏看錯。作為一個常年混跡在計算機視覺和深度學(xué)習(xí)圈子的從業(yè)者我第一反應(yīng)就是能不能用目標檢測模型來“代勞”這個想法催生了今天要聊的項目構(gòu)建一個針對文本考古場景的甲骨文字符圖像檢測識別系統(tǒng)。簡單說就是給電腦“喂”大量帶有甲骨文的圖片訓(xùn)練它學(xué)會自動定位圖片中的每一個甲骨文字符并用框標出來。這不僅僅是簡單的“找東西”因為甲骨文字形復(fù)雜、筆畫粘連、背景干擾多比如龜甲裂紋、污漬對模型的精度和魯棒性要求很高。我選擇了YOLOv7作為這次探索的基石。原因很簡單YOLO系列在速度和精度上的平衡一直做得不錯而v7版本在架構(gòu)和訓(xùn)練策略上又有不少優(yōu)化。但YOLOv7本身也有多個不同復(fù)雜度的變體比如輕量級的YOLOv7-tiny、均衡型的YOLOv7以及高性能的YOLOv7x。用同一個甲骨文數(shù)據(jù)集分別訓(xùn)練這三個模型會有什么樣的表現(xiàn)tiny版能不能在資源受限的設(shè)備比如考古現(xiàn)場的便攜終端上跑起來x版的高精度又需要付出多大的計算代價這些都是我想通過這個項目弄明白的。所以這個項目的核心就是一場“控制變量”式的對比實驗。我們將使用同一套數(shù)據(jù)預(yù)處理流程、相同的訓(xùn)練策略當然學(xué)習(xí)率等超參數(shù)會針對不同模型微調(diào)來訓(xùn)練YOLOv7-tiny, YOLOv7, YOLOv7x三個模型并在一個統(tǒng)一的測試集上評估它們的表現(xiàn)。最終目標不僅僅是得到一個可用的檢測器更是要理清在不同應(yīng)用場景如實時現(xiàn)場篩查 vs. 高精度后期分析下模型選型的依據(jù)和權(quán)衡點。2. 核心需求解析與挑戰(zhàn)應(yīng)對2.1 甲骨文檢測的特殊性甲骨文圖像檢測和我們常見的自然場景目標檢測比如檢測行人、車輛有很大不同這直接決定了我們模型設(shè)計和數(shù)據(jù)處理的方向。首先目標尺度變化極大。一張拓片圖上可能同時存在占據(jù)數(shù)十個像素的“大字”和只有寥寥幾個像素的“小字”。模型必須同時具備捕捉大目標上下文信息和小目標細節(jié)特征的能力。其次背景復(fù)雜且干擾性強。龜甲獸骨本身有紋理、有裂紋歷經(jīng)千年還有各種腐蝕和污漬這些都很容易被模型誤認為是文字的筆畫。再者字形結(jié)構(gòu)復(fù)雜且不規(guī)范。甲骨文是象形文字同一個字可能有多種變體筆畫粘連、斷裂的情況非常普遍這對檢測框的回歸和分類都是挑戰(zhàn)。最后數(shù)據(jù)稀缺且標注成本高。公開的、高質(zhì)量的、帶有精確框標注的甲骨文數(shù)據(jù)集非常少我們往往需要從零開始收集和標注這要求我們的模型和數(shù)據(jù)增強策略必須非常高效能在有限的數(shù)據(jù)上學(xué)到強健的特征。2.2 模型選型為何是YOLOv7及其變體面對上述挑戰(zhàn)我們需要一個在精度、速度和泛化能力上都有不錯基礎(chǔ)的檢測框架。YOLOv7You Only Look Once version 7在2022年提出它并非官方Y(jié)OLO系列但其改進在當時引起了廣泛關(guān)注。它主要的吸引力在于架構(gòu)優(yōu)化引入了類似ELAN的高效層聚合網(wǎng)絡(luò)加強了特征融合能力在頭部使用了“解耦頭”將分類和回歸任務(wù)分開有助于提升精度。訓(xùn)練策略提出了“可訓(xùn)練的Bag-of-Freebies”包括計劃重參數(shù)化卷積、梯度流優(yōu)化等讓模型在不增加推理成本的情況下獲得性能提升。模型縮放提供了從tiny到x的一系列模型讓我們可以方便地在速度和精度之間做權(quán)衡。具體到三個變體YOLOv7-tiny深度和寬度都最小參數(shù)量少計算量低推理速度極快。目標是驗證在極端資源受限條件下如移動端、嵌入式設(shè)備的可行性。YOLOv7默認的基準模型在速度和精度間取得平衡。我們的主要參照系看中等復(fù)雜度模型能否滿足大部分精度要求。YOLOv7x“X”意味著extra擁有更深的網(wǎng)絡(luò)和更多的通道數(shù)特征提取和融合能力最強預(yù)期精度最高但模型體積和計算需求也最大。用于探索當前任務(wù)下的精度上限。通過對比這三者我們就能繪制出針對甲骨文檢測任務(wù)的“模型性能-計算資源”曲線為實際部署提供直接依據(jù)。2.3 系統(tǒng)核心需求拆解基于項目目標我們需要構(gòu)建的系統(tǒng)應(yīng)滿足以下核心需求高精度檢測在復(fù)雜的甲骨文圖像上模型需要達到高的平均精度mAP尤其是對于小字符的召回率Recall要足夠高不能漏檢。多尺度適應(yīng)性模型必須能有效檢測不同尺度的字符從占據(jù)圖像大部分區(qū)域的大字到邊緣處的小字。抗干擾能力強對龜甲裂紋、污漬、背景噪聲等有較好的魯棒性降低誤檢率??勺兊牟渴痨`活性系統(tǒng)設(shè)計應(yīng)支持導(dǎo)出不同格式的模型如PyTorch的.pt ONNX甚至TensorRT引擎以適應(yīng)從服務(wù)器到邊緣設(shè)備的不同部署環(huán)境。完整的評估體系不僅要看mAP還要分析參數(shù)量Params、計算量GFLOPs、推理速度FPS以及針對小目標的具體指標形成全面的模型評估報告。3. 數(shù)據(jù)準備與預(yù)處理策略3.1 數(shù)據(jù)收集與標注數(shù)據(jù)是模型的“糧食”。對于甲骨文這樣的專業(yè)領(lǐng)域公開數(shù)據(jù)集極少。我們的數(shù)據(jù)主要來源于公開的甲骨文拓片圖庫如國學(xué)大師、古籍文獻網(wǎng)站??脊艌蟾嬷械母咔逭掌?。自行拍攝或掃描的甲骨實物或拓片需注意版權(quán)。拿到圖像后最繁重的工作是標注。我們使用LabelImg、CVAT或更專業(yè)的Roboflow等工具進行手工標注。標注時需注意框的緊密度 bounding box應(yīng)盡可能緊密地包圍整個字符包括所有筆畫但不要包含過多無關(guān)背景。類別統(tǒng)一目前我們只做“字符檢測”即識別出有字符的區(qū)域而不區(qū)分是哪個字。因此所有目標只有一個類別如oracle_char。未來若要擴展為識別具體文字則需要更細粒度的分類。困難樣本處理對于部分殘缺、模糊或與背景高度融合的字符仍需盡力標注這是提升模型魯棒性的關(guān)鍵。最終我們整理了一個包含約5000張圖像的數(shù)據(jù)集按8:1:1的比例隨機劃分為訓(xùn)練集、驗證集和測試集。確保測試集完全獨立用于最終公平評估。3.2 數(shù)據(jù)預(yù)處理與增強為了應(yīng)對甲骨文檢測的挑戰(zhàn)我們設(shè)計了一套針對性的數(shù)據(jù)預(yù)處理和增強流程標準化處理將所有圖像統(tǒng)一縮放到固定的輸入尺寸如640x640。這是YOLO模型的常見輸入尺寸。同時進行像素值歸一化除以255。針對性的數(shù)據(jù)增強幾何變換隨機水平翻轉(zhuǎn)、小幅度的旋轉(zhuǎn)±10度以內(nèi)和縮放0.5~1.5倍模擬拍攝角度和距離的變化。色彩擾動調(diào)整亮度、對比度和飽和度模擬不同光照條件和年代久遠造成的色彩變化。特別是增加一些灰度化和褐色調(diào)的擾動以貼近拓片效果。模擬噪聲與退化添加高斯噪聲、椒鹽噪聲模擬圖像污損輕微的高斯模糊模擬對焦不準或材質(zhì)本身的不清晰。MixUp與Mosaic采用YOLO系列常用的Mosaic增強將四張圖像拼成一張進行訓(xùn)練極大地豐富了背景上下文和小目標樣本。MixUp將兩張圖像線性混合能起到正則化作用提升模型泛化性。重點關(guān)照小目標在Mosaic增強中有意識地將包含小目標的圖像放在更中心的位置避免其被過度縮小。注意增強的強度需要謹慎控制。過度的旋轉(zhuǎn)或形變可能會破壞甲骨文字形的結(jié)構(gòu)信息反而降低模型性能。建議在驗證集上監(jiān)控增強策略的效果。4. 模型構(gòu)建與訓(xùn)練配置4.1 YOLOv7模型結(jié)構(gòu)淺析與適配雖然我們直接使用官方代碼庫但了解其關(guān)鍵組件有助于調(diào)試和優(yōu)化。YOLOv7的主干網(wǎng)絡(luò)Backbone采用了擴展的ELAN結(jié)構(gòu)通過控制最短和最長的梯度路徑讓網(wǎng)絡(luò)能夠?qū)W習(xí)到更豐富的特征。頸部Neck是PANet結(jié)構(gòu)進行有效的特征金字塔融合。對于我們的甲骨文任務(wù)我主要做了以下適配考量錨框Anchor重聚類YOLO系列通常使用K-means聚類訓(xùn)練集標注框的大小得到先驗的錨框尺寸。甲骨文字符的寬高比和尺度分布與COCO等通用數(shù)據(jù)集差異巨大。因此我們必須用自己的訓(xùn)練集重新聚類生成錨框。使用腳本對訓(xùn)練集所有標注框進行聚類如9組錨框并將結(jié)果更新到模型配置文件中。這一步對提升檢測精度尤其是框的回歸精度至關(guān)重要。類別數(shù)修改在配置文件中將ncnumber of classes參數(shù)修改為1因為我們只有“甲骨文字符”這一個類別。輸入分辨率保持640x640這是一個兼顧精度和速度的常用尺寸。如果資源允許且小目標特別多可以嘗試增大到960x960但這會顯著增加計算量。4.2 訓(xùn)練環(huán)境與超參數(shù)設(shè)置我是在一臺配備單張RTX 4090顯卡的工作站上進行訓(xùn)練的。軟件環(huán)境為Python 3.8, PyTorch 1.12。訓(xùn)練超參數(shù)是模型性能的關(guān)鍵。以下是我經(jīng)過多次實驗后總結(jié)的配置基線不同模型需微調(diào)# 基礎(chǔ)超參數(shù)示例 (train.py 的參數(shù)) epochs: 300 # 訓(xùn)練輪次足夠讓模型收斂 batch_size: 16 # 根據(jù)GPU內(nèi)存調(diào)整tiny可更大x可能需更小 img_size: [640, 640] # 輸入圖像尺寸 optimizer: Adam # 使用Adam優(yōu)化器收斂較快 lr0: 0.01 # 初始學(xué)習(xí)率對于tiny可以稍大如0.02對于x可以稍小如0.008 lrf: 0.01 # 最終學(xué)習(xí)率 lr0 * lrf (余弦退火) warmup_epochs: 3.0 # 學(xué)習(xí)率熱身輪數(shù)防止初期震蕩 weight_decay: 0.0005 # 權(quán)重衰減防止過擬合關(guān)鍵調(diào)整經(jīng)驗學(xué)習(xí)率YOLOv7-x模型更深需要更小的學(xué)習(xí)率和更長的熱身周期來穩(wěn)定訓(xùn)練初期。YOLOv7-tiny則相對“耐操”學(xué)習(xí)率可以設(shè)大一點加速收斂。批量大小在GPU內(nèi)存允許范圍內(nèi)盡可能使用大的批量大小batch_size這能使梯度估計更穩(wěn)定。如果遇到內(nèi)存不足可以啟用梯度累積來模擬大批量效果。數(shù)據(jù)增強開關(guān)YOLOv7代碼庫中的hyp.scratch.yaml文件包含了各種數(shù)據(jù)增強的概率參數(shù)。對于小數(shù)據(jù)集可以適當調(diào)高Mosaic、MixUp的概率如從1.0調(diào)到0.8如果發(fā)現(xiàn)模型過擬合訓(xùn)練集可以增加CutOut、隨機擦除等增強。4.3 訓(xùn)練過程與監(jiān)控啟動訓(xùn)練后監(jiān)控至關(guān)重要。除了觀察損失box_loss, obj_loss, cls_loss的下降曲線更要關(guān)注驗證集上的指標變化。驗證集評估每訓(xùn)練一個epoch或幾個epoch就在驗證集上計算一次精度指標包括mAP0.5, mAP0.5:0.95等。這是判斷模型是否學(xué)習(xí)有效的金標準。TensorBoard可視化YOLOv7訓(xùn)練時會生成TensorBoard日志。我習(xí)慣同時看以下幾個面板train/loss總損失下降趨勢應(yīng)平滑下降至收斂。metrics/mAP_0.5驗證集在IoU0.5下的mAP最直觀的精度指標。labels查看訓(xùn)練集標注框的分布確認錨框聚類是否合理。model可視化模型計算圖確認結(jié)構(gòu)加載正確。早停策略如果驗證集mAP在連續(xù)20-30個epoch內(nèi)沒有提升就可以考慮提前停止訓(xùn)練避免過擬合。5. 實驗結(jié)果對比與分析經(jīng)過約一周的斷續(xù)訓(xùn)練三個模型都完成了300個epoch的訓(xùn)練。以下是它們在獨立測試集上的性能對比摘要模型參數(shù)量 (M)GFLOPsmAP0.5mAP0.5:0.95推理速度 (FPS) on RTX 4090模型大小 (MB)YOLOv7-tiny6.0113.20.8420.512~21012.1YOLOv736.5103.20.9010.623~8574.5YOLOv7x70.8188.10.9180.641~52143.2注FPS基于640x640輸入、batch size1測得。mAP0.5:0.95是在IoU閾值從0.5到0.95步長0.05下的平均mAP是更嚴格的指標。5.1 精度與速度的權(quán)衡解讀從表格中可以清晰地看到一條“性能-資源”曲線YOLOv7-tiny以極低的參數(shù)量和計算量換取了超過84%的mAP0.5和210 FPS的驚人速度。這意味著它完全可以在Jetson Nano、樹莓派甚至高性能手機等邊緣設(shè)備上實時運行經(jīng)過適當優(yōu)化后。對于需要快速篩查、初步定位的移動考古場景它是一個非常有競爭力的選擇。但其mAP0.5:0.95相對較低說明在更嚴格的IoU標準下要求框更準性能下降明顯對重疊、密集字符的區(qū)分能力較弱。YOLOv7在精度和速度上取得了很好的平衡。mAP0.5達到90%比tiny版有顯著提升同時85 FPS的速度在服務(wù)器或高性能PC上依然能滿足實時性要求。它是大多數(shù)桌面端分析軟件或在線服務(wù)的理想選擇既能保證較高的檢出率和定位精度又不會帶來過大的計算負擔(dān)。YOLOv7x代表了本任務(wù)下的精度上限mAP0.5接近92%。它擁有最強的特征提取能力對于背景復(fù)雜、字符模糊、小目標密集的“困難樣本”處理得最好。但代價是模型體積龐大推理速度最慢且需要更大的GPU內(nèi)存進行訓(xùn)練。這適合用于離線的高精度分析、數(shù)據(jù)標注輔助或者作為集成模型中的“專家”模型。5.2 可視化結(jié)果與案例分析為了更直觀地感受差異我選取了幾張具有代表性的測試圖片用三個模型分別進行推理并可視化結(jié)果。清晰大字符場景三個模型表現(xiàn)接近都能近乎完美地檢測出所有字符框的位置也很準確。這說明對于“簡單任務(wù)”即使是輕量級模型也足夠勝任。小目標密集場景在一張包含大量微小刻痕的圖片上YOLOv7-tiny出現(xiàn)了明顯的漏檢大約有30%的小字符沒有被發(fā)現(xiàn)。YOLOv7漏檢率降至10%左右而YOLOv7x的漏檢率最低僅在5%以下。這印證了模型容量對于捕捉微小特征的重要性。高干擾背景場景一張背景布滿深色裂紋的拓片。YOLOv7-tiny產(chǎn)生了數(shù)個將裂紋誤檢為字符的“假陽性”框。YOLOv7也有1-2處誤檢。YOLOv7x則成功抑制了大部分誤檢顯示出更強的抗干擾和特征區(qū)分能力。字符粘連/斷裂場景對于筆畫粘連的兩個字符YOLOv7-tiny傾向于將其檢測為一個大的框。YOLOv7和YOLOv7x則能更大概率地將其分開為兩個框但YOLOv7x的框邊界更為精確。實操心得不要只看平均指標。一定要對測試集進行錯誤分析。統(tǒng)計哪些圖片、哪些類型的字符容易被漏檢或誤檢這能指導(dǎo)你下一步是調(diào)整數(shù)據(jù)增強如增加小目標樣本、修改錨框還是考慮更復(fù)雜的模型或后處理。6. 系統(tǒng)集成與部署優(yōu)化模型訓(xùn)練好只是第一步將其變成一個可用的系統(tǒng)還需要集成和優(yōu)化。6.1 構(gòu)建端到端檢測流水線我使用Python的FastAPI框架搭建了一個簡單的后端服務(wù)核心流程如下圖像輸入接收上傳的圖片或圖片URL。預(yù)處理將圖像resize到模型輸入尺寸并做歸一化。推理加載訓(xùn)練好的PyTorch模型.pt權(quán)重進行前向傳播。后處理應(yīng)用非極大值抑制NMS過濾重疊框?qū)⒖虻淖鴺藦?40x640空間映射回原始圖像尺寸。結(jié)果輸出返回一個JSON包含每個檢測框的坐標、置信度。同時生成一張帶有檢測框的可視化圖片供下載。# 簡化的核心推理代碼片段 import cv2 import torch from models.experimental import attempt_load from utils.general import non_max_suppression, scale_coords def detect(image_path, model_path): # 加載模型 device torch.device(cuda:0) model attempt_load(model_path, devicedevice) model.eval() # 預(yù)處理 img0 cv2.imread(image_path) img preprocess(img0) # 自定義的resize和歸一化函數(shù) # 推理 with torch.no_grad(): pred model(img)[0] # NMS后處理 pred non_max_suppression(pred, conf_thres0.25, iou_thres0.45) # 坐標還原與結(jié)果整理 detections [] for det in pred[0]: if det is not None: xyxy scale_coords(img.shape[2:], det[:, :4], img0.shape).round() for *box, conf, cls in xyxy: detections.append({ bbox: box.tolist(), confidence: conf.item(), class: int(cls) }) return detections6.2 模型部署優(yōu)化實踐為了提升系統(tǒng)性能尤其是滿足實時性要求模型部署優(yōu)化必不可少。模型格式轉(zhuǎn)換ONNX將PyTorch模型導(dǎo)出為ONNX格式可以實現(xiàn)跨框架如OpenCV DNN, TensorFlow部署。使用torch.onnx.export時注意設(shè)置動態(tài)輸入尺寸dynamic_axes以支持不同大小的圖片輸入。TensorRT這是NVIDIA GPU上的終極優(yōu)化方案。將ONNX模型通過TensorRT的trtexec工具或Python API轉(zhuǎn)換為TensorRT引擎.engine文件。這個過程會進行層融合、精度校準FP16/INT8、內(nèi)核自動調(diào)優(yōu)能帶來數(shù)倍的推理加速。實測YOLOv7-tiny的TensorRT FP16引擎在4090上FPS可超過300。推理加速技巧半精度推理在支持Tensor Core的GPU上使用FP16精度進行推理速度可提升近一倍精度損失微乎其微。批處理當需要處理多張圖片時盡量使用批處理batch inference。將多張圖片堆疊成一個批次輸入模型能極大提升GPU利用率。異步處理在Web服務(wù)中使用異步框架如FastAPI的async/await或消息隊列避免推理阻塞請求線程。針對邊緣設(shè)備的優(yōu)化對于YOLOv7-tiny可以考慮使用模型量化如PyTorch的INT8量化進一步壓縮模型大小和加速。在ARM CPU上可以嘗試OpenVINO針對Intel硬件或NCNN/MNN通用移動端推理框架進行部署。精簡預(yù)處理和后處理邏輯避免不必要的內(nèi)存拷貝和計算。7. 常見問題與排查技巧實錄在項目開發(fā)和實驗過程中我踩過不少坑這里記錄一些典型問題和解決方法。7.1 訓(xùn)練階段問題問題1損失Loss不下降或下降緩慢。檢查數(shù)據(jù)首先確認數(shù)據(jù)標注是否正確。用可視化工具打開幾張訓(xùn)練集圖片看看標注框是否準確。錯誤標注是導(dǎo)致模型無法學(xué)習(xí)的首要原因。檢查學(xué)習(xí)率學(xué)習(xí)率可能設(shè)置得太小。嘗試逐步增大lr0例如從0.01到0.1觀察損失曲線起始階段是否有明顯下降。同時確保熱身warmup階段正常。檢查數(shù)據(jù)增強過于激進的數(shù)據(jù)增強如大角度旋轉(zhuǎn)、嚴重形變可能會破壞甲骨文字形讓模型學(xué)不到有效特征。嘗試暫時關(guān)閉或減弱數(shù)據(jù)增強看損失是否開始下降。檢查錨框如果錨框尺寸與你的目標尺寸嚴重不匹配模型回歸起來會非常困難。務(wù)必使用自己的數(shù)據(jù)集重新聚類生成錨框。問題2驗證集mAP波動很大或遠低于訓(xùn)練集精度。過擬合跡象這是典型的過擬合。解決方法是1) 增加數(shù)據(jù)增強的多樣性2) 增強正則化如增大weight_decay或在模型結(jié)構(gòu)中添加Dropout層需修改模型定義3) 使用早停。驗證集與訓(xùn)練集分布不一致確保驗證集和訓(xùn)練集來自同一分布沒有特殊的、訓(xùn)練集未見過的情況。檢查劃分過程是否隨機。評估代碼問題確認驗證時使用的NMS參數(shù)iou_thres,conf_thres與訓(xùn)練后推理時保持一致。7.2 推理與部署問題問題1模型推理速度遠低于預(yù)期。檢查輸入尺寸確認輸入圖片是否被正確resize到了模型預(yù)設(shè)尺寸如640。過大的輸入會顯著增加計算量。檢查GPU利用率使用nvidia-smi命令查看GPU使用率。如果利用率很低可能是數(shù)據(jù)加載或預(yù)處理部分成為了瓶頸CPU bound??紤]使用Dataloader的多進程加載或?qū)㈩A(yù)處理移到GPU上進行。檢查模型狀態(tài)確保推理前調(diào)用了model.eval()并且使用了torch.no_grad()上下文管理器。否則PyTorch會計算梯度嚴重影響速度。嘗試TensorRT如果是在NVIDIA GPU上部署轉(zhuǎn)換為TensorRT引擎幾乎總能帶來顯著的性能提升。問題2檢測結(jié)果中出現(xiàn)大量重復(fù)框或誤檢框。調(diào)整NMS參數(shù)非極大值抑制是過濾重疊框的關(guān)鍵。iou_thresIOU閾值設(shè)置得太高會導(dǎo)致本應(yīng)被抑制的重復(fù)框留下設(shè)置得太低可能會把正確但略有重疊的兩個框誤刪。conf_thres置信度閾值設(shè)置得太低會讓很多低質(zhì)量的預(yù)測框進入NMS階段。需要根據(jù)驗證集結(jié)果仔細調(diào)整這兩個參數(shù)。后處理邏輯錯誤檢查坐標還原的代碼scale_coords是否正確。錯誤的坐標映射會導(dǎo)致框的位置錯亂看起來像誤檢。模型置信度校準有時模型輸出的置信度分數(shù)整體偏高或偏低。可以在測試集上統(tǒng)計預(yù)測框的置信度分布并據(jù)此調(diào)整conf_thres。7.3 領(lǐng)域特定問題問題模型對某種特定類型的甲骨文如某期別、某種書寫風(fēng)格檢測效果差。數(shù)據(jù)不平衡檢查你的訓(xùn)練集中是否缺乏該類樣本。如果是需要有針對性地收集和標注更多此類數(shù)據(jù)或者使用過采樣技術(shù)。特征差異大不同時期、不同載體的甲骨文風(fēng)格差異可能很大。考慮將它們視為不同的子類進行檢測或者在模型訓(xùn)練時使用更強大的數(shù)據(jù)增強來模擬這種風(fēng)格變化。集成模型如果單一模型難以覆蓋所有情況可以訓(xùn)練多個專門化的模型例如一個針對清晰拓片一個針對模糊照片在推理時根據(jù)輸入圖像特征選擇或集成多個模型的預(yù)測結(jié)果。這個項目從萌生想法到三個模型對比完成花了將近一個月的時間。最大的體會是在垂直領(lǐng)域應(yīng)用AI對問題的深入理解往往比模型本身的選擇更重要。搞清楚甲骨文檢測的真正難點在哪里才能有針對性地準備數(shù)據(jù)、設(shè)計增強策略、調(diào)整模型。YOLOv7系列提供了優(yōu)秀的工具箱但最終讓工具發(fā)揮效力的還是使用工具的人。對于想要復(fù)現(xiàn)或類似領(lǐng)域的朋友我的建議是先從一個小而干凈的數(shù)據(jù)集和YOLOv7-tiny這樣的輕量模型開始快速驗證流程然后再逐步增加數(shù)據(jù)復(fù)雜度和模型容量這樣迭代的效率最高也最容易定位問題。