AI训练营第五天——汽车定损优化与完善

简介: 基于第四天作业的完善,第四天:https://developer.aliyun.com/article/777501

前言
本来想做内容安全方面的识别,但是由于python sdk的不完善加上本人技术有限,便在汽车定损的工作上加以完善,尽可能开发出可以应用的程序。


汽车定损
昨天做了一个简单的ui,本次任务需要在交互方面进行完善,包括选择文件,根据图片透明度显示损伤位置等。

思路
增加可视化,背景显示透明化的车,用返回的box值确定损伤位置,明确损伤程度
image.png
由于时间问题,无法将这个项目做到最佳优化,但是对我来说也做到了一定的进步。

全部代码

# from PySide2.QtWidgets import QDialog, QLabel, QGroupBox, QTextEdit, QPushButton, QCheckBox
from PIL import Image
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from qtObj.widgetPickServer import *
from sofulan import req
import requests
import os

class GUI(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(600,400)
        self.setWindowTitle('车辆定损')
        self.mainlayout = QHBoxLayout()

        self.set_widgt()
        self.service = req()
        self.setLayout(self.mainlayout)
        self.show()
        self.filter = {1: '轻微刮擦', 2: '重度刮擦', 3: '轻度变形', 4: '中度变形', 5: '重度变形', 6: '未知损伤', 7: 'crack破损孔洞', 8: '翼子板保险杠缝隙', 9: '未知损伤', 10: '位置损伤'}

    def set_widgt(self):
        self.textarea = QTextEdit(self)
        self.textarea.setText('请选择文件')
        self.textarea.resize(200,100)

        self.commitbutton = QPushButton(self)
        self.commitbutton.setText("确定")
        self.commitbutton.clicked.connect(self.get_req)

        self.mainlayout.addWidget(self.textarea)
        self.mainlayout.addWidget(self.commitbutton)

    @staticmethod
    def cropImage(name, boxs,):
        box = tuple(boxs)
        img = Image.open('resouce.jpg')
        cropped = img.crop(box)
        # x,y = cropped.size
        # crop = cropped.resize((int((x*100/y)), 100), Image.ANTIALIAS)
        cropped.save('res/'+name+'.jpg')



    def get_req(self):

        url = 'https://current-cloud-oss.oss-cn-shanghai.aliyuncs.com/car/car.jpg'
        with open('resouce.jpg','wb') as f:
            res = requests.get(url)
            f.write(res.content)
        text = self.service.ApiFindDamage(url)
        # 创建水平布局
        widget = QWidget()
        new_widget_layout = QVBoxLayout()
        # widget.setLayout()
        # 取值
        text = json.loads(text)
        data = text['Data']
        elements = data['Elements']
        self.boxes = []
        self.fl = []

        for i in elements:
            crack_type = i['Type']
            score = i['Scores']
            box = i['Boxes']
            self.boxes.append(box)
            print(box)
            print(self.filter[int(crack_type)],end='\t')
            # print(score)
            for j in range(len(score)):
                if score[j] > 0:
                    label = QLabel(self)
                    print('损伤可能性:{}'.format(score[int(j)]))
                    self.cropImage(self.filter[int(crack_type)]+str(score[int(j)]), box)
                    # 添加子控件图片
                    # 图片处理

                    pix = QPixmap('res/'+self.filter[int(crack_type)]+str(score[int(j)])+'.jpg')
                    self.fl.append('res/'+self.filter[int(crack_type)]+str(score[int(j)])+'.jpg')
                    label.setPixmap(pix)

                    # label.setText(self.filter[int(crack_type)]+"  可能性"+str(score[int(j)]))
                    # ls.append(self.label)
                    new_widget_layout.addWidget(label)
        widget.setLayout(new_widget_layout)
        #self.mainlayout.addWidget(widget)
        showp = showpic(self.boxes, self.fl, self)
        self.mainlayout.addWidget(showp)

class showpic(QDialog):
    def __init__(self, box, fl, parent):
        super().__init__(parent=parent)
        self.box = box
        self.fl = fl
        self.setimg()
        # self.show()

    def setimg(self):
        self.proccess()
        pix = QPixmap('car_after.png')
        label0 = QLabel(self)
        label0.setPixmap(pix)
        self.setGeometry(0, 0, pix.width(), pix.height())
        label0.show()
        for i in range(len(self.box)):
            label = QLabel(self)
            # label1 = QLabel(self)
            # label1.setText(self.fl[i].replace(".jpg",''))
            # label.setGeometry(int((self.box[i][0]+self.box[i][2])/2), int((self.box[i][1])+self.box[i][3]/2),50,50)
            ps = QPixmap(self.fl[i])
            label.setPixmap(ps)
            label.setGeometry(self.box[i][0], self.box[i][1], self.box[i][2], self.box[i][3],)
            #                   left             upper            width          height

    def proccess(self):
        # if not os.path.isfile('car_after.png'):
            img = Image.open("car.jpg")
            img = img.convert('RGBA')  # 修改颜色通道为RGBA
            x, y = img.size  # 获得长和宽

            # 设置每个像素点颜色的透明度
            for i in range(x):
                for k in range(y):
                    color = img.getpixel((i, k))
                    color = color[:-1] + (100,)
                    img.putpixel((i, k), color)

            img.save("car_after.png")  # 要保存为.PNG格式的图片才可以


if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    gui = GUI()
    sys.exit(app.exec_())
目录
相关文章
|
4月前
|
人工智能 安全 架构师
不只是聊天:从提示词工程看AI助手的优化策略
不只是聊天:从提示词工程看AI助手的优化策略
371 119
|
4月前
|
人工智能 自然语言处理 物联网
GEO优化方法有哪些?2025企业抢占AI流量必看指南
AI的不断重塑传统的信息入口之际,用户的搜索行为也从单一的百度、抖音的简单的查找答案的模式,逐渐转向了对DeepSeek、豆包、文心一言等一系列的AI对话平台的更加深入的探索和体验。DeepSeek的不断迭代优化同时,目前其月活跃的用户已破1.6亿,全网的AI用户规模也已超过6亿,这无疑为其下一阶段的迅猛发展提供了坚实的基础和广泛的市场空间。
|
4月前
|
人工智能 缓存 并行计算
用数学重构 AI的设想:流形注意力 + 自然梯度优化的最小可行落地
本文提出两个数学驱动的AI模块:流形感知注意力(D-Attention)与自然梯度优化器(NGD-Opt)。前者基于热核偏置,在局部邻域引入流形结构,降低计算开销;后者在黎曼流形上进行二阶优化,仅对线性层低频更新前置条件。二者均提供可复现代码与验证路径,兼顾性能与工程可行性,助力几何感知的模型设计与训练。
356 1
|
4月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
5月前
|
机器学习/深度学习 人工智能 运维
运维不只是“修电脑”:聊聊运维如何助力 AI 优化服务质量
运维不只是“修电脑”:聊聊运维如何助力 AI 优化服务质量
397 9
|
5月前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
1921 134
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
5月前
|
传感器 人工智能 边缘计算
智能就在身边:AI如何优化边缘计算
智能就在身边:AI如何优化边缘计算
338 2
|
6月前
|
人工智能 IDE 开发工具
通义灵码 AI IDE使用体验(3)项目优化及bug修复
本文介绍了使用通义灵码 AI IDE进行项目重构与优化的全过程,涵盖页面调整、UI更新、功能修复等内容,并展示了多次优化后的成果与仍存在的问题。
507 0
|
人工智能 搜索推荐 JavaScript
【Geo专家于磊】深度解析:Geo优化中的Schema标签,如何让你的内容在AI时代脱颖而出?
微笑老师详解Geo优化中Schema标签的写法,揭示如何通过结构化数据提升AI时代下的内容可见性。从选择类型、填写关键属性到JSON-LD格式应用与测试验证,全面掌握Geo优化核心技巧,助力本地商家在搜索结果中脱颖而出。(238字)
434 0