当前位置: 首页 > news >正文

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)

👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路


  • medical - pills.yaml
    • 通常用于配置与医学药丸检测任务相关的参数和信息
  • Objects365.yaml
    • 用于配置与 Objects365 数据集相关信息的文件。Objects365 数据集包含 365 个不同的物体类别,该文件会定义这些类别的名称和对应的索引。
  • open-images-v7.yaml
    • 是针对 Open Images V7 数据集的配置文件,在相关的计算机视觉任务(如目标检测、图像分类等)中具有重要作用。

文章大纲

    • Objects365.yaml
    • open-images-v7.yaml

在 YOLO 框架中, medical-pills.yaml、Objects365.yaml、open-images-v7.yaml 均为 数据集配置文件,用于告诉模型如何读取和处理特定数据集,核心作用如下:

    1. 数据集路径配置
    1. 类别定义: 类别名称与编号映射
    1. 数据划分与格式适配
      1. 训练 / 验证 / 测试集划分:
      1. 特殊格式处理(部分文件):
      • 部分文件可能包含数据转换逻辑(如 open-images-v7.yaml 涉及通过 fiftyone 库将原始数据集转换为 YOLO 可识别的格式)。
  • 总结

    • 这些文件是 YOLO 模型与具体数据集之间的 “桥梁”,核心功能是 告知模型 “数据在哪里” 和 “目标有哪些类别”,确保模型能正确加载数据、训练并输出符合预期的检测结果
    • 用户训练自定义数据集时,需按此格式编写自己的 dataset.yaml,定义路径和类别即可快速适配 YOLO 框架。
  • Open Images V7

    • 由 Google 发布的大规模计算机视觉数据集,专为目标检测、图像分类、语义分割等任务设计
    • 图像总量: 约 900 万张,覆盖自然场景、日常生活、工业环境等多样化场景
      • 190 万张密集标注图像:包含边界框、实例分割、视觉关系、本地化叙述(语音 + 文本 + 鼠标轨迹)和点标签。
      • 710 万张图像级标注:仅包含图像级分类标签(如 “动物”“交通工具”)。
    • 标注类型:
      • 边界框:1600 万个,覆盖 600 个物体类别(如汽车、行人、家具),由专业标注员手工绘制,平均每张图像 8.3 个物体。
      • 实例分割:280 万个,覆盖 350 个类别(如猫、桌子、树),提供像素级轮廓。
      • 视觉关系:330 万条,描述物体间关系(如 “人骑自行车”“书在桌子上”)。
      • 本地化叙述:67.5 万条,结合语音、文本和鼠标轨迹,描述图像中的复杂场景(如 “左侧有一个红色背包,右侧是打开的笔记本电脑”)。
      • 点标签(V7 新增):6640 万个,覆盖 5827 个类别(如 “草”“花岗岩”“砾石”),通过稀疏像素点标注实现零样本 / 少样本语义分割
      • 图像级标签:6140 万个,覆盖 20,638 个类别(如 “晴天”“室内场景”)。
    • 核心优势
      • 多任务统一标注: 同一数据集支持图像分类、目标检测、分割、视觉关系理解等任务,便于多模态模型训练
      • 长尾类别覆盖: 包含大量罕见物体(如 “犰狳”“旱獭”)和细粒度类别(如 “红熊猫” vs “大熊猫”),提升模型泛化能力
      • 标注质量高: 边界框和分割掩码由专业人员标注,点标签通过 “模型建议 + 人工验证” 方式生成,准确率达 90% 以上。
      • 规模庞大: 190 万密集标注图像是当前最大的目标检测 / 分割数据集之一,适合训练高性能模型。
  • medical-pills.yaml、Objects365.yaml、open-images-v7.yaml数据集配置文件作用简要流程图
    在这里插入图片描述

