浅红色羽绒服

一早坐公交车去地铁站,遇到一个小女孩,大概一米三左右的身高,穿着浅红色的外套羽绒服。

身边有两个大人,大概是她的爸爸妈妈,她自己拿着背包,在爬楼梯的时候,她爸爸觉得她有些慢,就说我帮你背包吧,她婉拒了说自己的事情自己做自己的包自己背了。她爸爸就没再说话,而是陪着她慢慢爬楼梯。

到了地铁站台,上车的时候,只有一个座位,他爸爸让她做,她婉拒了说爸爸你昨天夜班没休息好你坐我不累。他爸爸坚持让她坐,她撒娇着让她爸爸坐下了,她自己站着。

这样由于模型是一个2B小模型。所以有时候不能完全按照指定要求生成,是不是可以考虑加一个人工修正的后处理来解决这样的问题,比如有时候下半身会出现条纹裤这种未出现的类别,但是图片确实是条纹裤,但是这样我的分类模型没办法确定下来: import os # 设置环境变量避免内存碎片 os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True" os.environ["CUDA_VISIBLE_DEVICES"] = "7" import json import re from modelscope import Qwen3VLForConditionalGeneration, AutoProcessor # 加载模型和处理器(只需一次) model = Qwen3VLForConditionalGeneration.from_pretrained( "./Qwen", dtype="auto", device_map="auto" ) processor = AutoProcessor.from_pretrained("./Qwen") # 定义提示词 text_prompt = """请严格按以下要求分析图像: 1. 识别图中所有行人(直立行走的人类个体) 2. 为每个行人分析以下属性(属性值必须严格使用指定选项): - 性别:男/女/未知 - 年龄段:婴儿(0-2)/儿童(3-12)/青少年(13-17)/成年(18-60)/老年(60+)/未知 - 相对身高:很高(>180cm)/高(170-180cm)/中等(160-170cm)/矮(150-160cm)/很矮(<150cm)/未知 - 体型:很胖/较胖/中等/较瘦/很瘦/未知 - 上半身衣物:长袖衬衫/短袖T恤/无袖背心/毛衣/外套/羽绒服/西装/未知 - 是否背包:双肩包/单肩包/手提包/腰包/无/未知 - 下半身衣物:长裤/短裤/七分裤/长裙/短裙/连衣裙/未知 - 上衣颜色:黑/白/灰/红/蓝/绿/黄/紫/橙/棕/粉/多色/未知 - 下衣颜色:黑/白/灰/红/蓝/绿/黄/紫/橙/棕/粉/多色/未知 - 鞋类:运动鞋/皮鞋/靴子/凉鞋/拖鞋/高跟鞋/帆布鞋/未知 - 头部状态:戴帽子/戴头巾/带头盔/无覆盖物/未知 - 是否戴眼镜:有框眼镜/墨镜/无眼镜/未知 - 面部状态:戴口罩/未遮挡/部分遮挡/未知 - 发型:长发(过肩)/中发(及肩)/短发(耳上)/光头/未知 - 姿态:行走/站立/奔跑/蹲坐/未知 3. 输出要求: - 严格使用JSON格式 - 结构为对象数组(每个对象代表一个行人) - 属性名使用中文 - 无行人时返回空数组 - 禁止任何额外解释文字 示例输出格式: [ { "性别": "男", "年龄段": "成年", "相对身高": "中等", "体型": "中等", "上半身衣物": "短袖T恤", "是否背包": "无", "下半身衣物": "长裤", "上衣颜色": "白", "下衣颜色": "蓝", "鞋类": "运动鞋", "头部状态": "无覆盖物", "是否戴眼镜": "无眼镜", "面部状态": "未遮挡", "发型": "短发", "姿态": "行走" } ] """ # 配置路径 input_folder = "./query" # 输入图片文件夹 output_folder = "./results" # 输出JSON文件夹 # 支持的图片格式 SUPPORTED_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.webp'] # 创建输出文件夹 os.makedirs(output_folder, exist_ok=True) def process_image(image_path): """处理单张图片并返回解析结果""" try: messages = [{ "role": "user", "content": [ {"type": "image", "image": image_path}, {"type": "text", "text": text_prompt} ] }] # 准备模型输入 inputs = processor.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pt" ).to(model.device) # 生成输出 generated_ids = model.generate(**inputs, max_new_tokens=512) generated_ids_trimmed = [ out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids) ] output_text = processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False )[0] # 尝试提取JSON json_match = re.search(r'\[.*\]', output_text, re.DOTALL) if json_match: json_str = json_match.group() result = json.loads(json_str) return True, result else: return False, output_text except Exception as e: return False, f"处理错误: {str(e)}" # 遍历并处理所有图片 print(f"开始处理文件夹: {input_folder}") processed_count = 0 success_count = 0 for filename in os.listdir(input_folder): # 检查文件扩展名 if any(filename.lower().endswith(ext) for ext in SUPPORTED_EXTENSIONS): image_path = os.path.join(input_folder, filename) print(f"\n处理中: {filename}...") # 处理图片 success, result = process_image(image_path) # 准备输出路径 json_filename = os.path.splitext(filename)[0] + ".json" output_path = os.path.join(output_folder, json_filename) if success: # 保存JSON结果 with open(output_path, 'w', encoding='utf-8') as f: json.dump(result, f, ensure_ascii=False, indent=2) print(f"✅ 成功保存结果到: {output_path}") success_count += 1 else: # 保存错误信息 error_path = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}_error.txt") with open(error_path, 'w', encoding='utf-8') as f: f.write(f"处理失败:\n{result}") print(f"❌ 处理失败,错误信息保存到: {error_path}") processed_count += 1 print(f"\n处理完成! 总计处理: {processed_count} 张图片, 成功: {success_count} 张, 失败: {processed_count - success_count} 张")
12-03
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值