
mindspore掌中寶是依靠功能強大的ai計算框架,不僅在學術上有著巨大的作用,也能滿足工業方面的性能需求,支持照片檢測、代碼分享、場景識別等諸多功能,對于開發者而言此軟件也極為實用,極大提升了編程的效率,讓用戶可在短時間內完成調試及部署等操作。
軟件功能
1、識別垃圾類別,通過垃圾分類功能可以利用相機檢測識別垃圾的類別;
2、檢測場景范圍狀況,使用場景檢測功能掃描識別當前的場景并獲取參數信息;
3、照片經檢測識別,點擊照片檢測即可馬上打開照片并查看其中的各種檢測元素;
4、給該軟件點贊,能在我的主頁選擇點贊功能并根據自己的使用體驗給軟件點贊;
5、將軟件分享給自己的好友,選擇并點擊一鍵分享功能即可將軟件分享;
6、查詢代碼資源,進入到官方代碼倉中就能從中查找需要的代碼內容資源;
軟件特色
極致性能
高效的內核算法和匯編級優化,支持CPU、GPU、NPU異構調度,最大化發揮硬件算力,最小化推理時延和功耗。
輕量化
提供超輕量的解決方案,支持模型量化壓縮,模型更小跑得更快,使能AI模型極限環境下的部署執行。
全場景支持
支持iOS、Android等手機操作系統以及LiteOS嵌入式操作系統,支持手機、大屏、平板、IoT等各種智能設備上的AI應用。
高效部署
支持MindSpore/TensorFlow Lite/Caffe/Onnx模型,提供模型壓縮、數據處理等能力,統一訓練和推理IR,方便用戶快速部署。
快速入門
通過一個實際樣例實現手寫數字的識別,帶領大家體驗MindSpore基礎的功能,一般來說,完成整個樣例實踐會持續20~30分鐘。
情感分析
構建一個自然語言處理的模型,通過文本分析和推理實現情感分析,完成對文本的情感分類。
圖像分類
結合CIFAR-10數據集,講解MindSpore如何處理圖像分類任務。
識別貓狗APP
在PC上對預訓練模型進行重訓,在手機終端完成推理和部署,1小時內體驗MindSpore端邊云全場景開發流程。
適用場景
圖像分類
您可以使用預制圖像分類模型,識別攝像頭輸入幀中的物體。
目標檢測
您可以使用預置目標檢測模型,檢測標識攝像頭輸入幀中的對象并添加標簽,并用邊框標識出來。
圖像分割
圖像分割可用于檢測目標在圖片中的位置或者圖片中某一像素是輸入何種對象的。
加載圖像數據集
準備
導入模塊
該模塊提供API以加載和處理數據集。
import mindspore.dataset as ds
下載所需數據集
運行以下命令來下載MNIST數據集的訓練圖像和標簽并解壓,存放在./datasets/MNIST_Data路徑中,目錄結構如下:
!unzip -o MNIST_Data.zip -d ./datasets
!tree ./datasets/MNIST_Data/
./datasets/MNIST_Data/
├── test
│ ├── t10k-images-idx3-ubyte
│ └── t10k-labels-idx1-ubyte
└── train
├── train-images-idx3-ubyte
└── train-labels-idx1-ubyte
2 directories, 4 files
加載數據集
MindSpore目前支持加載圖像領域常用的經典數據集和多種數據存儲格式下的數據集,用戶也可以通過構建自定義數據集類實現自定義方式的數據加載。
下面演示使用mindspore.dataset模塊中的MnistDataset類加載MNIST訓練數據集。
1.配置數據集目錄,創建MNIST數據集對象。
DATA_DIR = './datasets/MNIST_Data/train'
mnist_dataset = ds.MnistDataset(DATA_DIR, num_samples=6, shuffle=False)
2.創建字典迭代器,通過迭代器獲取一條數據,并將數據進行可視化。
import matplotlib.pyplot as plt
mnist_it = mnist_dataset.create_dict_iterator()
data = next(mnist_it)
plt.imshow(data['image'].asnumpy().squeeze(), cmap=plt.cm.gray)
plt.title(data['label'].asnumpy(), fontsize=20)
plt.show()
../_images/use_load_dataset_image_16_0.png
此外,用戶還可以在數據集加載時傳入sampler參數用來指定數據采樣方式。MindSpore目前支持的數據采樣器及其詳細使用方法,可參考編程指南中采樣器章節。
數據處理
下面演示構建pipeline,對MNIST數據集進行shuffle、batch、repeat等操作。
操作前的數據如下:
for data in mnist_dataset.create_dict_iterator():
print(data['label'])
5
0
4
1
9
2
1.對數據進行混洗。
ds.config.set_seed(58)
ds1 = mnist_dataset.shuffle(buffer_size=6)
print('after shuffle: ')
for data in ds1.create_dict_iterator():
print(data['label'])
after shuffle:
4
2
1
0
5
9
2.對數據進行分批。
ds2 = ds1.batch(batch_size=2)
print('after batch: ')
for data in ds2.create_dict_iterator():
print(data['label'])
after batch:
[4 2]
[1 0]
[5 9]
3.對pipeline操作進行重復。
ds3 = ds2.repeat(count=2)
print('after repeat: ')
for data in ds3.create_dict_iterator():
print(data['label'])
after repeat:
[4 2]
[1 0]
[5 9]
[2 4]
[0 9]
[1 5]
可以看到,數據集被擴充成兩份,且第二份數據的順序與第一份不同。
說明:
因為repeat將對整個數據處理pipeline中已經定義的操作進行重復,而不是單純將此刻的數據進行復制,故第二份數據執行shuffle后與第一份數據順序不同。
數據增強
下面演示使用c_transforms模塊對MNIST數據集進行數據增強。
1.導入相關模塊,重新加載數據集。
from mindspore.dataset.vision import Inter
import mindspore.dataset.vision.c_transforms as transforms
mnist_dataset = ds.MnistDataset(DATA_DIR, num_samples=6, shuffle=False)
2.定義數據增強算子,對數據集執行Resize和RandomCrop操作。
resize_op = transforms.Resize(size=(200,200), interpolation=Inter.LINEAR)
crop_op = transforms.RandomCrop(150)
transforms_list = [resize_op, crop_op]
ds4 = mnist_dataset.map(operations=transforms_list,input_columns='image')
3.查看數據增強效果。
mnist_it = ds4.create_dict_iterator()
data = next(mnist_it)
plt.imshow(data['image'].asnumpy().squeeze(), cmap=plt.cm.gray)
plt.title(data['label'].asnumpy(), fontsize=20)
plt.show()
加載文本數據集
準備
1.準備文本數據如下。
Welcome to Beijing!
北京歡迎您!
我喜歡English!
2.創建tokenizer.txt文件并復制文本數據到該文件中,將該文件存放在./test路徑中,目錄結構如下。
└─test
└─tokenizer.txt
3.導入mindspore.dataset和mindspore.dataset.text模塊。
import mindspore.dataset as ds
import mindspore.dataset.text as text
加載數據集
MindSpore目前支持加載文本領域常用的經典數據集和多種數據存儲格式下的數據集,用戶也可以通過構建自定義數據集類實現自定義方式的數據加載。
下面演示使用mindspore.dataset中的TextFileDataset類加載數據集。
1.配置數據集目錄,創建數據集對象。
DATA_FILE = "./test/tokenizer.txt"
dataset = ds.TextFileDataset(DATA_FILE, shuffle=False)
2.創建迭代器,通過迭代器獲取數據。
for data in dataset.create_dict_iterator(output_numpy=True):
print(text.to_str(data['text']))
獲取到分詞前的數據:
Welcome to Beijing!
北京歡迎您!
我喜歡English!
數據處理
MindSpore目前支持的數據處理算子及其詳細使用方法,可參考編程指南中數據處理章節。
下面演示構建pipeline,對文本數據集進行混洗和文本替換操作。
1.對數據集進行混洗。
ds.config.set_seed(58)
dataset = dataset.shuffle(buffer_size=3)
for data in dataset.create_dict_iterator(output_numpy=True):
print(text.to_str(data['text']))
輸出結果如下:
我喜歡English!
Welcome to Beijing!
北京歡迎您!
2.對數據集進行文本替換。
replace_op1 = text.RegexReplace("Beijing", "Shanghai")
replace_op2 = text.RegexReplace("北京", "上海")
dataset = dataset.map(operations=[replace_op1, replace_op2])
for data in dataset.create_dict_iterator(output_numpy=True):
print(text.to_str(data['text']))
輸出結果如下:
我喜歡English!
Welcome to Shanghai!
上海歡迎您!
數據分詞
MindSpore目前支持的數據分詞算子及其詳細使用方法,可參考編程指南中分詞器章節。
下面演示使用WhitespaceTokenizer分詞器來分詞,該分詞是按照空格來進行分詞。
1.創建tokenizer。
tokenizer = text.WhitespaceTokenizer()
2.執行操作tokenizer。
dataset = dataset.map(operations=tokenizer)
3.創建迭代器,通過迭代器獲取數據。
for data in dataset.create_dict_iterator(output_numpy=True):
print(text.to_str(data['text']).tolist())
獲取到分詞后的數據:
['我喜歡English!']
['Welcome', 'to', 'Shanghai!']
['上海歡迎您!']
特別說明
軟件信息
- 包名:com.mindspore.himindspore
- MD5:8EF306168B5F6588A082C9E8612B1209