Objects365.yaml

  • # 数据集根目录,相对于当前配置文件的路径
    path: ../datasets/Objects365# 训练集图像所在的相对路径,相对于数据集根目录
    train: images/train# 验证集图像所在的相对路径,相对于数据集根目录
    val: images/val# 测试集图像所在的相对路径,这里为空,表示未指定
    test:# 数据集中所有类别的名称,键为类别编号,值为类别名称
    names: # 定义数据集中各类别的名称映射0: Person # 编号0代表“人”这个类别1: Sneakers # 编号1代表“运动鞋”2: Chair # 编号2代表“椅子”3: Other Shoes # 编号3代表“其他鞋子”4: Hat # 编号4代表“帽子”5: Car # 编号5代表“汽车”6: Lamp # 编号6代表“灯”7: Glasses # 编号7代表“眼镜”8: Bottle # 编号8代表“瓶子”9: Desk # 编号9代表“书桌”10: Cup # 编号10代表“杯子”11: Street Lights # 编号11代表“路灯”12: Cabinet/shelf # 编号12代表“橱柜/架子”13: Handbag/Satchel # 编号13代表“手提包/挎包”14: Bracelet # 编号14代表“手镯”15: Plate # 编号15代表“盘子”16: Picture/Frame # 编号16代表“图片/相框”17: Helmet # 编号17代表“头盔”18: Book # 编号18代表“书”19: Gloves # 编号19代表“手套”20: Storage box # 编号20代表“储物箱”21: Boat # 编号21代表“船”22: Leather Shoes # 编号22代表“皮鞋”23: Flower # 编号23代表“花”24: Bench # 编号24代表“长凳”25: Potted Plant # 编号25代表“盆栽植物”26: Bowl/Basin # 编号26代表“碗/盆”27: Flag # 编号27代表“旗帜”28: Pillow # 编号28代表“枕头”29: Boots # 编号29代表“靴子”30: Vase # 编号30代表“花瓶”31: Microphone # 编号31代表“麦克风”32: Necklace # 编号32代表“项链”33: Ring # 编号33代表“戒指”34: SUV # 编号34代表“运动型多用途汽车(SUV)”35: Wine Glass # 编号35代表“葡萄酒杯”36: Belt # 编号36代表“皮带”37: Monitor/TV # 编号37代表“显示器/电视”38: Backpack # 编号38代表“背包”39: Umbrella # 编号39代表“雨伞”40: Traffic Light # 编号40代表“交通信号灯”41: Speaker # 编号41代表“扬声器”42: Watch # 编号42代表“手表”43: Tie # 编号43代表“领带”44: Trash bin Can # 编号44代表“垃圾桶”45: Slippers # 编号45代表“拖鞋”46: Bicycle # 编号46代表“自行车”47: Stool # 编号47代表“凳子”48: Barrel/bucket # 编号48代表“桶”49: Van # 编号49代表“厢式货车”50: Couch # 编号50代表“沙发”51: Sandals # 编号51代表“凉鞋”52: Basket # 编号52代表“篮子”53: Drum # 编号53代表“鼓”54: Pen/Pencil # 编号54代表“钢笔/铅笔”55: Bus # 编号55代表“公交车”56: Wild Bird # 编号56代表“野生鸟类”57: High Heels # 编号57代表“高跟鞋”58: Motorcycle # 编号58代表“摩托车”59: Guitar # 编号59代表“吉他”60: Carpet # 编号60代表“地毯”61: Cell Phone # 编号61代表“手机”62: Bread # 编号62代表“面包”63: Camera # 编号63代表“相机”64: Canned # 编号64代表“罐头”65: Truck # 编号65代表“卡车”66: Traffic cone # 编号66代表“交通锥”67: Cymbal # 编号67代表“钹”68: Lifesaver # 编号68代表“救生圈”69: Towel # 编号69代表“毛巾”70: Stuffed Toy # 编号70代表“毛绒玩具”71: Candle # 编号71代表“蜡烛”72: Sailboat # 编号72代表“帆船”73: Laptop # 编号73代表“笔记本电脑”74: Awning # 编号74代表“遮阳篷”75: Bed # 编号75代表“床”76: Faucet # 编号76代表“水龙头”77: Tent # 编号77代表“帐篷”78: Horse # 编号78代表“马”79: Mirror # 编号79代表“镜子”80: Power outlet # 编号80代表“电源插座”81: Sink # 编号81代表“水槽”82: Apple # 编号82代表“苹果”83: Air Conditioner # 编号83代表“空调”84: Knife # 编号84代表“刀”85: Hockey Stick # 编号85代表“曲棍球棒”86: Paddle # 编号86代表“桨”87: Pickup Truck # 编号87代表“皮卡”88: Fork # 编号88代表“叉子”89: Traffic Sign # 编号89代表“交通标志”90: Balloon # 编号90代表“气球”91: Tripod # 编号91代表“三脚架”92: Dog # 编号92代表“狗”93: Spoon # 编号93代表“勺子”94: Clock # 编号94代表“时钟”95: Pot # 编号95代表“锅”96: Cow # 编号96代表“奶牛”97: Cake # 编号97代表“蛋糕”98: Dining Table # 编号98代表“餐桌”99: Sheep # 编号99代表“羊”100: Hanger # 编号100代表“衣架”101: Blackboard/Whiteboard # 编号101代表“黑板/白板”102: Napkin # 编号102代表“餐巾”103: Other Fish # 编号103代表“其他鱼类”104: Orange/Tangerine # 编号104代表“橙子/橘子”105: Toiletry # 编号105代表“洗漱用品”106: Keyboard # 编号106代表“键盘”107: Tomato # 编号107代表“番茄”108: Lantern # 编号108代表“灯笼”109: Machinery Vehicle # 编号109代表“机动车辆”110: Fan # 编号110代表“风扇”111: Green Vegetables # 编号111代表“绿色蔬菜”112: Banana # 编号112代表“香蕉”113: Baseball Glove # 编号113代表“棒球手套”114: Airplane # 编号114代表“飞机”115: Mouse # 编号115代表“鼠标”116: Train # 编号116代表“火车”117: Pumpkin # 编号117代表“南瓜”118: Soccer # 编号118代表“足球”119: Skiboard # 编号119代表“滑雪板”120: Luggage # 编号120代表“行李”121: Nightstand # 编号121代表“床头柜”122: Tea pot # 编号122代表“茶壶”123: Telephone # 编号123代表“电话”124: Trolley # 编号124代表“手推车”125: Head Phone # 编号125代表“耳机”126: Sports Car # 编号126代表“跑车”127: Stop Sign # 编号127代表“停车标志”128: Dessert # 编号128代表“甜点”129: Scooter # 编号129代表“滑板车”130: Stroller # 编号130代表“婴儿车”131: Crane # 编号131代表“起重机”132: Remote # 编号132代表“遥控器”133: Refrigerator # 编号133代表“冰箱”134: Oven # 编号134代表“烤箱”135: Lemon # 编号135代表“柠檬”136: Duck # 编号136代表“鸭子”137: Baseball Bat # 编号137代表“棒球棒”138: Surveillance Camera # 编号138代表“监控摄像头”139: Cat # 编号139代表“猫”140: Jug # 编号140代表“罐子”141: Broccoli # 编号141代表“西兰花”142: Piano # 编号142代表“钢琴”143: Pizza # 编号143代表“披萨”144: Elephant # 编号144代表“大象”145: Skateboard # 编号145代表“滑板”146: Surfboard # 编号146代表“冲浪板”147: Gun # 编号147代表“枪”148: Skating and Skiing shoes # 编号148代表“滑冰和滑雪鞋”149: Gas stove # 编号149代表“煤气灶”150: Donut # 编号150代表“甜甜圈”151: Bow Tie # 编号151代表“领结”152: Carrot # 编号152代表“胡萝卜”153: Toilet # 编号153代表“马桶”154: Kite # 编号154代表“风筝”155: Strawberry # 编号155代表“草莓”156: Other Balls # 编号156代表“其他球类”157: Shovel # 编号157代表“铲子”158: Pepper # 编号158代表“胡椒”159: Computer Box # 编号159代表“电脑机箱”160: Toilet Paper # 编号160代表“卫生纸”161: Cleaning Products # 编号161代表“清洁用品”162: Chopsticks # 编号162代表“筷子”163: Microwave # 编号163代表“微波炉”164: Pigeon # 编号164代表“鸽子”165: Baseball # 编号165代表“棒球”166: Cutting/chopping Board # 编号166代表“切菜板”167: Coffee Table # 编号167代表“咖啡桌”168: Side Table # 编号168代表“边桌”169: Scissors # 编号169代表“剪刀”170: Marker # 编号170代表“记号笔”171: Pie # 编号171代表“派”172: Ladder # 编号172代表“梯子”173: Snowboard # 编号173代表“滑雪板”174: Cookies # 编号174代表“饼干”175: Radiator # 编号175代表“散热器”176: Fire Hydrant # 编号176代表“消防栓”177: Baseball <-- 此处疑似数据重复或有误,与编号165重复,若文件无误,编号177代表“棒球”178: Zebra # 编号178代表“斑马”179: Grape # 编号179代表“葡萄”180: Giraffe # 编号180代表“长颈鹿”181: Potato # 编号181代表“土豆”182: Sausage # 编号182代表“香肠”183: Tricycle # 编号183代表“三轮车”184: Violin # 编号184代表“小提琴”185: Egg # 编号185代表“鸡蛋”186: Fire Extinguisher # 编号186代表“灭火器”187: Candy # 编号187代表“糖果”188: Fire Truck # 编号188代表“消防车”189: Billiards # 编号189代表“台球”190: Converter # 编号190代表“转换器”191: Bathtub # 编号191代表“浴缸”192: Wheelchair # 编号192代表“轮椅”193: Golf Club # 编号193代表“高尔夫球杆”194: Briefcase # 编号194代表“公文包”195: Cucumber # 编号195代表“黄瓜”196: Cigar/Cigarette # 编号196代表“雪茄/香烟”197: Paint Brush # 编号197代表“画笔”198: Pear # 编号198代表“梨”199: Heavy Truck # 编号199对应的类别是重型卡车,在相关数据集中,当检测到或涉及到重型卡车相关的实例时,会用199这个编号来标记。200: Hamburger # 编号200代表汉堡包,在图像识别等任务里,若识别出汉堡包,会以200作为其类别标识。201: Extractor # 编号201表示提取器,可能是各种用于提取物质或信息的设备,在数据集中属于这一类别的物体将以此编号区分。202: Extension Cord # 编号202指延长线,在对相关场景进行分析时,延长线的实例会被归类到编号202对应的类别。203: Tong # 编号203代表钳子,通常用于夹持物品的工具,在数据集中用这个编号标识钳子类物体。204: Tennis Racket # 编号204是网球拍,在涉及网球拍的图像或数据样本中,该物体的类别编号为204 205: Folder # 编号205表示文件夹,用于存放文件纸张等的容器,数据集中文件夹类别的实例会用此编号标记。206: American Football # 编号206代表美式橄榄球,在相关数据标注中,美式橄榄球的实例将被赋予编号206207: earphone # 编号207指耳机,无论是头戴式、入耳式等各种类型耳机,在数据集中都属于这个编号对应的类别。208: Mask # 编号208表示口罩或面具,在识别任务里,口罩或面具的实例会以208作为类别编号。209: Kettle # 编号209代表水壶,通常用于烧水或盛装液体的容器,在数据集中用这个编号标识水壶类物体。210: Tennis # 编号210是网球,在网球相关的图像或数据样本中,网球这一物体的类别编号为210 211: Ship # 编号211表示船,涵盖各种类型的船只,在涉及船的图像或数据中,该物体的类别编号为211212: Swing # 编号212代表秋千,在场景分析或图像识别中,秋千的实例会被归类到编号212对应的类别。213: Coffee Machine # 编号213指咖啡机,用于制作咖啡的设备,数据集中咖啡机类别的实例会用此编号标记。214: Slide # 编号214表示滑梯,在相关场景进行分析时,滑梯的实例会被赋予编号214215: Carriage # 编号215代表马车或车厢,在数据标注中,马车或车厢的实例将被赋予编号215216: Onion # 编号216指洋葱,在涉及洋葱的图像或数据样本中,洋葱这一物体的类别编号为216 217: Green beans # 编号217代表青豆,在数据集中,青豆类别的实例会用编号217来标记。218: Projector # 编号218表示投影仪,在图像识别等任务里,投影仪的实例会以218作为其类别标识。219: Frisbee # 编号219指飞盘,在相关数据标注中,飞盘的实例将被赋予编号219220: Washing Machine/Drying Machine # 编号220代表洗衣机/烘干机,在数据集中,洗衣机或烘干机的实例会用此编号标记。221: Chicken # 编号221表示鸡(活鸡或作为食物的鸡肉),在识别任务里,鸡的实例会以221作为类别编号。222: Printer # 编号222指打印机,用于打印文件等的设备,数据集中打印机类别的实例会用此编号标记。223: Watermelon # 编号223代表西瓜,在涉及西瓜的图像或数据样本中,西瓜这一物体的类别编号为223 224: Saxophone # 编号224表示萨克斯管,在场景分析或图像识别中,萨克斯管的实例会被归类到编号224对应的类别。225: Tissue # 编号225指纸巾,在相关场景进行分析时,纸巾的实例会被赋予编号225226: Toothbrush # 编号226代表牙刷,在数据标注中,牙刷的实例将被赋予编号226227: Ice cream # 编号227表示冰淇淋,在涉及冰淇淋的图像或数据样本中,冰淇淋这一物体的类别编号为227 228: Hot-air balloon # 编号228代表热气球,在图像识别等任务里,热气球的实例会以228作为其类别标识。229: Cello # 编号229表示大提琴,在相关数据标注中,大提琴的实例将被赋予编号229230: French Fries # 编号230代表炸薯条,在数据集中,炸薯条类别的实例会用此编号标记。231: Scale # 编号231表示秤,用于测量物体重量的工具,数据集中秤类别的实例会用此编号标记。232: Trophy # 编号232代表奖杯,在识别任务里,奖杯的实例会以232作为类别编号。233: Cabbage # 编号233指卷心菜,在涉及卷心菜的图像或数据样本中,卷心菜这一物体的类别编号为233 234: Hot dog # 编号234代表热狗,在相关场景进行分析时,热狗的实例会被赋予编号234235: Blender # 编号235表示搅拌机,用于搅拌食物等的设备,数据集中搅拌机类别的实例会用此编号标记。236: Peach # 编号236代表桃子,在涉及桃子的图像或数据样本中,桃子这一物体的类别编号为236 237: Rice # 编号237表示大米或米饭,在数据集中,大米或米饭类别的实例会用编号237来标记。238: Wallet/Purse # 编号238代表钱包,在图像识别等任务里,钱包的实例会以238作为其类别标识。239: Volleyball # 编号239代表排球,在相关数据标注中,排球的实例将被赋予编号239240: Deer # 编号240表示鹿,在识别任务里,鹿的实例会以240作为类别编号。241: Goose # 编号241代表鹅,在涉及鹅的图像或数据样本中,鹅这一物体的类别编号为241 242: Tape # 编号242指胶带或磁带,在相关场景进行分析时,胶带或磁带的实例会被赋予编号242243: Tablet # 编号243表示平板电脑,在数据标注中,平板电脑的实例将被赋予编号243244: Cosmetics # 编号244代表化妆品,在数据集中,化妆品类别的实例会用此编号标记。245: Trumpet # 编号245表示小号,在场景分析或图像识别中,小号的实例会被归类到编号245对应的类别。246: Pineapple # 编号246代表菠萝,在涉及菠萝的图像或数据样本中,菠萝这一物体的类别编号为246 247: Golf Ball # 编号247代表高尔夫球,在相关数据标注中,高尔夫球的实例将被赋予编号247248: Ambulance # 编号248表示救护车,在图像识别等任务里,救护车的实例会以248作为其类别标识。249: Parking meter # 编号249代表停车计时器,在相关场景进行分析时,停车计时器的实例会被赋予编号249250: Mango # 编号250代表芒果,在涉及芒果的图像或数据样本中,芒果这一物体的类别编号为250 251: Key # 编号251表示钥匙,在数据标注中,钥匙的实例将被赋予编号251252: Hurdle # 编号252代表跨栏,在场景分析或图像识别中,跨栏的实例会被归类到编号252对应的类别。253: Fishing Rod # 编号253代表钓鱼竿,在相关场景进行分析时,钓鱼竿的实例会被赋予编号253254: Medal # 编号254代表奖章,在数据标注中,奖章的实例将被赋予编号254255: Flute # 编号255表示长笛,在场景分析或图像识别中,长笛的实例会被归类到编号255对应的类别。256: Brush # 编号256代表刷子,涵盖各种类型的刷子,在数据集中刷子类别的实例会用此编号标记。257: Penguin # 编号257代表企鹅,在识别任务里,企鹅的实例会以257作为类别编号。258: Megaphone # 编号258代表扩音器,在相关数据标注中,扩音器的实例将被赋予编号258259: Corn # 编号259代表玉米,在涉及玉米的图像或数据样本中,玉米这一物体的类别编号为259 260: Lettuce # 编号260代表生菜,在数据集中,生菜类别的实例会用编号260来标记。261: Garlic # 编号261代表大蒜,在涉及大蒜的图像或数据样本中,大蒜这一物体的类别编号为261 262: Swan # 编号262代表天鹅,在识别任务里,天鹅的实例会以262作为类别编号。263: Helicopter # 编号263表示直升机,在相关场景进行分析时,直升机的实例会被赋予编号263264: Green Onion # 编号264代表葱,在数据标注中,葱的实例将被赋予编号264265: Sandwich # 编号265代表三明治,在数据集中,三明治类别的实例会用此编号标记。266: Nuts # 编号266代表坚果,在涉及坚果的图像或数据样本中,坚果这一物体的类别编号为266 267: Speed Limit Sign # 编号267代表限速标志,在场景分析或图像识别中,限速标志的实例会被归类到编号267对应的类别。268: Induction Cooker # 编号268代表电磁炉,在相关场景进行分析时,电磁炉的实例会被赋予编号268269: Broom # 编号269代表扫帚,在数据标注中,扫帚的实例将被赋予编号269270: Trombone # 编号270表示长号,在场景分析或图像识别中,长号的实例会被归类到编号270对应的类别。271: Plum # 编号271代表李子,在涉及李子的图像或数据样本中,李子这一物体的类别编号为271 272: Rickshaw # 编号272代表人力车,在相关数据标注中,人力车的实例将被赋予编号272273: Goldfish # 编号273代表金鱼,在识别任务里,金鱼的实例会以273作为类别编号。274: Kiwi fruit # 编号274代表猕猴桃,在涉及猕猴桃的图像或数据样本中,猕猴桃这一物体的类别编号为274 275: Router/modem # 编号275代表路由器/调制解调器,在数据集中,路由器或调制解调器类别的实例会用此编号标记。276: Poker Card # 编号276代表扑克牌,在相关场景进行分析时,扑克牌的实例会被赋予编号276277: Toaster # 编号277代表烤面包机,在数据标注中,烤面包机的实例将被赋予编号277278: Shrimp # 编号278代表虾,在涉及虾的图像或数据样本中,虾这一物体的类别编号为278 279: Sushi # 编号279代表寿司,在数据集中,寿司类别的实例会用编号279来标记。280: Cheese # 编号280代表奶酪,在涉及奶酪的图像或数据样本中,奶酪这一物体的类别编号为280 281: Notepaper # 编号281代表便签纸,在相关场景进行分析时,便签纸的实例会被赋予编号281282: Cherry # 编号282代表樱桃,在涉及樱桃的图像或数据样本中,樱桃这一物体的类别编号为282 283: Pliers # 编号283代表钳子(与编号203的“Tong”类似,可能存在不同表述或细分差异 ),在数据标注中,此类钳子的实例将被赋予编号283284: CD # 编号284代表光盘,在场景分析或图像识别中,光盘的实例会被归类到编号284对应的类别。285: Pasta # 编号285代表意大利面,在数据集中,意大利面类别的实例会用此编号标记。286: Hammer # 编号286代表锤子,在相关场景进行分析时,锤子的实例会被赋予编号286287: Cue # 编号287代表球杆(通常指台球杆等 ),在数据标注中,球杆的实例将被赋予编号287288: Avocado # 编号288代表牛油果,在涉及牛油果的图像或数据样本中,牛油果这一物体的类别编号为288 289: Hami melon # 编号289代表哈密瓜,在数据集中,哈密瓜类别的实例会用编号289来标记。290: Flask # 编号290代表烧瓶或保温瓶,在相关场景进行分析时,烧瓶或保温瓶的实例会被赋予编号290291: Mushroom # 编号291代表蘑菇,在涉及蘑菇的图像或数据样本中,蘑菇这一物体的类别编号为291 292: Screwdriver # 编号292代表螺丝刀,在数据标注中,螺丝刀的实例将被赋予编号292293: Soap # 编号293代表肥皂,在场景分析或图像识别中,肥皂的实例会被归类到编号293对应的类别。294: Recurrent <-- 此处疑似有误,推测可能是“Recorder”(录音机 ),若按推测,编号294代表录音机,在相关场景进行分析时,录音机的实例会被赋予编号294(若原词无误,需根据实际情况确定含义 )。295: Bear # 编号295代表熊,在识别任务里,熊的实例会以295作为类别编号。296: Eggplant # 编号296代表茄子,在涉及茄子的图像或数据样本中,茄子这一物体的类别编号为296 297: Board Eraser # 编号297代表黑板擦,在数据标注中,黑板擦的实例将被赋予编号297298: Coconut # 编号298代表椰子,在涉及椰子的图像或数据样本中,椰子这一物体的类别编号为298 299: Tape Measure/Ruler # 编号299代表卷尺/尺子,在数据集中,卷尺或尺子类别的实例会用此编号标记。300: Pig # 编号300代表猪,在识别任务里,猪的实例会以300作为类别编号。301: Showerhead # 编号301代表淋浴喷头,在相关场景进行分析时,淋浴喷头的实例会被赋予编号301302: Globe # 编号302代表地球仪,在数据标注中,地球仪的实例将被赋予编号302303: Chips # 编号303代表薯片或芯片(具体含义需结合数据集实际情况确定 ),在场景分析或图像识别中,此类物体的实例会被归类到编号303对应的类别。304: Steak # 编号304代表牛排,在涉及牛排的图像或数据样本中,牛排这一物体的类别编号为304 305: Crosswalk Sign # 编号305代表人行横道标志,在相关场景进行分析时,人行横道标志的实例会被赋予编号305306: Stapler # 编号306代表订书机,在数据标注中,订书机的实例将被赋予编号306307: Camel # 编号307代表骆驼,在识别任务里,骆驼的实例会以307作为类别编号。308: Formula 1 # 编号308代表一级方程式赛车,在相关数据标注中,一级方程式赛车的实例将被赋予编号308309: Pomegranate # 编号309对应的类别是石榴,在相关的目标检测或分类任务中,若识别出石榴这个物体,其类别编号即为309310: Dishwasher # 编号310代表洗碗机,当数据集中出现洗碗机相关的实例时,会用310作为该物体的类别标识。311: Crab # 编号311表示螃蟹,在处理涉及螃蟹的图像或数据样本时,螃蟹这一物体的类别编号为311 312: Hoverboard # 编号312指悬浮滑板,在相关场景分析或图像识别中,悬浮滑板的实例会被归类到编号312对应的类别。313: Meatball # 编号313代表肉丸,在数据标注里,肉丸的实例将被赋予编号313314: Rice Cooker # 编号314表示电饭煲,在涉及电饭煲的图像或数据中,该物体的类别编号为314315: Tuba # 编号315代表大号(一种乐器),在相关数据标注中,大号的实例将被赋予编号315316: Calculator # 编号316指计算器,在数据集中,计算器类别的实例会用编号316来标记。317: Papaya # 编号317代表木瓜,在涉及木瓜的图像或数据样本中,木瓜这一物体的类别编号为317 318: Antelope # 编号318表示羚羊,在识别任务里,羚羊的实例会以318作为类别编号。319: Parrot # 编号319代表鹦鹉,在相关场景进行分析时,鹦鹉的实例会被赋予编号319320: Seal # 编号320代表海豹,在数据标注中,海豹的实例将被赋予编号320321: Butterfly # 编号321表示蝴蝶,在场景分析或图像识别中,蝴蝶的实例会被归类到编号321对应的类别。322: Dumbbell # 编号322代表哑铃,在相关场景进行分析时,哑铃的实例会被赋予编号322323: Donkey # 编号323代表驴,在数据标注中,驴的实例将被赋予编号323324: Lion # 编号324代表狮子,在识别任务里,狮子的实例会以324作为类别编号。325: Urinal # 编号325代表小便池,在相关数据标注中,小便池的实例将被赋予编号325326: Dolphin # 编号326代表海豚,在涉及海豚的图像或数据样本中,海豚这一物体的类别编号为326 327: Electric Drill # 编号327表示电钻,在数据集中,电钻类别的实例会用编号327来标记。328: Hair Dryer # 编号328代表吹风机,在相关场景进行分析时,吹风机的实例会被赋予编号328329: Egg tart # 编号329代表蛋挞,在数据标注中,蛋挞的实例将被赋予编号329330: Jellyfish # 编号330代表水母,在场景分析或图像识别中,水母的实例会被归类到编号330对应的类别。331: Treadmill # 编号331代表跑步机,在相关场景进行分析时,跑步机的实例会被赋予编号331332: Lighter # 编号332代表打火机,在数据标注中,打火机的实例将被赋予编号332333: Grapefruit # 编号333代表葡萄柚,在涉及葡萄柚的图像或数据样本中,葡萄柚这一物体的类别编号为333 334: Game board # 编号334代表游戏板,在数据集中,游戏板类别的实例会用编号334来标记。335: Mop # 编号335代表拖把,在相关场景进行分析时,拖把的实例会被赋予编号335336: Radish # 编号336代表萝卜,在涉及萝卜的图像或数据样本中,萝卜这一物体的类别编号为336 337: Baozi # 编号337代表包子,在数据标注中,包子的实例将被赋予编号337338: Target # 编号338代表靶子,在场景分析或图像识别中,靶子的实例会被归类到编号338对应的类别。339: French # 此处“French”单独作为类别不太明确,如果结合数据集可能表示法国相关事物,如法国面包(法棍)、法式菜肴等;也可能是录入错误,需结合实际数据集确定。340: Spring Rolls # 编号340代表春卷,在涉及春卷的图像或数据样本中,春卷这一物体的类别编号为340 341: Monkey # 编号341代表猴子,在识别任务里,猴子的实例会以341作为类别编号。342: Rabbit # 编号342代表兔子,在相关场景进行分析时,兔子的实例会被赋予编号342343: Pencil Case # 编号343代表铅笔盒,在数据标注中,铅笔盒的实例将被赋予编号343344: Yak # 编号344代表牦牛,在涉及牦牛的图像或数据样本中,牦牛这一物体的类别编号为344 345: Red Cabbage # 编号345代表紫甘蓝,在数据集中,紫甘蓝类别的实例会用编号345来标记。346: Binoculars # 编号346代表双筒望远镜,在相关场景进行分析时,双筒望远镜的实例会被赋予编号346347: Asparagus # 编号347代表芦笋,在涉及芦笋的图像或数据样本中,芦笋这一物体的类别编号为347 348: Barbell # 编号348代表杠铃,在数据标注中,杠铃的实例将被赋予编号348349: Scallop # 编号349代表扇贝,在场景分析或图像识别中,扇贝的实例会被归类到编号349对应的类别。350: Noddles # 疑似拼写错误,应为“Noodles”,编号350代表面条,在数据集中,面条类别的实例会用编号350来标记(若原词无误,需根据实际情况确定含义 )。351: Comb # 编号351代表梳子,在相关场景进行分析时,梳子的实例会被赋予编号351352: Dumpling # 编号352代表饺子,在数据标注中,饺子的实例将被赋予编号352353: Oyster # 编号353代表牡蛎,在场景分析或图像识别中,牡蛎的实例会被归类到编号353对应的类别。354: Table Tennis paddle # 编号354代表乒乓球拍,在涉及乒乓球拍的图像或数据样本中,乒乓球拍这一物体的类别编号为354 355: Cosmetics Brush/Eyeliner Pencil # 编号355代表化妆刷/眼线笔,在数据集中,化妆刷或眼线笔类别的实例会用编号355来标记。356: Chainsaw # 编号356代表电锯,在相关场景进行分析时,电锯的实例会被赋予编号356357: Eraser # 编号357代表橡皮擦,在数据标注中,橡皮擦的实例将被赋予编号357358: Lobster # 编号358代表龙虾,在场景分析或图像识别中,龙虾的实例会被归类到编号358对应的类别。359: Durian # 编号359代表榴莲,在涉及榴莲的图像或数据样本中,榴莲这一物体的类别编号为359 360: Okra # 编号360代表秋葵,在数据集中,秋葵类别的实例会用编号360来标记。361: Lipstick # 编号361代表口红,在相关场景进行分析时,口红的实例会被赋予编号361362: Cosmetics Mirror # 编号362代表化妆镜,在数据标注中,化妆镜的实例将被赋予编号362363: Curling # 编号363代表冰壶(运动)或卷发(造型行为),在相关数据标注中,根据数据集的具体指向,冰壶或与卷发相关物品的实例将被赋予编号363(需结合实际确定 )。364: Table Tennis # 编号364代表乒乓球(运动或乒乓球物体 ),在涉及乒乓球运动场景或乒乓球物体的图像数据中,该实例的类别编号为364# 从pathlib模块导入Path类,用于处理文件路径,提供了更方便、面向对象的文件路径操作方式
    from pathlib import Path# 导入numpy库并简写成np,用于数值计算
    import numpy as np# 从tqdm库导入tqdm,用于显示进度条,直观展示任务的进度
    from tqdm import tqdm# 从ultralytics.utils.checks模块导入check_requirements函数,用于检查所需的Python库是否安装
    from ultralytics.utils.checks import check_requirements# 从ultralytics.utils.downloads模块导入download函数,用于下载文件
    from ultralytics.utils.downloads import download# 从ultralytics.utils.ops模块导入xyxy2xywhn函数,用于将边界框坐标格式从xyxy转换为xywhn(归一化的xywh格式)
    from ultralytics.utils.ops import xyxy2xywhn# 检查是否安装了pycocotools库,并且版本是否大于等于2.0,若未安装或版本不满足要求,会提示安装
    check_requirements(("pycocotools>=2.0",))# 从pycocotools.coco模块导入COCO类,用于处理COCO数据集格式的标注文件
    from pycocotools.coco import COCO# Make Directories
    # 获取数据集根目录路径,从yaml配置文件中读取"path"字段的值,创建Path对象
    dir = Path(yaml["path"])  # 遍历"images""labels",为每个目录创建对应的文件夹
    for p in "images", "labels":# 创建目录,如果父目录不存在则创建,exist_ok=True表示如果目录已存在则不报错(dir / p).mkdir(parents=True, exist_ok=True)  # 对于每个"images""labels"目录,再分别创建"train""val"子目录for q in "train", "val":(dir / p / q).mkdir(parents=True, exist_ok=True)  # Train, Val Splits
    # 遍历训练集和验证集的相关参数,split为数据集的划分("train""val"),patches为相应划分的文件块数量
    for split, patches in [("train", 50 + 1), ("val", 43 + 1)]:# 打印当前正在处理的数据集划分和文件块数量信息print(f"Processing {split} in {patches} patches ...")  # 构建当前数据集划分的图像和标签目录路径images, labels = dir / "images" / split, dir / "labels" / split  # Download# 构建下载数据集文件的基础URLurl = f"https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/{split}/"  if split == "train":# 下载训练集的标注文件(压缩格式)到数据集根目录download([f"{url}zhiyuan_objv2_{split}.tar.gz"], dir=dir)  # 并行下载训练集的图像文件块到图像目录,curl=True表示使用curl进行下载,threads=8表示使用8个线程加速下载download([f"{url}patch{i}.tar.gz" for i in range(patches)], dir=images, curl=True, threads=8)  elif split == "val":# 下载验证集的标注文件(JSON格式)到数据集根目录download([f"{url}zhiyuan_objv2_{split}.json"], dir=dir)  # 分两部分下载验证集的图像文件块到图像目录,先下载v1部分,再下载v2部分,都使用curl和8个线程download([f"{url}images/v1/patch{i}.tar.gz" for i in range(15 + 1)], dir=images, curl=True, threads=8)  download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images, curl=True, threads=8)  # Move# 遍历当前图像目录下所有的.jpg文件,tqdm用于显示进度条for f in tqdm(images.rglob("*.jpg"), desc=f"Moving {split} images"):# 将图像文件移动到当前数据集划分的图像目录下,文件名不变f.rename(images / f.name)  # Labels# 加载当前数据集划分的标注文件,创建COCO对象coco = COCO(dir / f"zhiyuan_objv2_{split}.json")  # 获取数据集中所有类别的名称names = [x["name"] for x in coco.loadCats(coco.getCatIds())]  # 遍历每个类别for cid, cat in enumerate(names):# 获取当前类别的类别IDcatIds = coco.getCatIds(catNms=[cat])  # 获取包含当前类别的所有图像的IDimgIds = coco.getImgIds(catIds=catIds)  # 遍历包含当前类别的每一幅图像for im in tqdm(coco.loadImgs(imgIds), desc=f"Class {cid + 1}/{len(names)} {cat}"):# 获取图像的宽度和高度width, height = im["width"], im["height"]  # 获取图像的文件名path = Path(im["file_name"])  try:# 打开对应的标签文件,以追加模式写入,编码为utf-8with open(labels / path.with_suffix(".txt").name, "a", encoding="utf-8") as file:# 获取当前图像中当前类别的所有标注IDannIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=None)  # 遍历每个标注for a in coco.loadAnns(annIds):# 获取标注的边界框坐标(xywh格式,左上角坐标和宽高)x, y, w, h = a["bbox"]  # 将xywh格式转换为xyxy格式(左上角和右下角坐标),并转换为numpy数组xyxy = np.array([x, y, x + w, y + h])[None]  # 将xyxy格式的边界框坐标转换为归一化的xywhn格式,clip=True表示裁剪超出图像边界的坐标x, y, w, h = xyxy2xywhn(xyxy, w=width, h=height, clip=True)[0]  # 将类别ID和归一化后的边界框坐标写入标签文件file.write(f"{cid} {x:.5f} {y:.5f} {w:.5f} {h:.5f}\n")  except Exception as e:# 如果在处理过程中出现异常,打印异常信息print(e)  
    

