[FrameWork]Flutter

[Flutter]플러터에서 파이토치 사용해서 이미지 분류하기_2(pytorch_mobile)

sungwoo 2022. 12. 6. 05:59
반응형

개요

  • 저번 글에 이어서 image_picker를 통해 데이터 불러오고 dart:io를 통해서 File 객채에 올려서 이미지 분류까지 마무리 하겠습니다.
  • image_picker 설치
flutter pub add image_picker
  • 필요 라이브러리 임포트
import 'dart:io'; //FIle 관리용
import 'package:image_picker/image_picker.dart'; //갤러리 접근용

 

필요 객체 선언

  • 모델 객채 선언한곳 아래에 picker와 받아온 이미지를 저장할 file 추론값을 저장랑 pred를 선언해준다
  final ImagePicker _picker = ImagePicker();
  File? file;
  String? _pred;

갤러리에서 이미지 불러오기

  • 이미지를 불러올 함수 선언
Future loadImage() async{
  final image = await _picker.pickImage(source: ImageSource.gallery);
  setState(() {
    file = File(image!.path);
    predict();
  });

이미지 추론(분류) 함수 정의

  • 앞서 정의한 모델을 통해서 이미지 분류
Future predict() async {
  String prediction = await model.getImagePrediction(file!, 224, 224, "assets/labels.csv");
  setState(() {
    _pred = prediction;
  });

}

추론(분류)한 이미지를 표시할 레이아웃 정의

  • 앞서 제작한 레이아웃을 일부 수정하여 표시
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Container(
            height: 500,
            child: file==null ? const Center(child: Text('no Image')) : Image.file(file!,fit: BoxFit.fitWidth,),
          ),
          SizedBox(child: TextButton(onPressed: (){
            loadImage();

          }, child: const Text('pick image for predict') // 여기다가 추론 결과 넣어줄꺼임
              ),
          ),
      _pred==null?const Text(''):Text(_pred!)
        ],
      ),
    );
  }
}

 

결과
Flutter에서 Tflite를 사용해서 AI를 사용하는 케이스를 많이 봤는데 다소 복잡해 보였고
pytorch를 더 많이 써봤기에 torch를 통해서 이미지 분류하는 앱을 만들어보고자 했다
질문해주시면 확인하는대로 답변 드리겠음. 

 

반응형