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_())
目录
相关文章
|
2月前
|
存储 人工智能 大数据
TDengine 用户大会精彩回顾:AI+数据驱动汽车、能源、烟草、电力应用的未来
TDengine用户大会在京成功举办,聚焦“时序数据助你决胜AI时代”。涛思数据创始人陶建辉携手中科院院士王怀民等业界领袖,探讨时序数据最新进展及AI技术应用。会上发布了《时序大数据平台-TDengine核心原理与实战》一书,为企业与开发者提供宝贵指南。自2019年开源以来,TDengine已拥有57万用户实例,Star数达23.1k。王怀民赞赏TDengine全面创新,立足全球市场。大会还涉及数据库智能化运维、能源行业数字化转型等议题,并设有三大专场,深入讨论海量数据应用、智能制造新能源及新型电力系统,展示了TDengine在各领域的应用潜力与技术革新。
64 0
TDengine 用户大会精彩回顾:AI+数据驱动汽车、能源、烟草、电力应用的未来
|
2月前
|
机器学习/深度学习 人工智能 算法
「AI工程师」算法研发与优化-工作指导
**工作指导书摘要:** 设计与优化算法,提升性能效率;负责模型训练及测试,确保准确稳定;跟踪业界最新技术并应用;提供内部技术支持,解决使用问题。要求扎实的数学和机器学习基础,熟悉深度学习框架,具备良好编程及数据分析能力,注重团队协作。遵循代码、文档和测试规范,持续学习创新,优化算法以支持业务发展。
72 0
「AI工程师」算法研发与优化-工作指导
|
2天前
|
人工智能 自动驾驶 云栖大会
何小鹏驾驶“全球首款AI汽车”亮相云栖大会 深化与阿里云AI算力合作
小鹏汽车加速端到端自动驾驶落地 深化与阿里云AI算力合作
|
16天前
|
人工智能 搜索推荐 UED
Bot 商店 + 一键优化提示词 Prompt,开启AI新体验!| Botnow上新
Botnow 迎来了重大更新,新增了 Bot 商店功能,并优化了 Bot 编排,提升了 AI 使用效率。用户可在 Bot 商店中轻松浏览和体验各类官方及用户发布的 Bots,并可一键发布或下架自己的 Bot。此外,还推出了一键优化 Prompt 功能,帮助用户生成清晰、精准的指令,提升对话质量。新老用户快来体验吧![链接]
41 4
|
19天前
|
人工智能 算法 测试技术
AI战略丨大模型重塑长安新汽车新场景
长安科技内部一边基于大模型进行技术研发,一边也在不断反思:大模型究竟还能带来什么?长安科技最初是希望将尽可能多的控制能力接入到大模型中,如今,其对大模型的能力有了新的理解。
|
30天前
|
人工智能 Java 测试技术
就AI 基础设施的演进与挑战问题之ZooKeeper的稳定性提升配置优化的问题如何解决
就AI 基础设施的演进与挑战问题之ZooKeeper的稳定性提升配置优化的问题如何解决
|
1月前
|
存储 边缘计算 人工智能
【边缘计算与AI】分析边缘计算在处理AI任务、优化响应速度和数据隐私保护方面的作用和潜力
边缘计算与AI的结合是当前技术发展的重要趋势,两者相互依存、相互促进,共同推动着数字化转型的深入发展。以下是对边缘计算与AI关系的详细分析
59 6
|
1月前
|
机器学习/深度学习 人工智能 负载均衡
【AI大模型】分布式训练:深入探索与实践优化
在人工智能的浩瀚宇宙中,AI大模型以其惊人的性能和广泛的应用前景,正引领着技术创新的浪潮。然而,随着模型参数的指数级增长,传统的单机训练方式已难以满足需求。分布式训练作为应对这一挑战的关键技术,正逐渐成为AI研发中的标配。
129 5
|
1月前
|
机器学习/深度学习 人工智能 算法
在 AI Native 环境中实现自动超参数优化的微调方法
【8月更文第1天】随着人工智能技术的不断发展,深度学习模型的训练变得越来越复杂。为了达到最佳性能,需要对模型进行微调,特别是对超参数的选择。本文将探讨如何在 AI Native 环境下使用自动化工具和技术来优化模型的微调过程。
54 5
|
2月前
|
存储 人工智能 物联网
端侧设备AI代理优化框架问世,领域内准确率可达97%
【7月更文挑战第30天】新框架Octo-planner提升端侧AI代理效率与准确性至97%。此框架由Nexa AI等机构合作研发,采用"Planner-Action"模式,将AI代理任务划分为规划与执行两部分,利用"Octopus"及"Phi-3 Mini"模型分别处理。通过fine-tuning技术及GPT-4辅助,实现在资源受限设备上的高性能。更多细节见论文: https://arxiv.org/pdf/2406.18082
36 1