open-images-v7.yaml

  • # 导入warnings模块,用于处理警告信息
    import warnings# 从ultralytics.utils模块中导入LOGGER(用于记录日志)、SETTINGS(包含一些设置信息)、Path(用于处理文件路径)、get_ubuntu_version(获取Ubuntu系统版本号)、is_ubuntu(判断是否为Ubuntu系统)
    from ultralytics.utils import LOGGER, SETTINGS, Path, get_ubuntu_version, is_ubuntu# 从ultralytics.utils.checks模块中导入check_requirements(检查所需的Python库是否安装)和check_version(检查库的版本号)
    from ultralytics.utils.checks import check_requirements, check_version# 检查是否安装了fiftyone库,如果未安装则提示安装
    check_requirements("fiftyone")# 判断当前系统是否为Ubuntu且版本号大于等于22.04,如果是则检查是否安装了fiftyone-db-ubuntu2204库
    if is_ubuntu() and check_version(get_ubuntu_version(), ">=22.04"):check_requirements("fiftyone-db-ubuntu2204")# 导入fiftyone库并简写成fo,fiftyone是一个用于计算机视觉数据集管理和分析的库
    import fiftyone as fo# 导入fiftyone.zoo模块并简写成foz,用于加载预定义的数据集
    import fiftyone.zoo as foz# 定义数据集名称为open-images-v7
    name = "open-images-v7"# 设置fiftyone库中数据集的存储目录,将其设置为ultralytics的数据集目录下的fiftyone/open-images-v7路径
    fo.config.dataset_zoo_dir = Path(SETTINGS["datasets_dir"]) / "fiftyone" / name# 设置加载数据集样本的比例,这里设置为1.0表示加载全部样本
    fraction = 1.0# 记录一条警告日志,提示Open Images V7数据集至少需要561GB的可用空间,并开始下载
    LOGGER.warning("WARNING ⚠️ Open Images V7 dataset requires at least **561 GB of free space. Starting download...")# 遍历'train''validation',分别处理训练集和验证集
    for split in "train", "validation":# 判断当前处理的是否为训练集train = split == "train"# 从fiftyone的数据集库中加载open-images-v7数据集dataset = foz.load_zoo_dataset(name,  # 数据集名称split=split,  # 数据集划分,'train''validation'label_types=["detections"],  # 标签类型,这里是检测任务的标签# 根据训练集或验证集的样本数量以及设定的比例,计算要加载的最大样本数max_samples=round((1743042 if train else 41620) * fraction)  )# 如果当前处理的是训练集,获取训练集的所有类别if train:classes = dataset.default_classes# 捕获警告信息,忽略fiftyone.utils.yolo模块中UserWarning类型的警告with warnings.catch_warnings():warnings.filterwarnings("ignore", category=UserWarning, module="fiftyone.utils.yolo")# 将加载的数据集导出为YOLOv5数据集格式dataset.export(export_dir=str(Path(SETTINGS["datasets_dir"]) / name),  # 导出目录,为ultralytics数据集目录下的open-images-v7dataset_type=fo.types.YOLOv5Dataset,  # 导出的数据集类型为YOLOv5数据集label_field="ground_truth",  # 标签字段名split="val" if split == "validation" else split,  # 如果是验证集则导出为val划分,否则使用原划分名称classes=classes,  # 数据集的类别列表(仅在训练集时有效)overwrite=train  # 如果是训练集则覆盖已存在的文件,否则不覆盖)
    
  • 飞机、航空器;飞机;闹钟;羊驼;救护车;动物;蚂蚁;羚羊;苹果;犰狳;洋蓟;汽车零部件;
    斧头;背包;百吉饼;烘焙食品;平衡木;球;气球;香蕉;创可贴;班卓琴;驳船;桶;棒球棒;
  • 棒球手套;蝙蝠(动物);浴室配件;浴室柜;浴缸;烧杯;熊;床;蜜蜂;蜂巢;啤酒;甲虫;
    甜椒;皮带;长椅;自行车;自行车头盔;自行车轮;坐浴盆;广告牌;台球桌;双筒望远镜;鸟;搅拌机
  • 冠蓝鸦;船;炸弹;书;书架;靴子;瓶子;开瓶器;弓和箭;碗;保龄球设备;盒子;男孩;胸罩;
  • 面包;公文包;西兰花;青铜雕塑;棕熊;建筑物;公牛;墨西哥卷饼;公共汽车;半身像;蝴蝶;卷心菜;橱柜;蛋糕;
  • 蛋糕架;计算器;骆驼;相机;开罐器;金丝雀;蜡烛;糖果;大炮;独木舟;哈密瓜;汽车;食肉动物;胡萝卜;手推车;
  • 卡带机;城堡;猫;猫用家具;毛毛虫;牛;吊扇;大提琴;蜈蚣;电锯;椅子;奶酪;猎豹;
  • 五斗柜;鸡;编钟;凿子;筷子;圣诞树;时钟;壁橱;衣物;外套;鸡尾酒;鸡尾酒摇壶;
  • 椰子;咖啡;咖啡杯;咖啡桌;咖啡机;硬币;无花果;向日葵;计算机键盘;计算机显示器;
  • 计算机鼠标;容器;便利店;饼干;烹饪喷雾;有线电话;化妆品;沙发;台面;牛仔帽;螃蟹;
  • 奶油;板球;鳄鱼;羊角面包;皇冠;拐杖;黄瓜;碗柜;窗帘;切菜板;匕首;乳制品;鹿;
  • 书桌;甜点;尿布;骰子;数字时钟;恐龙;洗碗机;狗;狗床;玩偶;海豚;门;门把手;甜甜圈;蜻蜓;
  • 抽屉;连衣裙;电钻(工具);饮料;吸管;鼓;鸭子;哑铃;鹰;耳环;鸡蛋(食物);大象;信封;橡皮擦;
  • 粉饼;面巾纸盒;猎鹰;时尚配饰;快餐;传真机;软毡帽;文件柜;消防栓;壁炉;鱼;
  • 旗帜;手电筒;花;花盆;长笛;飞盘;食物;食品加工机;橄榄球;橄榄球头盔;鞋类;叉子;喷泉;狐狸;
  • 炸薯条;法国号;青蛙;水果;煎锅;家具;芦笋;煤气炉;长颈鹿;女孩;眼镜;手套;山羊;
  • 护目镜;金鱼;高尔夫球;高尔夫球车;贡多拉;鹅;葡萄;葡萄柚;研磨机;鳄梨酱;吉他;吹风机;发胶;
  • 汉堡包;锤子;仓鼠;干手器;手提包;手枪;港海豹;口琴;竖琴;羽管键琴;帽子;耳机;加热器;刺猬;
  • 直升机;头盔;高跟鞋;徒步装备;河马;家用电器;蜂巢;单杠;马;热狗;房子;
  • 室内植物;人的手臂;人的胡须;人体;人的耳朵;人的眼睛;人的脸;人的脚;人的头发;人的手;人的头;
  • 人的腿;人的嘴;人的鼻子;加湿器;冰淇淋;室内划船机;婴儿床;昆虫;无脊椎动物;iPod(苹果公司音乐播放器);等足目动物;夹克;
  • 按摩浴缸;美洲豹(动物);牛仔裤;水母;喷气式滑艇;罐子;果汁;袋鼠;水壶;厨房和餐厅桌子;厨房电器;
  • 菜刀;厨房用具;厨房 ware;风筝;刀;考拉;梯子;长柄勺;瓢虫;灯;陆地车辆;灯笼;笔记本电脑;
  • 薰衣草(植物);柠檬;豹;电灯泡;电灯开关;灯塔;百合;豪华轿车;狮子;口红;蜥蜴;龙虾;
  • 双人沙发;行李和包;猞猁;喜鹊;哺乳动物;男人;芒果;枫树;沙球;海洋无脊椎动物;海洋哺乳动物;量杯;
  • 机械风扇;医疗设备;麦克风;微波炉;牛奶;迷你裙;镜子;导弹;搅拌器;搅拌碗;移动电话;
  • 猴子;蛾和蝴蝶;摩托车;老鼠;松饼;马克杯;骡子;蘑菇;乐器;音乐键盘
  • 钉子(建筑用)、项链、床头柜、双簧管、办公楼、办公用品、橙子、管风琴(乐器)、鸵鸟、
  • 水獭、烤箱、猫头鹰、牡蛎、桨、棕榈树、煎饼、熊猫、裁纸刀、纸巾、降落伞、停车计时器、鹦鹉、意大利面、
  • 糕点、桃子、梨、钢笔、铅笔盒、卷笔刀、企鹅、香水、人、个人护理用品
  • 个人漂浮装置、钢琴、野餐篮、相框、猪、枕头、菠萝、水罐(容器)、披萨、披萨刀、
  • 植物、塑料袋、盘子、大浅盘、管道装置、北极熊、石榴、爆米花、门廊、豪猪、海报、土豆、
  • 电源插头和插座、高压锅、椒盐卷饼、打印机、南瓜、沙袋、兔子、浣熊、球拍、萝卜、棘轮(装置)、
  • 渡鸦、魟鱼和鳐鱼、小熊猫、冰箱、遥控器、爬行动物、犀牛、步枪、活页夹、火箭、旱冰鞋、玫瑰、
  • 橄榄球、尺子、沙拉、盐和胡椒瓶、凉鞋、三明治、茶碟、萨克斯管、秤、围巾、剪刀、记分牌、蝎子、
  • 螺丝刀、雕塑、海狮、海龟、海鲜、海马、安全带、平衡车、托盘、缝纫机、鲨鱼、羊、架子、
  • 贝类、衬衫、短裤、猎枪、淋浴器、虾、水槽、滑板、滑雪板、裙子、头骨、臭鼬、摩天大楼、慢炖锅、小吃、蜗牛、
  • 蛇、滑雪板、雪人、雪地摩托、扫雪机、肥皂分配器、袜子、沙发床、宽边帽、麻雀、锅铲、调味架、蜘蛛、
  • 勺子、体育器材、运动制服、南瓜(植物)、鱿鱼、松鼠、楼梯、订书机、海星、健身自行车、听诊器、
  • 凳子、停车标志、草莓、路灯、担架、摄影棚长沙发、潜艇、潜艇三明治(长潜艇形三明治)、套装、手提箱、太阳帽、太阳镜、
  • 冲浪板、寿司、天鹅、游泳帽、游泳池、泳衣、剑、注射器、桌子、乒乓球拍、平板电脑、餐具、
  • 墨西哥玉米卷、坦克、水龙头、果馅饼、出租车、茶、茶壶、泰迪熊、电话、电视、网球、网球拍、帐篷、冠状头饰、蜱虫、领带、
  • 老虎、罐头、轮胎、烤面包机、马桶、卫生纸、番茄、工具、牙刷、手电筒、乌龟、毛巾、塔、玩具、交通信号灯
  • 交通标志、火车、训练长椅、跑步机、树、树屋、三脚架、长号、裤子、卡车、小号、火鸡、海龟、
  • 雨伞、独轮车、厢式货车、花瓶、蔬菜、车辆、车牌、小提琴、排球(球)、华夫饼、华夫饼烤盘、
  • 挂钟、衣柜、洗衣机、垃圾桶、手表、船只、西瓜、武器、鲸鱼、轮子、轮椅、打蛋器、白板、柳树、窗户、百叶窗、葡萄酒、葡萄酒杯、酒架、冬瓜、炒锅、女人、烧木柴的炉子、
  • 啄木鸟、虫子、扳手、斑马、西葫芦

