96SEO 2026-02-20 07:09 12
最近一个项目需要针对库存的车辆照片运用人工智能算法进行照片朝向分类和矫正算法在设计时需要满足轻量化需求适合在CPU环境中进行快速推理。

在具体实现时可以将照片分为4个类别ni_0、ni_90、ni_180、ni_270分别表示照片经过0度、90度、180度、270度逆向旋转。
综和考虑算法精度和速度要求本文拟采用YOLOv8算法来实现该任务。
版本的基础上引入了新的功能并做了相关改进提升了性能和灵活性。
具体创新包括一个新的骨干网络、一个新的
YOLOv8作者glenn-jocher项目链接https://github.com/ultralytics/ultralytics
进行了多次更新迭代模型性能越来越强大。
当前最新版本为YOLOv8。
结构并对不同尺度模型调整了不同的通道数这种精心微调方式大幅提升了模型性能。
不过这个C2f
Python模型更快更准确模型能完成常见的图像感知任务包括图像分类、目标检测、实例分割、关键点检测和视频跟踪与先前所有版本的
等骨干网络的通道数设置不一样没有遵循同一套缩放系数。
如此设计的原因应该是同一套缩放系数下的通道设置不是最优设计YOLOv7
YOLOv8算法位于开源框架库ultralytics中因此先要安装ultralytics。
ultralytics为了方便后续配置和使用可以将github上的ultralytics源码拉取到本地
https://github.com/ultralytics/ultralytics.gitmain3.2
假设库存照片位于名为“第一批原始照片”的文件夹中由于库存照片目录结构混乱图像格式不统一因此需要将所有图片提取到一个统一的文件夹中并且所有图片以jpg格式保存这样方便后续使用。
在同目录下创建文件夹car_data/1然后使用下面的脚本完成图片提取和转换。
None:Filelist.append(dir)else:if
dir[-3:]:Filelist.append(dir)elif
cv2.imdecode(np.fromfile(imgpath,
1except:print(异常)else:passprint(完成)上述脚本用来提取库存中的jpg照片如果库存中还存在png或bmp图片那么就修改代码
jpg)将其中的jpg修改为png或bmp同时修改对应的imgIndex起始标签值。
所有图片提取完以后都存放在car_data/1文件夹中以jpg格式存储。
库存总图片数达到89786张。
库存照片中可能存在相同照片多次存放的问题因此需要将完全相同的图像剔除掉减少冗余。
本文使用哈希比对算法来实现具体脚本代码如下
os.path.join(srcFolder,imgname)hash
imagehash.dhash(Image.open(imgpath),hash_sizehash_size)hashlst.append(hash)#
range(curIndex1,len(imgnames)):hash2
imgname)shutil.move(os.path.join(srcFolder,imgnames[curIndex]),
imgname_compare.jpg)shutil.copyfile(os.path.join(srcFolder,imgnames[compIndex]),
库存照片中存在大量无车辆的错误照片因此需要写一个脚本将无车辆照片剔除掉。
这里使用预先在coco数据集上训练好的yolov8算法来实现。
具体脚本代码如下
None:os.remove(imgpath)continue#
dstpath)print(完成)在delimgs文件夹中存放着剔除掉的图像由于算法存在一定的漏检率因此有些存在车辆的照片被错误的移动到这个delimgs文件夹中需要人工复核将这些照片“捞回去”。
库存照片数据量庞大本文只需要提取2万多张图片用来训练算法即可。
os.path.exists(dstFolder):os.makedirs(dstFolder)picIndex
提取好的图片位于car_data/2文件夹中总数25000张。
首先从预处理后的库存照片中精心挑选照片朝向正确的图像共计2万张整然后分别对这2万张图像进行旋转得到对应的逆90、逆180、逆270度角的三个类别图像这样就组成了可以用来分类的图像库photo_direction共计8万张图像分4个类别。
os.path.exists(ni90_folder):os.makedirs(ni90_folder)
os.path.exists(ni180_folder):os.makedirs(ni180_folder)
os.path.exists(ni270_folder):os.makedirs(ni270_folder)#
img.transpose(Image.ROTATE_90)save_path
img_name)img90.save(save_path)#
img.transpose(Image.ROTATE_180)save_path
img_name)img180.save(save_path)#
img.transpose(Image.ROTATE_270)save_path
img_name)img270.save(save_path)print(完成)其中ni0、ni90、ni180、ni270分别存储了逆时针0°、90°、180°、270°对应的图像。
最后从每个文件夹中随机抽取2000张图片作为测试集用来评估算法。
...上述结构就是ultralytics的图像分类所需要的目录结构整个数据集分为train和test两个文件夹其中每个种类的图片都放在一起每个种类的文件夹名称即为对应的类别名称。
找到ultralytics/cfg/models/v8中找到yolov8-cls.yaml文件拷贝一份到ultralytics/configs目录下面并重命名为yolov8-cls-photodirection.yaml修改该文件中的nc参数为4表示共有4个类别。
YOLO(./configs/yolov8m-cls-photodirection.yaml).load(yolov8m-cls.pt)#
model.train(data./dataset/car_data,
device0,1)启动训练后如果本地没有预训练模型yolov8-cls.pt则ultralytics框架会自动从github上进行下载。
需要注意的是创建的yaml名称为yolov8-cls-photodirection.yaml而在代码中调用的是yolov8s-cls-photodirection.yaml这是ultralytics框架提供的一个功能我们只需要配置一份yaml文件即可适配不同规模任务的分类模型包括
YOLOv8n-clsYOLOv8s-clsYOLOv8m-clsYOLOv8l-clsYOLOv8x-cls
本文共使用7万多张照片在2个GPU上进行训练测试集为2000张图片总耗时约17个小时。
在测试集上的最佳top1准确率为0.985。
YOLO(./runs/classify/train/weights/best.pt)#
results[0].probs.top1conf.cpu().numpy()
Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))img
img.transpose(Image.ROTATE_180)img
cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)save_path
./imgs/result.jpgcv2.imwrite(save_path,img)elif
Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))img
img.transpose(Image.ROTATE_90)img
cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)save_path
./imgs/result.jpgcv2.imwrite(save_path,img)elif
Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))img
img.transpose(Image.ROTATE_270)img
cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)save_path
./imgs/result.jpgcv2.imwrite(save_path,img)最终输出的是分类标签、置信度以及矫正过后的车辆照片。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback