Example #1
0
    def getAllDetectModels(self):
        detectModels = detectModelBean.objects(
            state=ConstantUtils.DATA_STATUS_ACTIVE,
            userId=session['userId']).only("dmId", "dmName")

        return resultPackerUtils.packDataListResults(detectModels.to_json(),
                                                     "dmId")
    def detectModelVersionTrain(self, jsonData):

        projectName = randomUtils.getRandomStr()
        projectDir, ckptModel, entireModel = fileUtils.getModelSavePath(
            ConstantUtils.modelBasePath, projectName)
        jsonData['projectDir'] = projectDir
        jsonData['ckptModelSavePath'] = ckptModel
        jsonData['entireModelSavePath'] = entireModel

        # 1.保存训练版本bean
        modelTrainVersion = detectModelTrainVersion.convertToBean(jsonData)
        modelTrainVersion.save()

        # 2.更新该模型最新版本
        detectModelItem = detectModelBean.objects(
            dmId=jsonData['dmid'], state=ConstantUtils.DATA_STATUS_ACTIVE)
        detectModelItem.update(latestVersionId=modelTrainVersion.dmtvid)

        # 区分部署平台
        if jsonData[
                "inferencePlatform"] == ConstantUtils.MODEL_PLATFORM_SERVER:
            self.train_server_yolo_model(projectName, jsonData,
                                         modelTrainVersion)
        elif jsonData[
                "inferencePlatform"] == ConstantUtils.MODEL_PLATFORM_LITE:
            self.trainMobile_nanodet_model(jsonData)

        return resultPackerUtils.save_success()
Example #3
0
    def updateDetectModel(self, data):

        detecModeltIns = detectModelBean.objects(dmId=data['dmId'])

        print(data['updateClolumn'])
        detecModeltIns.update(**data['updateClolumn'])

        return resultPackerUtils.update_success()
Example #4
0
    def updateDetectService(self, jsonData):

        detectServiceIns = detectServiceBean.objects(
            dtsid=jsonData['dtsid'], state=ConstantUtils.DATA_STATUS_ACTIVE)
        updateMap = jsonData['updateClolumn']

        updateMap["dmBean"] = detectModelBean.objects(
            dmId=jsonData["updateClolumn"]['dmId'],
            state=ConstantUtils.DATA_STATUS_ACTIVE)[0]

        updateMap['dmtvBean'] = detectModelTrainVersion.objects(
            dmtvid=jsonData["updateClolumn"]["dmtvId"],
            state=ConstantUtils.DATA_STATUS_ACTIVE)[0]

        detectServiceIns.update(**jsonData['updateClolumn'])

        #加载或关闭模型
        self.changeDtsSwitch(jsonData)

        return resultPackerUtils.update_success()
Example #5
0
    def addDetectService(self, jsonData):
        dtsServiceKey = randomUtils.getRandomStr()
        serviceSecret = randomUtils.getRandomStr()
        jsonData["dtsServiceKey"] = dtsServiceKey
        jsonData["dtsSecret"] = serviceSecret
        jsonData["dmBean"] = detectModelBean.objects(
            dmId=jsonData["dmId"], state=ConstantUtils.DATA_STATUS_ACTIVE)[0]

        jsonData['dmtvBean'] = detectModelTrainVersion.objects(
            dmtvid=jsonData["dmtvId"],
            state=ConstantUtils.DATA_STATUS_ACTIVE)[0]

        detectService = detectServiceBean.convertToBean(jsonData, session)

        detectService.save()

        #开启服务
        if jsonData['dtsSwitch'] == ConstantUtils.SERVICE_SWITCH_ON:
            yoloDetectServiceImpl.launchYoloDetectService(
                sessionId=dtsServiceKey, dmtvid=jsonData["dmtvId"])

        return resultPackerUtils.save_success()
Example #6
0
    def getDetectModelsPages(self, pageItem, dmName):

        selfQuery = {}
        if dmName != None:
            selfQuery['dmName'] = {'$regex': dmName}

        totalCount = detectModelBean.objects(
            __raw__=selfQuery,
            state=ConstantUtils.DATA_STATUS_ACTIVE,
            userId=session['userId']).count()

        modelList = detectModelBean.objects(__raw__=selfQuery, state=ConstantUtils.DATA_STATUS_ACTIVE,
                                            userId=session['userId']) \
            .order_by('-create_date').exclude("create_date","state").skip(pageItem.skipIndex).limit(pageItem.pageSize)

        modelJsonList = json.loads(modelList.to_json().replace("_id", "dmId"))

        # 查询模型的最新版本
        modelVersonIdList = []
        for item in modelList:
            if item['latestVersionId'] is not None:
                modelVersonIdList.append(item['latestVersionId'])

        if len(modelVersonIdList) > 0:
            trainVersionList = detectModelTrainVersion.objects(
                dmtvid__in=modelVersonIdList,
                state=ConstantUtils.DATA_STATUS_ACTIVE).exclude(
                    "create_date", "state")

            modelVersionJsonList = json.loads(
                trainVersionList.to_json().replace("_id", "dmtvid"))

            #找出所有的数据集id
            allDataSetId = []
            for versionItem in modelVersionJsonList:
                for item in versionItem['ds_dl_list']:
                    if not allDataSetId.__contains__(item['dsId']):
                        allDataSetId.append(item['dsId'])

            datasetIdNames = datasetsBean.objects(
                dsId__in=allDataSetId,
                state=ConstantUtils.DATA_STATUS_ACTIVE).only("dsId", "dsName")
            datasetMap = {}
            for item in datasetIdNames:
                datasetMap[item['dsId']] = item['dsName']

            for modelItem in modelJsonList:
                if modelItem.keys().__contains__('cvTaskType'):
                    modelItem[
                        'cvTaskTypeName'] = ConstantUtils.getCVTaskTypaName(
                            modelItem['cvTaskType'])
                for versionItem in modelVersionJsonList:
                    if modelItem.keys().__contains__("latestVersionId"):
                        if modelItem['latestVersionId'] == versionItem[
                                'dmtvid']:
                            versionItem[
                                'trainState'] = ConstantUtils.getModelVersionTrainState(
                                    versionItem['trainState'])
                            versionItem[
                                'inferencePlatformValue'] = ConstantUtils.getModelPlatform(
                                    versionItem['inferencePlatform'])
                            versionItem[
                                'dmPrecisionValue'] = ConstantUtils.getModelPrisision(
                                    versionItem['dmPrecision'])
                            datasetNames = []
                            for item in versionItem['ds_dl_list']:
                                if datasetMap.keys().__contains__(
                                        "item['dsId']"):
                                    datasetNames.append(
                                        datasetMap[item['dsId']])
                            versionItem['datasetNames'] = datasetNames
                            modelItem["latestVersionItem"] = [versionItem]
                            break

        pageItem.set_totalCount(totalCount)

        pageItem.set_numpy_dataList(modelJsonList)

        return resultPackerUtils.packPageResult(pageItem)
Example #7
0
 def delDetectModelDetail(self, dmId):
     detectModelItem = detectModelBean.objects(dmId=dmId)
     detectModelItem.update(state=ConstantUtils.DATA_STATUS_DELETED)
     return resultPackerUtils.update_success()
Example #8
0
 def getDetectModelDetail(self, dmId):
     detectModel = detectModelBean.objects(dmId=dmId, state=1).exclude(
         "state", "userId").first()
     detectModel.cvTaskTypeName = ConstantUtils.getCVTaskTypaName(
         detectModel['cvTaskType'])
     return resultPackerUtils.packDataListResults(detectModel.to_json())