相关文章:

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 medical - pills.yaml 通常用于配置与医学药丸检测任务相关的参数和信息 Objects365.yaml 用于配置与 Objects365 数据集相关信息的文件。Objects365 数据集包含 365 个不同的物体类别…...

Windows环境下常用网络命令使用

ipconfig命令使用&#xff1a; ipconfig可用于显示当前的TCP/IP配置的设置值&#xff0c;通常是用来检验人工配置的TCP/IP设置是否正确。在网络连接出现问题时&#xff0c;可以使用ipconfig /release和ipconfig /renew命令来刷新IP地址&#xff0c;这通常能解决因IP地址冲突或…...

RS232“变形记”,Profinet如何让电力通信设备“改头换面”

在现代电力系统中&#xff0c;随着自动化和智能化技术的不断发展&#xff0c;通信协议的转换成为实现设备互联互通的关键环节。VING微硬创新RS232转Profinet技术为电力设备的升级和优化提供了有效的解决方案&#xff0c;本文将详细介绍这一技术的背景、原理、应用及意义。 一、…...

WordPress AI 原创文章自动生成插件 24小时全自动生成SEO原创文章 | 多语言支持 | 智能配图与排版

为什么选择Linkreate AI内容生成插件&#xff1f; ✓ 全自动化工作流程 - 从关键词挖掘到文章发布一站式完成 ✓ 多语言支持 - 轻松覆盖全球市场&#xff08;中/英等多语种&#xff09; ✓ 智能SEO优化 - 自动生成搜索引擎友好的内容结构 ✓ AI智能配图 - 每篇文章自动匹配高质…...

弹性布局--Flexbox

CSS3 的弹性盒子布局&#xff08;Flexbox&#xff09;是一种强大的布局模型&#xff0c;用于更轻松地创建复杂的布局&#xff0c;尤其适合响应式设计。以下是其详细介绍&#xff1a; 基本概念 Flex 容器&#xff08;Flex Container&#xff09;&#xff1a; 通过将display属性…...

更新GNS3

更新GNS3 有时&#xff0c;我们需要更新GNS3&#xff08;Graphical Network Simulator-3&#xff0c;图形化网络模拟器3&#xff09;——一款用于模拟网络的学习软件&#xff0c;类似于Cisco Packet Tracer。然而&#xff0c;GNS3主要由两部分组成——GNS3客户端和GNS3虚拟机&…...

c#接口_抽象类_多态学习

c#接口_抽象类_多态学习 学习日志 关于&#xff1a;c#接口_抽象类_多态的学习记录。 一、概念 1. 多态&#xff08;Polymorphism&#xff09; 定义&#xff1a;同一操作作用于不同对象时&#xff0c;表现出不同的行为。实现方式&#xff1a; 继承 方法重写&#xff08;ov…...

BGE-M3模型深度技术分析

以下是针对 BGE-M3 模型的深度技术分析&#xff0c;综合其架构设计、核心能力、性能表现及实际应用场景&#xff1a; 一、模型概览 BGE-M3&#xff08;Beijing General Embedding M3&#xff09;是北京智源研究院&#xff08;BAAI&#xff09;推出的多语言通用向量模型&#x…...

光谱相机如何提升目标检测与识别精度

光谱相机&#xff08;多光谱/高光谱&#xff09;通过捕捉目标在多个波段的光谱特征&#xff0c;能够揭示传统RGB相机无法感知的材质、化学成分及物理特性差异。以下是提升其目标检测与识别精度的核心方法&#xff1a; ‌1. 硬件优化&#xff1a;提升数据质量‌ ‌(1) 光谱分辨…...

漏洞管理体系:从扫描评估到修复验证的全生命周期实践

漏洞管理体系&#xff1a;从扫描评估到修复验证的全生命周期实践 在网络安全防御体系中&#xff0c;漏洞管理是“攻防博弈”的核心战场。据NVD&#xff08;国家漏洞数据库&#xff09;统计&#xff0c;2023年新增漏洞超21万个&#xff0c;平均每天披露575个&#xff0c;其中32…...

资深程序员进阶设备分享,专业编程显示器RD280U

前言 在软件开发行业多年&#xff0c;长时间在电脑前工作常让我眼花、眼困、脊椎不舒服。曾尝试很多方法、买过不少产品&#xff0c;像显示器护眼挂灯、机械臂等&#xff0c;效果不佳还麻烦。直到我用上明基 RD280U 专业编程显示器&#xff0c;它上下可调高度&#xff0c;适配…...

云+AI双轮驱动,亚马逊云科技加速中国企业出海新浪潮

导读&#xff1a;全球化就是本地化 作者 | 小葳 图片来源 | 摄图 近年来&#xff0c;中国企业出海步伐不断加快&#xff0c;“不出海&#xff0c;就出局”成为很多企业的共识。 据沙利文统计&#xff0c;2024年上半年&#xff0c;超过2000家中国上市企业布局海外市场&#xff…...

不同ECU(MCU/ZCU/CCU)其部署(实现)的功能存在差异

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 周末洗了一个澡&#xff0c;换了一身衣服&#xff0c;出了门却不知道去哪儿&#xff0c;不知道去找谁&am…...

施工安全巡检二维码制作

进入新时代以来&#xff0c;人们对安全的重视程度越来越高。特别在建筑施工行业&#xff0c;安全不仅是关乎着工人的性命&#xff0c;更是承载着工人背后家庭的幸福生活。此时就诞生了安全巡检的工作&#xff0c;而巡检过程中内容庞杂&#xff0c;安全生产检查、隐患排查、施工…...

Linux 权限修改详解:chmod 命令与权限数字的秘密

在 Linux 系统的使用过程中&#xff0c;权限控制就像是一把神奇的钥匙&#xff0c;它决定了谁能在系统中对文件和文件夹进行何种操作。今天我们来深入了解一下如何使用 chmod 命令来修改文件和文件夹的权限&#xff0c;让你在系统管理时更加得心应手。 一、chmod 命令&#xf…...

git 的基本使用

文章目录 一、创建仓库并初始化1、操作步骤2、注意事项 二、工作区与版本库1、Git 管理文件类型2、Git 保存文件方式3、工作区与版本库概念及操作 三、命令小结四、版本回退与前进1、相关概念2、版本回退3、版本前进4、总结 五、撤销修改1、场景 12、场景 23、场景 34、注意事项…...

Android 编译问题 prebuilts/clang/host/linux-x86

Android 编译问题 prebuilts/clang/host/linux-x86工具被破环了&#xff0c;用打包的方式替换调工具&#xff0c;不能拷贝&#xff0c;会破坏工具的链接。 FAILED: out\_odm/soong/build.ninja cd "$(dirname "out\_odm/host/linux-x86/bin/soong\_build")&quo…...

SIEMENS PLC程序解读 -BLKMOV (指定长度数据批量传输)

1、程序代码 2、程序解读 这段西门子 PLC 程序&#xff08;程序段 10&#xff09;实现了基于条件的数据块移动功能&#xff0c;具体解释如下&#xff1a; 条件触点&#xff1a; %M0.1 Always<>(TRUE)&#xff08;注释为 AT<>1&#xff09;&#xff1a;当 M0.1 的值…...

Git 核心命令学习总结

一、Git 基础概念 工作目录&#xff1a;本地实际操作的文件夹&#xff0c;包含项目文件。 暂存区&#xff1a;临时存放待提交的变更&#xff08;通过 git add 添加&#xff09;。 本地仓库&#xff1a;存储项目历史版本&#xff08;通过 git commit 提交&#xff09;。 二、…...

vscode 打开csv乱码

在 Visual Studio Code (VS Code) 中打开 CSV 文件出现乱码可能是由于以下几个原因导致的&#xff1a; 编码设置不正确&#xff1a;CSV 文件可能使用了不同的字符编码方式保存&#xff0c;而 VS Code 默认使用的字符编码可能与文件实际的编码方式不一致。你可以在 VS Code 的右…...

WebUI可视化:第3章:Gradio入门实战

学习目标 ✅ 掌握Gradio的安装与基础配置 ✅ 能创建包含多种交互组件的界面 ✅ 实现前后端数据交互逻辑 ✅ 独立开发简单AI应用界面 3.1 Gradio快速安装 3.1.1 通过pip安装 打开终端(Windows:CMD/PowerShell,Mac/Linux:Terminal),执行: bash # 基础安装 pip insta…...

Flink checkpoint问题排查指南

之前只因为checkpoint过大碰到过checkpoint失败的情况&#xff0c;没想到数据倾斜也会导致 我们知道 task 仅在接受到所有的 barrier 之后才会进行 snapshot&#xff0c;如果作业存在反压&#xff0c;或者有数据倾斜&#xff0c;则会导致全部的 channel 或者某些 channel 的 …...

mysql知识总结 索引篇

mysql知识总结 索引篇 1. 索引问题常见分类1. 什么是索引2. 索引的分类3. 从数据结构分类4. 通过二级索引查询商品数据的过程5. 为什么选择B树作为索引呢&#xff1f; 本文是阅读 小林coding 后的读书笔记 原文可以点击上面超链接到达 也可以直接百度搜索 小林coding 1. 索引…...

Flink 数据清洗与字段标准化最佳实践

—— 构建可配置、可扩展的实时标准化清洗链路 本文是「Flink Kafka 构建实时数仓实战」专栏的第 4 篇&#xff0c;将围绕字段标准化这一核心问题&#xff0c;从业务痛点、技术架构、配置设计到完整代码工程&#xff0c;系统讲透标准化实践。 &#x1f4cc; 一、为什么实时字段…...

.NET写的开源工业物联网网关(IoTGateway)

Ver V0.0 250425 主要针对《物联网智能网关开发与设计》课程&#xff0c;根据官方的文档重新组织了一下&#xff0c;并演示了一下在Windows的VS2022下快速地搭建出了学习基于.NET8的Linux IoTGateway的开发&#xff0c;提供给学生作为学习的扩展和外延。 Index IoTGateway …...

蓝桥杯 5. 交换瓶子

交换瓶子 原题目链接 题目描述 有 N 个瓶子&#xff0c;编号为 1 ~ N&#xff0c;放在架子上。 例如有 5 个瓶子&#xff0c;当前排列为&#xff1a; 2 1 3 5 4每次可以拿起 2 个瓶子&#xff0c;交换它们的位置。 要求通过若干次交换&#xff0c;使得瓶子的编号从小到大…...

freeswitch配置视频对接

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 随着4G/5G网络的完善&#xff0c;视频呼叫的需求慢慢变多&#xff0c;本文介绍使用fs对接视频线路的配置方案。 环境 CentOS 7.9 freeswitch 1.10.7 视频模块 目前主流视频编解码使用H264&#xff0c;需要编译安装…...

使用Tortoise-ORM和FastAPI构建评论系统

title: 使用Tortoise-ORM和FastAPI构建评论系统 date: 2025/04/25 21:37:36 updated: 2025/04/25 21:37:36 author: cmdragon excerpt: 在models.py中定义了Comment模型,包含id、content、created_at、updated_at字段,并与User和Article模型建立外键关系。schemas.py中定义了…...

【信息安全工程师备考笔记】第三章 密码学基本理论

笔记内容整理自 https://www.bilibili.com/video/BV1X8411175t &#xff08;B站 崔老夫子老师&#xff09;&#xff0c;老师讲解的非常好&#xff0c;推荐大家看原视频。 第三章 密码学基本理论 3.1 密码学概况 密码编码学&#xff1a;明文 —— > 密文 密码分析学&#x…...

精益数据分析(22/126):解锁创业增长密码与长漏斗分析

精益数据分析&#xff08;22/126&#xff09;&#xff1a;解锁创业增长密码与长漏斗分析 在创业与数据分析的探索旅程中&#xff0c;我们都在不断寻求新的知识和方法&#xff0c;以提升创业的成功率。我一直期望能和大家共同学习、共同进步&#xff0c;今天就让我们继续深入研…...

【深度强化学习 DRL 快速实践】近端策略优化 (PPO)

PPO&#xff08;2017&#xff0c;OpenAI&#xff09;核心改进点 Proximal Policy Optimization (PPO)&#xff1a;一种基于信赖域优化的强化学习算法&#xff0c;旨在克服传统策略梯度方法在更新时不稳定的问题&#xff0c;采用简单易实现的目标函数来保证学习过程的稳定性 解决…...

14-DevOps-快速部署Kubernetes

在学习阶段&#xff0c;为了能快速部署Kubernetes&#xff0c;这里用一个快速安装工具&#xff1a;Kubeode&#xff0c;来完成Kubernetes的部署。 接下来部署一个单机&#xff0c;一主一从的Kubernetes。一主一从都部署在同一台服务器上。 在虚拟机新开一个服务器&#xff0c…...

Java 安全:如何防止 DDoS 攻击?

一、DDoS 攻击简介 DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种常见的网络攻击手段&#xff0c;攻击者通过控制大量的僵尸主机向目标服务器发送海量请求&#xff0c;致使服务器资源耗尽&#xff0c;无法正常响应合法用户请求。在 Java 应用开发中&#xff0c;了解 …...

html+servlet项目中的echart图表

介绍 ECharts 是一款由百度开源的&#xff0c;基于 JavaScript 的可视化图表库&#xff0c;它提供了丰富的图表类型和强大的交互功能&#xff0c;能将数据以直观、美观的图表形式展示出来&#xff0c;广泛应用于数据可视化、商业智能、数据分析等领域。 官网&#xff1a; Ap…...

抖音小程序开发常见问题与代码解决方案

抖音小程序开发常见问题与代码解决方案 一、API调用与组件使用问题 1. 分享卡片样式不生效 问题&#xff1a;通过onShareAppMessage分享的小程序卡片样式显示旧版模板。 代码示例&#xff1a; javascript Page({ onShareAppMessage() { return …...

Springboot 手搓 后端 滑块验证码生成

目录 一、效果演示 二、后端滑块验证码生成思路 三、原理解析 四、核心代码拿走 滑块验证码react前端实现&#xff0c;见我的这篇博客&#xff1a;前端 React 弹窗式 滑动验证码实现_react中使用阿里云滑块验证码2.0前端接入及相关视觉-CSDN博客 一、效果演示 生成的案例…...

QPS说明

QPS&#xff08;Queries Per Second&#xff0c;每秒查询数&#xff09;是用于衡量服务器或系统处理请求能力的一个关键性能指标。 它表示服务器在一秒钟内能够处理的查询或请求的数量。 QPS的详细说明&#xff1a; 1. 定义 QPS&#xff1a;每秒查询数&#xff0c;指服务器…...

(六)机器学习---聚类与K-means

到本篇文章&#xff0c;我们先对前几篇所学习的算法进行一个回顾&#xff1a; 而本篇文章我们将会介绍聚类以及K-means算法。 分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机…...

macOS 更新后找不到钥匙串访问工具的解决方案

macOS 更新后找不到钥匙串访问工具的解决方案 随着macOS的不断更新&#xff0c;一些系统工具的位置可能会发生变化&#xff0c;给用户带来不便。钥匙串访问&#xff08;Keychain Access&#xff09;是macOS中一个非常重要的工具&#xff0c;用于管理密码、证书等敏感信息。最近…...

Mac 「brew」快速安装MySQL

安装MySQL 在 macOS 上安装 MySQL 环境可以通过Homebrew快速实现&#xff0c;以下是步骤指南&#xff1a; 方法 1&#xff1a;使用 Homebrew 安装 MySQL 1. 安装 Homebrew 如果尚未安装 Homebrew&#xff0c;可以通过以下命令安装&#xff1a; /bin/bash -c "$(curl -…...

代码随想录算法训练营第五十八天 | 1.拓扑排序精讲 2.dijkstra(朴素版)精讲 卡码网117.网站构建 卡码网47.参加科学大会

1.拓扑排序精讲 题目链接&#xff1a;117. 软件构建 文章讲解&#xff1a;代码随想录 思路&#xff1a; 把有向无环图进行线性排序的算法都可以叫做拓扑排序。 实现拓扑排序的算法有两种&#xff1a;卡恩算法&#xff08;BFS&#xff09;和DFS&#xff0c;以下BFS的实现思…...

Flutter Dart中的函数参数 默函数的定义 可选参数 箭头函数 匿名函认参数 命名参类数 闭包等

//使用forEach 打印下面的List里面的数据List list ["西瓜", "苹果", "香蕉"];list.forEach((value) {print(value);});//箭头函数1list.forEach((value) > print(value)); //只能一句//箭头函数2list.forEach((value) >{print(value), /…...

京东平台关键字搜索接口开发指南:Python实现与代码详解

一、接口概述 京东关键字搜索接口允许开发者通过HTTP请求获取平台商品的关键字搜索结果&#xff0c;常用于商品比价、数据分析等场景。本文基于Python演示如何调用京东搜索接口&#xff0c;解析返回数据并实现基础功能。 二、技术实现步骤 接口地址分析‌ 京东未完全公开API…...

告别进度失控:用燃尽图补上甘特图的监控盲区

在职场中&#xff0c;项目经理最头疼的莫过于“计划赶不上变化”。明明用甘特图排好了时间表&#xff0c;任务却总像脱缰野马——要么进度滞后&#xff0c;要么资源分配失衡。甘特图虽能直观展示任务时间轴&#xff0c;但面对突发风险或团队效率波动时&#xff0c;它更像一张“…...

PHP框架在微服务迁移中能发挥什么作用?

微服务架构因其模块化、高可用性和弹性扩展能力&#xff0c;已成为现代分布式系统的核心设计模式。PHP作为一门长期服务于Web开发的脚本语言&#xff0c;其生态中的主流框架&#xff08;如Laravel、Symfony&#xff09;通过模块化设计、高效通信机制和丰富的工具链&#xff0c;…...

Linux驱动开发快速上手指南:从理论到实战

Linux驱动开发快速上手指南&#xff1a;从理论到实战 作为嵌入式Linux开发的核心技能之一&#xff0c;驱动开发对于硬件控制至关重要。面对众多章节和概念&#xff0c;初学者常感到无从下手。本文将为你梳理Linux驱动开发的关键路径&#xff0c;提供从理论到实战的完整指导&am…...

第1讲|R语言绘图体系总览(Base、ggplot2、ComplexHeatmap等)

目录 第1讲|R语言绘图体系总览 ✨ 引言:为什么R绘图如此重要? 🧩 1. Base绘图系统 🧩 2. ggplot2生态系统 🧩 3. ComplexHeatmap超级热图系统 🧩 4. 其他特色绘图库(快速了解) ✏️ 小结一句话 📅 预告下一讲 第1讲|R语言绘图体系总览 (Base、ggplot…...

Android FFmpeg 交叉编译全指南:NDK编译 + CMake 集成

开发环境搭建 下载最新版Android Studio&#xff0c;安装SDK和模拟器 在Android Studio中配置&#xff1a;Setting → Android SDK → SDK Tools → 勾选CMake 和 NDK → Apply&#xff0c;按照提示下载安装 SDK是Android应用开发的基础工具包&#xff0c;适合大多数上层逻辑…...

Spring AI 快速入门:从环境搭建到核心组件集成

Spring AI 快速入门&#xff1a;从环境搭建到核心组件集成 一、前言&#xff1a;Java开发者的AI开发捷径 对于Java生态的开发者来说&#xff0c;将人工智能技术融入企业级应用往往面临技术栈割裂、依赖管理复杂、多模型适配困难等挑战。Spring AI的出现彻底改变了这一局面——…...

研发内控新规下的合规之道:维拉工时助力企业穿越IPO审查雷区

&#x1f4cc; 背景 | 全面注册制下&#xff0c;研发内控成“必修课” 在全面注册制背景下&#xff0c;证监会发布的《监管规则适用指引——发行类第9号&#xff1a;研发人员及研发投入》&#xff08;简称“发行类9号”&#xff09;&#xff0c;对企业的研发费用归集、研发工时…...